Advanced Slicing of Sequential and Concurrent Programs

  • Program slicing is a technique to identify statements that may influence the computations in other statements. Despite the ongoing research of almost 25 years, program slicing still has problems that prevent a widespread use: Sometimes, slices are too big to understand and too expensive and complicated to be computed for real-life programs. This thesis presents solutions to these problems: It contains various approaches which help the user to understand a slice more easily by making it more focused on the user's problem. All of these approaches have been implemented in the VALSOFT system and thorough evaluations of the proposed algorithms are presented. The underlying data structures used for slicing are program dependence graphs. They can also be used for different purposes: A new approach to clone detection based on identifying similar subgraphs in program dependence graphs is presented; it is able to detect modified clones better than other tools. In the theoretical part, this thesis presents a high-precision approach to sliceProgram slicing is a technique to identify statements that may influence the computations in other statements. Despite the ongoing research of almost 25 years, program slicing still has problems that prevent a widespread use: Sometimes, slices are too big to understand and too expensive and complicated to be computed for real-life programs. This thesis presents solutions to these problems: It contains various approaches which help the user to understand a slice more easily by making it more focused on the user's problem. All of these approaches have been implemented in the VALSOFT system and thorough evaluations of the proposed algorithms are presented. The underlying data structures used for slicing are program dependence graphs. They can also be used for different purposes: A new approach to clone detection based on identifying similar subgraphs in program dependence graphs is presented; it is able to detect modified clones better than other tools. In the theoretical part, this thesis presents a high-precision approach to slice concurrent procedural programs despite that optimal slicing is known to be undecidable. It is the first approach to slice concurrent programs that does not rely on inlining of called procedures.show moreshow less
  • Program Slicing ist eine Technik zur Identifikation von Anweisungen, die andere Anweisungen beeinflussen können. Trotz seit nunmehr 25 Jahren anhaltender Forschung hat Program Slicing immer noch Probleme, die eine verbreitete Benutzung verhindern: Slices können zu groß oder zu unverständlich werden, oder ihre Berechnung kann zu teuer oder zu kompliziert für echte Programme sein. Diese Dissertation präsentiert Lösungen und Auswege aus diesen Problemen. Sie enthält einerseits eine Reihe von Slicing-Verfahren unterschiedlicher Präzision und Geschwindigkeit. Andererseits enthält sie verschiedenste Verfahren, die dem Benutzer helfen, Slices leichter zu verstehen indem die berechneten Slices mehr auf seine Bedürfnisse fokussiert werden. Alle vorgestellten Verfahren wurden im VALSOFT-System implementiert und gründlich evaluiert. Die dem Slicing zugrunde liegende Datenstruktur sind Programmabhängigkeitsgraphen. Diese können auch für andere Anwendungen benutzt werden: Ein neues Verfahren zur Entdeckung von dupliziertem Code identifiziertProgram Slicing ist eine Technik zur Identifikation von Anweisungen, die andere Anweisungen beeinflussen können. Trotz seit nunmehr 25 Jahren anhaltender Forschung hat Program Slicing immer noch Probleme, die eine verbreitete Benutzung verhindern: Slices können zu groß oder zu unverständlich werden, oder ihre Berechnung kann zu teuer oder zu kompliziert für echte Programme sein. Diese Dissertation präsentiert Lösungen und Auswege aus diesen Problemen. Sie enthält einerseits eine Reihe von Slicing-Verfahren unterschiedlicher Präzision und Geschwindigkeit. Andererseits enthält sie verschiedenste Verfahren, die dem Benutzer helfen, Slices leichter zu verstehen indem die berechneten Slices mehr auf seine Bedürfnisse fokussiert werden. Alle vorgestellten Verfahren wurden im VALSOFT-System implementiert und gründlich evaluiert. Die dem Slicing zugrunde liegende Datenstruktur sind Programmabhängigkeitsgraphen. Diese können auch für andere Anwendungen benutzt werden: Ein neues Verfahren zur Entdeckung von dupliziertem Code identifiziert ähnliche Teilgraphen in Programmabhängigkeitsgraphen. Dieses Verfahren kann modifizierte Duplikate besser erkennen als andere Verfahren. Auf der theoretischen Seite präsentiert diese Dissertation ein hochpräzises Verfahren zum Slicing nebenläufiger prozeduraler Programme, wobei optimales Slicing bekannterweise nicht entscheidbar ist. Dieses Verfahren ist das erste zum Slicen nebenläufiger Programme, das nicht auf Inlining aufgerufener Prozeduren zurückgreift.show moreshow less

Download full text files

Export metadata

Additional Services

Share in Twitter Search Google Scholar
Metadaten
Author:Jens Krinke
URN:urn:nbn:de:bvb:739-opus-375
Advisor:Gregor Snelting
Document Type:Doctoral Thesis
Language:English
Year of Completion:2003
Date of Publication (online):2004/08/10
Publishing Institution:Universität Passau
Granting Institution:Universität Passau, Fakultät für Informatik und Mathematik
Date of final exam:2003/08/18
Release Date:2004/08/10
Tag:program analysis; program slicing; software reengineering
GND Keyword:Programmanalyse; Programmtransformation; Software Engineering; Reengineering / Software; Softwarewartung
Institutes:Fakultät für Informatik und Mathematik / Mitarbeiter Lehrstuhl/Einrichtung der Fakultät für Informatik und Mathematik
Dewey Decimal Classification:0 Informatik, Informationswissenschaft, allgemeine Werke / 00 Informatik, Wissen, Systeme / 004 Datenverarbeitung; Informatik
open_access (DINI-Set):open_access
Licence (German):License LogoStandardbedingung laut Einverständniserklärung