Program Slicing: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m Bot: numeri di pagina nei template citazione |
||
(2 versioni intermedie di 2 utenti non mostrate) | |||
Riga 2:
Nella [[Programmazione (informatica)|programmazione informatica]], '''il program slicing''' è il calcolo dell'insieme di istruzioni del programma, chiamato '''program slice''', che può influenzare i valori in un punto di interesse, denominato '''criterio di slicing''' . Lo slicing del programma può essere utilizzato nel [[Debugging|debug]] per individuare più facilmente la fonte degli errori. Altre applicazioni dello slicing includono [[Manutenzione (sviluppo software)|la manutenzione del software]], [[Ottimizzazione (informatica)|l'ottimizzazione]], l'analisi dei programmi e il controllo del flusso di informazioni .
Le tecniche di slicing hanno visto un rapido sviluppo sin dalla definizione originale di [[Mark Weiser]] . Inizialmente lo slicing era solo statico, cioè applicato al codice sorgente senza altre informazioni oltre al codice sorgente. [[Bogdan Korel]] e [[Janusz Laski]] hanno introdotto ''lo slicing dinamico'', che funziona su una specifica esecuzione del programma (per una data traccia di esecuzione).
== Slicing statico ==
Riga 14:
* slice (sum = sum + i + w, sum)
* slice (sum = sum + i +w, i)
* slice (sum = sum +i +w, w)
* {int sum=0}
Riga 43:
== Approccio allo slicing statico rapido in avanti ==
Un approccio di slicing molto veloce e scalabile, ma leggermente meno accurato, è estremamente utile per una serie di motivi. Gli sviluppatori disporranno di costi molto bassi e di mezzi pratici per stimare l'impatto di un cambiamento in pochi minuti invece che in giorni. Questo è molto importante per pianificare l'implementazione di nuove funzionalità e comprendere come un cambiamento è correlato ad altre parti del sistema. Fornirà inoltre un test poco costoso per determinare se è giustificata un'analisi completa e più costosa del sistema. Un approccio di slicing rapido aprirà nuove strade di ricerca nelle metriche e nell’estrazione di storie basate sullo slicing. Cioè, ora lo slicing può essere condotto su sistemi molto grandi e su intere cronologie di versioni in tempi molto pratici. Ciò apre la porta a una serie di esperimenti e indagini empiriche che in precedenza erano troppo costosi da intraprendere.
== Slicing dinamico ==
Riga 54:
==Bibliografia==
* [[Mark Weiser]]. "Program slicing". Proceedings of the 5th International Conference on Software Engineering, pages
* [[Mark Weiser]]. "Program slicing". IEEE Transactions on Software Engineering, Volume 10, Issue 4, pages
* [[Susan B. Horwitz|Susan Horwitz]], [[Thomas W. Reps|Thomas Reps]], and David Binkley, Interprocedural slicing using dependence graphs, ACM Transactions on Programming Languages and Systems, Volume 12, Issue 1, pages 26-60, January 1990.
* Frank Tip. "A survey of program slicing techniques". Journal of Programming Languages, Volume 3, Issue 3, pages 121–189, September 1995.
|