TU Darmstadt / ULB / TUprints

Open Integrated Development and Analysis Environments

Eichberg, Michael (2007)
Open Integrated Development and Analysis Environments.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
PDF
Thesis_Eichberg-Final.pdf
Copyright Information: In Copyright.

Download (2MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Open Integrated Development and Analysis Environments
Language: English
Referees: Mezini, Prof.Dr. Mira ; de Moor, Prof. Dr. Oege
Advisors: Mezini, Prof.Dr. Mira
Date: 18 April 2007
Place of Publication: Darmstadt
Date of oral examination: 12 January 2007
Abstract:

Comprehensive tool support is essential to enable developers to cope with the complexity of modern software development pro jects. Software projects are getting larger and larger, are being developed using different languages, and make use of many third-party libraries as well as frameworks. Hence, tools are required: for software comprehension, for checking that libraries and frameworks are correctly used, and to ensure that the design does not degrade over time. Though numerous successful tools have already been developed for these tasks, several issues remain: the tools are usually highly specialized, their extensibility is limited, and an integration between the tools is lacking. Furthermore, IDE integration and in particular an integration with the incremental build process offered by modern IDEs is also often missing. Unfortunately, the direct integration of several code analysis tools with the incremental build process is not possible. When each tool processes the pro ject’s resources on its own and also maintains its own source model, the overall memory requirements and analysis time is prohibitive. To address these issues, this thesis proposes the concept of a Build Process Integrated Open Static Analysis Platform. The core functionality of such a platform is to coordinate the execution of static analyses that are encapsulated into modules with well-defined interfaces. These interfaces specify what the analyses require and provide in terms of the data they process. For a tool that is built upon such a platform it is sufficient to specify the data it requires. The platform can then determine the set of analyses and their execution order to satisfy the tool’s requirements. Modeling analyses as modular producer-consumer units facilitates the simultaneous integration of several tools into the incremental build process of modern IDEs. When compared to using several independent tools, the overall memory requirements are reduced, since the source model derived by the executed analyses is shared among all tools built upon the platform. Furthermore, the overall analysis time is also reduced since analyses are executed at most once, even if the derived information is required by more than one tool. The overall analysis time is further minimized by the parallel execution of those analyses that process different information. The feasibility of the proposed approach is demonstrated by Magellan. Magellan is an open static analysis platform tightly integrated with the incremental build process of the Eclipse IDE. This integration turns Eclipse into an Integrated Development and Analysis Environment. The set of modules implementing the static analyses is freely extensible and the data model of the database is open. An open data model is crucial to support new analyses that need to store derived information for the use by subsequent analyses. Besides featuring a fully flexible analysis stack, Magellan also supports the embedding of query engines. Supporting the execution of queries is indispensable for enabling end-users to define application specific analyses. The ability to execute queries is also required to facilitate software comprehension tools. As a proof of concept an XQuery processor and a Prolog system are embedded into Magellan. Both engines are evaluated w.r.t. to using them for the execution of queries along with the incremental build process. The XQuery engine is additionally evaluated in the context of software comprehension tools as a means to enable the end-user to define new ways to navigate through code. The platform is validated by four tools built on top of it: a software exploration tool, a metrics tool, an optional type system, and a set of lightweight static analyses that check structural properties of source code.

Alternative Abstract:
Alternative AbstractLanguage

Eine Umfassende Werkzeugunterstuetzung ist essentiell, um Entwicklern die Beherrschung der Komplexitaet moderner Softwareentwicklungsprojekte zu ermoeglichen. Softwareprojekte werden zunehmend groesser, verwenden verschiedene Sprachen und nutzen eine große Anzahl externer Bibliotheken und Frameworks. Vor diesem Hintergrund werden Werkzeuge zur Förderung des Softwareverständnisses benötigt, um zu prüfen, ob Bibliotheken und Frameworks korrekt benutzt werden und um sicherzustellen, dass das Design von Anwendungen waehrend der Entwicklung nicht zerfaellt. Obwohl bereits zahlreiche erfolgreiche Werkzeuge fuer diese Aufgaben entwickelt wurden, sind einige Probleme noch ungeloest: die Werkzeuge sind typischer Weise hoch spezialisiert, ihre Erweiterbarkeit ist beschraenkt und eine Integration zwischen den Werkzeugen ist nicht vorhanden. Weiterhin ist eine Integration in integrierte Entwicklungsumgebungen (IDEs) und insbesondere eine Einbettung in den inkrementellen Übersetzungsvorgang moderner IDEs meist nicht vorhanden. Eine direkte Integration mehrerer Analysewerkzeuge mit dem inkrementellen Uebersetzungsvorgang ist nicht moeglich. Wenn jedes Werkzeug den Quelltext des Projekts selbstaendig verarbeitet und auch ein eigenes Modell der Software wartet, dann sind die Gesamtanforderungen bezueglich Speicherbedarf und Analysezeit zu hoch. Um diese Probleme zu loesen, wird in dieser Dissertation das Konzept von offenen statischen Analyseplattformen vorgeschlagen, die in den inkrementellen Uebersetzungsvorgang eingebunden sind. Die Kernfunktionalitaet solcher Plattformen ist die Koordination der Ausfuehrung statischer Analysen, welche in Module mit wohl definierten Schnittstellen eingekapselt sind. Die Schnittstellen spezifizieren im Hinblick auf die verarbeiteten Daten, was die Analysen benoetigen und zur Verfuegung stellen. Fuer Werkzeuge, die auf diesen Plattformen aufsetzen, ist es ausreichend zu spezifizieren welche Daten benoetigt werden. Die Plattform kann dann die Menge der Analysen und ihre Ausfuehrungsreihenfolge bestimmen, um die Anforderungen der Werkzeuge zu erfuellen. Die Modellierung der Analysen als modulare Produzenten-Konsumenten- Einheiten ermoeglicht die gleichzeitige Integration mehrerer Werkzeuge in den inkrementellen ?Uebersetzungsprozess moderner IDEs. Verglichen mit der Nutzung mehrerer unabhaengiger Werkzeuge sind die Speicheranforderungen aufgrund der gemeinsamen Nutzung des Softwaremodells reduziert. Das Softwaremodell wird waehrend der Ausfuehrung der Analysen abgeleitet und von allen auf der Plattform aufsetzenden Werkzeugen genutzt. Weiterhin wird die Gesamtanalysezeit dadurch reduziert, dass jede Analyse hoechstens einmal ausgefuehrt wird — insbesondere auch dann, wenn die abgeleitete Information von mehreren Werkzeugen benoetigt wird. Darueber hinaus wird die Gesamtanalysezeit minimiert durch die parallele Ausfuehrung von Analysen, die verschiedene Daten verarbeiten. Die Realisierbarkeit des vorgeschlagenen Ansatzes wird durch Magellan demonstriert. Magellan ist eine offene statische Analyseplattform, die eng in den inkrementellen Üebersetzungsprozess der Eclipse IDE integriert ist. Diese Integration verwandelt Eclipse in eine Integrierte Entwicklungs- und Analyseumgebung. Die Menge der Module, die statische Analysen implementieren, ist frei erweiterbar und das Datenmodell ist offen für Ergänzungen. Ein offenes Datenmodell ist unabdingbar, um neue Analysen zu unterstützen, die abgeleitete Information fuer nachfolgende Analysen zwischenspeichern muessen. Neben der Unterstützung eines vollständig flexiblen Analysestapels unterstuetzt Magellan auch das Einbetten von Abfragesprachen. Die Unterstuetzung der Ausfuehrung von Abfragen ist unverzichtbar, um Endanwendern die Spezifikation von anwendungsspezifischen Analysen zu ermoeglichen. Die Faehigkeit Abfragen auszufuehren ist auch notwendig, um die Implementierung von Werkzeugen zum Softwareverstaendnis zu ermoeglichen. Die Tragfaehigkeit des Konzeptes wird durch die beispielhafte Einbettung eines Prolog Systems und eines XQuery Prozessors in Magellan gezeigt. Beide Ansaetze werden im Hinblick auf ihre Eignung zur Ausfuehrung von Abfragen als Teil des inkrementellen ?Ubersetzungsvorgangs bewertet. Der XQuery Prozessor wird zudem bezueglich seiner Verwendung in Softwareverstaendniswerkzeugen evaluiert — als ein Ansatz um dem Endbenutzer die Definition von neuen Abfragen zur Navigation durch den Code zu ermoeglichen. Die Plattform wird validiert durch vier auf der Plattform aufsetzende Werkzeuge. Dies sind ein Werkzeug zur Exploration von Software, ein Werkzeug zur Berechnung von Metriken, ein optionales Typsystem und eine Menge von leichtgewichtigen statischen Analysen, die strukturelle Eigenschaften des Quellcodes ueberpruefen.

German
URN: urn:nbn:de:tuda-tuprints-8080
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science
Date Deposited: 17 Oct 2008 09:22
Last Modified: 08 Jul 2020 22:57
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/808
PPN:
Export:
Actions (login required)
View Item View Item