12

Ho appena introdotto il termine "slicing del programma". Ha perfettamente senso che uno vorrebbe tale funzionalità, ma esiste ovunque?Quali programmi di slicing del programma esistono realmente?

Il termine è di 20 anni ora, e vedo che ci sono molte pubblicazioni, documenti di ricerca, ecc. Ma dove sono gli strumenti attuali? Le persone stanno effettivamente mettendo in pratica questo concetto, o lo stanno solo studiando accademicamente?

Cosa c'è là fuori, e per quali lingue?

Modifica: Credo che quello che sto cercando, quello che premerei come risposta accettata, è un riferimento ad alcune pubblicazioni/organizzazioni/ecc. Che è particolarmente orientato verso l'affinamento dei programmi e mantiene un elenco di strumenti/tecniche/eccetera.

risposta

8

[EDIT] (in reponse a OP domanda rivisto)

ho seguito letteratura per un periodo piuttosto lungo. Non penso ci sia un "programma che affetta" centrale che ha una lista del tipo che vuoi. La maggior parte delle affettatrici di programmi che sono state costruite sono state una sorta di esperimento universitario (significa che non hanno funzionato in produzione e non sono disponibili per scopi pratici). Puoi scoprirli cercando con scholar.google.com il termine, indovina cosa, "slicing del programma"; Sospetto che tu lo sappia già. I "biggies" penso che tu abbia già qui.

Questo sondaggio è un po 'vecchio ma svolto da un ricercatore stellare: http://www.cse.buffalo.edu/LRG/CSE605/Papers/slicing-survey-tip.pdf. Questo è più recente: http://dl.acm.org/citation.cfm?id=1050865.

CodeSurfer è uno strumento commerciale per l'esecuzione di affettamento statico su programmi C. Credo che gestiscano anche C++. Un vantaggio significativo non disponibile con altri strumenti è un'interfaccia utente per esplorare le sezioni di codice in modo interattivo.

Indus è uno strumento di ricerca universitario per eseguire il taglio di codice statico su Java. Non sono sicuro che sia ancora in fase di sviluppo attivo.

Sembra esserci una varietà di programmi "dinamici" che tagliano gli strumenti per Java costruiti dalle università. Nessuno di loro è in sviluppo o uso attivo che io conosca.

La mia azienda offre DMS Software Reengineering Toolkit, che contiene macchinari generali per il controllo del programma e l'analisi del flusso di dati, compresa la creazione di affettatrici di codice statiche personalizzate. Il DMS è stato utilizzato per creare sezioni di programmi C di grandi dimensioni e programmi di controllo dei processi industriali. (Fornirei un collegamento, ma SO le persone sembrano odiarlo quando lo faccio).

6

Il Frama-C platform, che è dedicato all'analisi del codice C, ha un'interpretazione a tutti gli effetti slicing plugin. Si veda ad esempio this page, dove un utente usa questo plugin per semplificare un programma che stava analizzando.

1

Dai un'occhiata a Wala per Java. WALA include un'affettatrice, basata sulla tabulazione sensibile al contesto della raggiungibilità nel grafico di dipendenza del sistema.

2

Si prega di dare un'occhiata a Giri.

L'affettatura dinamica del programma è una tecnica che può determinare con precisione quali istruzioni hanno interessato un particolare valore in una singola esecuzione di un programma. Giri implementa il dynamic backwards slicing nel compilatore LLVM.

Questo progetto è stato sviluppato da Swarup Kumar Sahoo, John Criswell e Dr. Vikram S.Adject da UIUC. È stato selezionato da Google Summer of Code (GSoC) 2013, nell'ambito del suo progetto ombrello LLVM. Mingliang Liu dell'università Tsinghua si è unito per migliorare Giri nel giugno 2013. È un progetto in corso e le richieste di attrazione sono molto apprezzate.

Problemi correlati