TY - THES A1 - Robschink, Torsten T1 - Pfadbedingungen in Abhängigkeitsgraphen und ihre Anwendung in der Softwaresicherheitstechnik N2 - Diese Arbeit präsentiert eine neue Methode zur Sicherheitsanalyse von Software im Bereich der Manipulationsprüfung und der Einhaltung von Informationsflüssen zwischen verschiedenen Sicherheitsniveaus. Program-Slicing und Constraint-Solving sind eigenständige Verfahren, die sowohl zur Abhängigkeitsbestimmung als auch zur Berechnung arithmetischer Eigenschaften verwendet werden. Die erstmalige Kombination dieser beiden Verfahren mittels Pfadbedingungen liefert nicht nur binäre Abhängigkeitsinformationen wie Slicing, sondern exakte notwendige Bedingungen über die Informationsflüsse zwischen zwei Programmpunkten. Neben der Definition der Grundlagen von Abhängigkeitsgraphen und einfachen Pfadbedingungen werden neue Erweiterungen für kontextsensitive interprozedurale Pfadbedingungen gezeigt und die Integration von domänenspezifischen Verfahren für Arrayfelder und abstrakten Datentypen demonstriert. Der Schwerpunkt der Arbeit liegt in der Realisierung von Pfadbedingungen für echte Programme in echten Programmiersprachen. Hierfür werden Verfahren vorgeschlagen, realisiert und empirisch untersucht, wie Pfadbedingungen für große Programme skalieren. Die zum Einsatz kommenden Techniken sind u.a. Intervallanalyse und Binäre Entscheidungsgraphen, mit denen die generelle exponentielle Komplexität von Pfadbedingungen beherrschbar wird. Fallstudien für den Einsatz von Pfadbedingungen und die empirische Untersuchung mehrerer Verfahren zur Intervallanalyse zeigen, dass Pfadbedingungen für die praktische Programmanalyse und das Programmverstehen geeignet und empfehlenswert sind. KW - Programmanalyse KW - Software Engineering KW - Reengineering / Software KW - Softwarewartung KW - Qualitätssicherung KW - Program-Slicing KW - Manipulationsprüfung KW - Informationsfluss KW - program analysis KW - program slicing KW - software reengineering KW - safety analysis KW - information flow Y1 - 2004 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:bvb:739-opus-469 ER - TY - THES A1 - Krinke, Jens T1 - Advanced Slicing of Sequential and Concurrent Programs N2 - 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 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. N2 - 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 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. KW - Programmanalyse KW - Programmtransformation KW - Software Engineering KW - Reengineering / Software KW - Softwarewartung KW - program analysis KW - program slicing KW - software reengineering Y1 - 2003 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:bvb:739-opus-375 ER -