Software-Ingenieure sind mit einer umfangreichen Menge von Informationen über Quellcode konfrontiert. Deshalb benötigen sie passende Werkzeuge, die sie dabei unterstützen, mit solchen Informationsmengen zu arbeiten. Es wurden bereits mehrere Werkzeuge zur Verbesserung der Entwicklerproduktivität entworfen. Diese stoßen allerdings an Grenzen, wenn es darum geht, erhebliche Datenmengen effizient zu bearbeiten und zu präsentieren. Erst mit der Verbreitung von hauptspeicherbasierten spaltenorientierten Datenbanken können viele datenintensive Anwendungen bedeutend beschleunigt werden, was das Arbeiten mit solchen Anwendungen deutlich erleichtert und auch neue Anwendungsszenarien ermöglicht. In dieser Arbeit wird untersucht, ob hauptspeicherbasierte spaltenorientierte Datenbanken Software-Entwickler bei ihren täglichen Aufgaben unterstützen können. Folgende Hauptforschungsfragen sollen dabei beantwortet werden: Sind hauptspeicherbasierte spaltenorientierte Datenbanken in der Lage, die großen Mengen von feingranularen, strukturierten Daten über den Quellcode zu bearbeiten? Und falls ja, wie kann die Anwendung dieser Technologie die Produktivität eines Entwicklers verbessern? Um diese Fragen zu beantworten, wurden zwei Szenarien ausgewählt, die aufgrund unzureichender Performanz der Werkzeuge besonders erschwert sind. Das erste Szenario ist das Source Code Querying. Existierende Quellcodeinformationssysteme speichern erhebliche Mengen an strukturierten Daten. Beispiele für solche Strukturen sind abstrakte syntaktische Bäume, Kontrollflussgraphen und Datenflussgraphen. Bisher wurden die Performanzprobleme durch das Schrumpfen der Datenmenge gelöst: entweder durch eine grobgranulare Datendarstellung oder eine Vorbereitung von Antworten im Voraus oder durch das Einschränken des Suchbereichs. Diese Alternativen verringern jedoch die Entwicklerproduktivität. Das zweite Szenario ist das Source Code Analytics. Bei vielen Aufgaben im Bereich Reverse Engineering müssen Entwickler eine erhebliche Anzahl von Fakten analysieren, die aus dem Quellcode extrahiert werden. Beispiele für solche Fakten sind die Präsenz von bestimmten Mustern im Quellcode, Softwareproduktmetriken oder Abhängigkeiten zwischen Softwarekomponenten. Jeder Fakt hat typischerweise mehrere Merkmale, wie der Typ des Faktes, der Fundort und andere Attribute. Insbesondere die Analyse von umfangreichen Softwaresystemen erfordert die Fähigkeit der effektiven Extraktion und Bearbeitung von zahlreichen Fakten. In Experimenten, die zusammen mit einem Industriepartner durchgeführt wurden, konnte gezeigt werden, dass die hauptspeicherbasierte Technologie die Performanz erreicht, die die Entwicklerproduktivität verbessert und neue Szenarien ermöglicht. Diese Arbeit ist von den Problemen heutiger Software-Entwicklung getrieben. Sie bewegt sich in der Schnittmenge der beiden Bereiche Softwaresystemtechnik und Datenbanktechnologie. Aus Sicht der Softwaresystemtechnik wird ein Weg gesucht, um Entwickler beim Umgang mit großen Mengen von strukturierten Daten zu unterstützen. Aus Sicht der Datenbanktechnologie sind Source Code Querying und Analytics die Anwendungsgebiete, um die Verarbeitung von strukturierten Daten zu untersuchen.
Software engineers are compelled to deal with a large amount of information about source code. Appropriate tools are required to enable software engineers to work efficiently with this amount of information. A number of tools have been created to increase developers' productivity. However, these tools are limited with respect to the capability of processing and presenting such a large amount of information sufficiently. With the advent of inmemory column-oriented databases the performance of data-intensive applications can be significantly improved, resulting in a completely new user experience with those applications and enabling new use-cases. This thesis investigates the applicability of in-memory column-oriented databases for supporting daily software engineering activities. The major research questions addressed in this thesis are as follows: Does in-memory column-oriented database technology provide the means and the necessary performance advantages for working interactively with large amounts of fine-grained structural information about source code? And, if yes, what advantage for software engineers will the application of this technology provide? To investigate these research questions two scenarios have been selected that particularly suffer from low performance. The first selected scenario is source code querying. Existing source code information systems contain a large amount of structural data. Abstract syntax trees, call graphs, and data flow graphs are examples of such structural data. Existing tools have solved the performance problems either by reducing the amount of data using a coarse-grained representation, or by preparing answers to developers' questions in advance, or by reducing the scope of search. These alternatives result in the loss of developers' productivity. The second scenario is source code analytics. To perform reverse engineering tasks software engineers often are compelled to analyze a number of atomic facts that have been extracted from source code. Examples of such atomic facts are occurrences of certain patterns in code, software product metrics or dependencies between software components. Each fact typically has several characteristics, such as, the type of the fact, location in code where found, and other attributes. Particularly, analysis of large software systems requires the ability to extract and to process a large amount of such facts efficiently. During industrial experiments conducted for this thesis it was evidenced that in-memory technology provides performance gains that improve developers' productivity and enable scenarios previously not possible. This thesis is driven by today's problems of software engineering. It overlaps both software engineering and database technology. From the viewpoint of software engineering, it seeks to find a way to support developers in dealing with a large amount of structural data. From the viewpoint of database technology, source code querying and analytics are domains for studying fundamental issues of storing and querying structural data.