Program Slicing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Creata dalla traduzione della pagina "Program slicing"
 
FrescoBot (discussione | contributi)
m Bot: numeri di pagina nei template citazione
 
(5 versioni intermedie di 5 utenti non mostrate)
Riga 1:
{{O|informatica|luglio 2024}}
 
 
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). <ref>{{Cita pubblicazione|volume=29|doi=10.1016/0020-0190(88)90054-3}}</ref> Esistono altre forme di slicing, ad esempio il path slicing. <ref>{{Cita libro|nome=Ranjit|cognome=Jhala|nome2=Rupak|cognome2=Majumdar|titolo=Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation|data=2005|editore=ACM|pp=38–4738-47|ISBN=9781595930569|DOI=10.1145/1065010.1065016|serie=PLDI '05}}</ref>
 
== Slicing statico ==
Line 15 ⟶ 14:
* slice (sum = sum + i + w, sum)
* slice (sum = sum + i +w, i)
* slice (sum = sum +i +w, w) , and
* {int sum=0}
 
Line 44 ⟶ 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. <ref>{{Cita pubblicazione|volume=26|lingua=en|doi=10.1002/smr.1651|ISSN=2047-7473}}</ref>
 
== Slicing dinamico ==
Line 52 ⟶ 51:
 
== Note ==
 
* [[Manutenzione (sviluppo software)|Manutenzione del software]]
* Analisi della dipendenza
* Raggiungere la definizione
* [[Dipendenza dai dati]]
* Frama-C uno strumento che implementa algoritmi di slicing su [[C (linguaggio di programmazione)|programmi C.]]
* Eliminazione parziale del codice morto
{{References}}
 
== Riferimenti Bibliografia==
* [[Mark Weiser]]. "Program slicing". Proceedings of the 5th International Conference on Software Engineering, pages 439–449, [[IEEE Computer Society]] Press, March 1981.
* [[Mark Weiser|Marco Weiser]] . "SpeciaturaProgram del programmaslicing". IEEE Transactions on Software Engineering, Volume 10, NumeroIssue 4, pagine 352 &#x2013;pages 357352–357, [[IEEE Computer Society]] Press, luglioJuly 1984.
* [[Susan B. Horwitz|Susan Horwitz]], [[Thomas W. Reps|Thomas eReps]], and David Binkley, Affettamento interproceduraleInterprocedural medianteslicing graficiusing didependence dipendenzagraphs, ACM Transactions on Programming Languages and Systems, volumeVolume 12, numeroIssue 1, paginepages 26-60, gennaioJanuary 1990.
* Frank SuggerimentoTip. "Un'indagineA sullesurvey tecnicheof diprogram slicing dei programmitechniques". Journal of Programming Languages, Volume 3, NumeroIssue 3, paginepages 121–189, settembreSeptember 1995.
* David Binkley eand Keith Brian Gallagher. "SpeciaturaProgram del programmaslicing". AvanzamentiAdvances neiin computerComputers, volumeVolume 43, paginepages 1–50, [[Academic Press]], 1996.
* Andrea dide Lucia. "Program slicing: Methods and applicationapplications", International Workshop internazionaleon sull'analisiSource eCode laAnalysis manipolazione del codiceand sorgenteManipulation, paginepages 142-149, 2001, [[IEEE Computer Society]] Press.
* Mark Harman eand Robert Hierons. "UnaAn panoramicaoverview delof program slicing", Software Focus, volumeVolume 2, numeroIssue 3, paginepages 85–92, gennaioJanuary 2001.
* David Binkley eand Mark Harman. "Un'indagineA suisurvey risultatiof empiriciempirical sulresults on program slicing", Advances in Computers, volumeVolume 62, paginepages 105-178, [[Academic Press]], 2004.
* Jens Krinke. "Program Slicing", In Handbook of Software Engineering and Knowledge Engineering, Volume 3: Recent Advances. [[World Scientific Publishing]], 2005
* Silva, GiuseppeJosep. "UnA vocabolariovocabulary di tecniche basate sulof program slicing-based techniques", ACM Computing Surveys, volumeVolume 44, numeroIssue 3, [[Association for Computing Machinery]], giugnoJune 2012
* [http://www.users.miamioh.edu/alomarhw/ Alomari HW] et al. "srcSlice: affettamentovery staticoefficient inand avantiscalable moltoforward efficientestatic e scalabileslicing". [https://onlinelibrary.wiley.com/journal/20477481 Wiley Journal of Software: EvoluzioneEvolution eand processoProcess] ( '''JSEP''' ), DOI: 10.1002/smr.1651, volVol. 26, nNo. 11, pp. 931-961, 2014.
 
==Voci correlate==
* [[Mark Weiser|Marco Weiser]] . "Speciatura del programma". Atti della 5a Conferenza Internazionale sull'Ingegneria del Software, pagine 439 &#x2013; 449, [[IEEE Computer Society]] Press, marzo 1981.
* [[Manutenzione (sviluppo software)|Manutenzione del software]]
* [[Mark Weiser|Marco Weiser]] . "Speciatura del programma". IEEE Transactions on Software Engineering, Volume 10, Numero 4, pagine 352 &#x2013; 357, [[IEEE Computer Society]] Press, luglio 1984.
* [[Dipendenza dai dati]]
* Susan Horwitz, Thomas Reps e David Binkley, Affettamento interprocedurale mediante grafici di dipendenza, ACM Transactions on Programming Languages and Systems, volume 12, numero 1, pagine 26-60, gennaio 1990.
* Frank Suggerimento. "Un'indagine sulle tecniche di slicing dei programmi". Journal of Programming Languages, Volume 3, Numero 3, pagine 121–189, settembre 1995.
* David Binkley e Keith Brian Gallagher. "Speciatura del programma". Avanzamenti nei computer, volume 43, pagine 1–50, [[Academic Press]], 1996.
* Andrea di Lucia. "Program slicing: Methods and application", Workshop internazionale sull'analisi e la manipolazione del codice sorgente, pagine 142-149, 2001, [[IEEE Computer Society]] Press.
* Mark Harman e Robert Hierons. "Una panoramica del program slicing", Software Focus, volume 2, numero 3, pagine 85–92, gennaio 2001.
* David Binkley e Mark Harman. "Un'indagine sui risultati empirici sul program slicing", Advances in Computers, volume 62, pagine 105-178, [[Academic Press]], 2004.
* Jens Krinke. "Program Slicing", nel Manuale di ingegneria del software e ingegneria della conoscenza, volume 3: progressi recenti. [[World Scientific|Pubblicazione scientifica mondiale]], 2005
* Silva, Giuseppe. "Un vocabolario di tecniche basate sul program slicing", ACM Computing Surveys, volume 44, numero 3, [[Association for Computing Machinery]], giugno 2012
* [http://www.users.miamioh.edu/alomarhw/ Alomari HW] et al. "srcSlice: affettamento statico in avanti molto efficiente e scalabile". [https://onlinelibrary.wiley.com/journal/20477481 Wiley Journal of Software: Evoluzione e processo] ( '''JSEP''' ), DOI: 10.1002/smr.1651, vol. 26, n. 11, pp. 931-961, 2014.
 
== Link esterni ==
 
== LinkCollegamenti esterni ==
* [http://pp.info.uni-karlsruhe.de/project.php?id=30 VALSOFT/Progetto Joana]
* [http://indus.projects.cis.ksu.edu/index.shtml Progetto Indus] (parte di Bandera Checker)
* [http://www.cs.wisc.edu/wpis/html/ Progetto di slicing del programma del Wisconsin]
 
{{Program analysis}}
[[Categoria:Debugging]]