@phdthesis{Robschink2004, author = {Robschink, Torsten}, title = {Pfadbedingungen in Abh{\"a}ngigkeitsgraphen und ihre Anwendung in der Softwaresicherheitstechnik}, url = {http://nbn-resolving.de/urn:nbn:de:bvb:739-opus-469}, school = {Universit{\"a}t Passau}, year = {2004}, abstract = {Diese Arbeit pr{\"a}sentiert eine neue Methode zur Sicherheitsanalyse von Software im Bereich der Manipulationspr{\"u}fung und der Einhaltung von Informationsfl{\"u}ssen zwischen verschiedenen Sicherheitsniveaus. Program-Slicing und Constraint-Solving sind eigenst{\"a}ndige Verfahren, die sowohl zur Abh{\"a}ngigkeitsbestimmung als auch zur Berechnung arithmetischer Eigenschaften verwendet werden. Die erstmalige Kombination dieser beiden Verfahren mittels Pfadbedingungen liefert nicht nur bin{\"a}re Abh{\"a}ngigkeitsinformationen wie Slicing, sondern exakte notwendige Bedingungen {\"u}ber die Informationsfl{\"u}sse zwischen zwei Programmpunkten. Neben der Definition der Grundlagen von Abh{\"a}ngigkeitsgraphen und einfachen Pfadbedingungen werden neue Erweiterungen f{\"u}r kontextsensitive interprozedurale Pfadbedingungen gezeigt und die Integration von dom{\"a}nenspezifischen Verfahren f{\"u}r Arrayfelder und abstrakten Datentypen demonstriert. Der Schwerpunkt der Arbeit liegt in der Realisierung von Pfadbedingungen f{\"u}r echte Programme in echten Programmiersprachen. Hierf{\"u}r werden Verfahren vorgeschlagen, realisiert und empirisch untersucht, wie Pfadbedingungen f{\"u}r große Programme skalieren. Die zum Einsatz kommenden Techniken sind u.a. Intervallanalyse und Bin{\"a}re Entscheidungsgraphen, mit denen die generelle exponentielle Komplexit{\"a}t von Pfadbedingungen beherrschbar wird. Fallstudien f{\"u}r den Einsatz von Pfadbedingungen und die empirische Untersuchung mehrerer Verfahren zur Intervallanalyse zeigen, dass Pfadbedingungen f{\"u}r die praktische Programmanalyse und das Programmverstehen geeignet und empfehlenswert sind.}, subject = {Programmanalyse}, language = {de} } @phdthesis{MianSyed2003, author = {Mian Syed, Ahmed}, title = {Eine {\"o}konomische statische Analysemethode zur Berechnung von Relational Attributes mittels regul{\"a}rer Pfadbedingungen und ihre Anwendung auf Zeigeranalyse}, url = {http://nbn-resolving.de/urn:nbn:de:bvb:739-opus-333}, school = {Universit{\"a}t Passau}, year = {2003}, abstract = {Ziel der Arbeit ist es, eine neue Programmanalysetechnik f{\"u}r Zeigeranalyse zu entwickeln. Diese soll exakt in dem Sinne sein, daß sie nur Ergebnisse berechnet, die tats{\"a}chlich in realen Programml{\"a}ufen vorkommen k{\"o}nnen, Ebenso soll diese Analysetechnik {\"o}konomisch sein, d.h. nur den minimal f{\"u}r eine exakte L{\"o}sung ben{\"o}tigten Berechnungsaufwand investieren m{\"u}ssen.}, subject = {Softwareproduktion}, language = {de} } @phdthesis{Stoerzer2006, author = {St{\"o}rzer, Maximilian}, title = {Impact Analysis for AspectJ - A Critical Analysis and Tool-Based Approach to AOP}, url = {http://nbn-resolving.de/urn:nbn:de:bvb:739-opus-897}, school = {Universit{\"a}t Passau}, year = {2006}, abstract = {Aspect-Oriented Programming (AOP) has been promoted as a solution for modularization problems known as the tyranny of the dominant decomposition in literature. However, when analyzing AOP languages it can be doubted that uncontrolled AOP is indeed a silver bullet. The contributions of the work presented in this thesis are twofold. First, we critically analyze AOP language constructs and their effects on program semantics to sensitize programmers and researchers to resulting problems. We further demonstrate that AOP—as available in AspectJ and similar languages—can easily result in less understandable, less evolvable, and thus error prone code—quite opposite to its claims. Second, we examine how tools relying on both static and dynamic program analysis can help to detect problematical usage of aspect-oriented constructs. We propose to use change impact analysis techniques to both automatically determine the impact of aspects and to deal with AOP system evolution. We further introduce an analysis technique to detect potential semantical issues related to undefined advice precedence. The thesis concludes with an overview of available open source AspectJ systems and an assessment of aspect-oriented programming considering both fundamentals of software engineering and the contents of this thesis.}, subject = {Modularit{\"a}t}, language = {en} } @phdthesis{Streckenbach2005, author = {Streckenbach, Mirko}, title = {KABA - a system for refactoring Java programs}, url = {http://nbn-resolving.de/urn:nbn:de:bvb:739-opus-638}, school = {Universit{\"a}t Passau}, year = {2005}, abstract = {Refactoring is a well known technique to enhance various aspects of an object-oriented program. It has become very popular during recent years, as it allows to overcome deficits present in many programs. Doing refactoring by hand is almost impossible due to the size and complexity of modern software systems. Automated tools provide support for the application of refactorings, but do not give hints, which refactorings to apply and why. The Snelting/Tip analysis is a program analysis, which creates a refactoring proposal for a class hierarchy by analyzing how class members are used inside a program. KABA is an adaption and extension of the Snelting/Tip analysis for Java. It has been implemented and expanded to become a semantic preserving, interactive refactoring system. Case studies of real world programs will show the usefulness of the system and its practical value.}, subject = {Java }, language = {en} } @phdthesis{Krinke2003, author = {Krinke, Jens}, title = {Advanced Slicing of Sequential and Concurrent Programs}, url = {http://nbn-resolving.de/urn:nbn:de:bvb:739-opus-375}, school = {Universit{\"a}t Passau}, year = {2003}, abstract = {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.}, subject = {Programmanalyse}, language = {en} }