05 Fakultät Informatik, Elektrotechnik und Informationstechnik

Permanent URI for this collectionhttps://elib.uni-stuttgart.de/handle/11682/6

Browse

Search Results

Now showing 1 - 6 of 6
  • Thumbnail Image
    ItemOpen Access
    Software-Prozesse und Software-Qualität
    (2006) Ludewig, Jochen
    Ein Software-Entwickler sorgt für gute Software-Qualität, weil das praktisch ist, weil gute Software die billigste Lösung ist, also nicht, weil das in irgendwelchen Vorschriften gefordert wird oder ihm durch Drill in der Ausbildung anerzogen wurde. Aber was ist gute Software-Qualität? Zunächst erwarten wir, dass die Anforderungen erfüllt sind, dass also die Software (Programme und Dokumente) leistet, was sie leisten soll (Brauchbarkeit).Das reicht aber nicht aus; da sich die Anforderungen immer wieder ändern, muss es möglich sein, die Änderungen auch umzusetzen. Die Software muss also wartbar sein (Wartbarkeit). Andernfalls erstarrt sie und verliert ihren Nutzen.
  • Thumbnail Image
    ItemOpen Access
    Verteilte Versionsverwaltung von hierarchisch-sequentiellen Datenstrukturen am Beispiel von Eisenbahnfahrplänen
    (2009) Podolskiy, Igor
    Die Verwaltung von umfangreichen Datensätzen, die von mehreren Bearbeitern erstellt und gepflegt werden, ist eine anspruchsvolle Aufgabe, insbesondere wenn die Daten häufigen Änderungen unterworfen sind. Versionskontrollsysteme können in solchen Fällen mit Erfolg eingesetzt werden. Die verbreiteten Werkzeuge bieten für hierarchisch strukturierte Daten, die als geordnete Bäume modelliert werden, jedoch nur einen eingeschränkten Funktionsumfang. Insbesondere die Unterschiedsfeststellung und Zusammenführung verschiedener Version ist nicht optimal gelöst. Zudem haben Versionskontrollsysteme in dieser Form nur in wenigen Einsatzgebieten wie der Softwaretechnik Verbreitung gefunden. Diese Arbeit stellt einen Ansatz für die Versionsverwaltung komplexer Datenstrukturen am Beispiel von Eisenbahnfahrplandaten vor, die sich als Beispieldatensatz durch ihre Struktur, ihren Umfang und die komplexen Prozesse in ihrem Lebenszyklus gut als Beispiel eignen. Es werden sowohl die notwendigen Algorithmen als auch Einsatzszenarien für Versionskontrollsysteme im Rahmen der Fahrplanbearbeitungsprozesse vorgestellt und bewertet. Der vorgestellte Ansatz unterstützt die Unterschiedsfeststellung und Zusammenführung nah am fachlichen Datenmodell in vollen Umfang, fügt sich unterstützend in die fahrplanspezifischen Prozesse ein und ist im Rahmen dieser Arbeit prototypisch implementiert worden.
  • Thumbnail Image
    ItemOpen Access
    Kombinierte statische Ermittlung von Zeigerzielen, Kontroll- und Datenfluss
    (2009) Staiger-Stöhr, Stefan; Plödereder, Erhard (Prof. Dr.)
    Datenfluss-basierte statische Programmanalysen benötigen Informationen zu den an einer Programmstelle eintreffenden gültigen Definitionen. Dieses Wissen wiederum basiert auf dem Kontrollfluss. Zeiger-indirekte Operationen verschleiern jedoch beides, Kontroll- und Datenfluss: An solchen Operationen benötigt die Analyse Wissen über die potentiellen Zeigerziele, was aber seinerseits ein Datenfluss-Problem ist. Die vorliegende Dissertation bespricht ein neues Verfahren, um diese drei zentralen Probleme in Kombination zu lösen. Der wesentliche Unterschied zu bekannten Zeigeranalysen ist dabei, die Probleme zusammen zu betrachten und zugleich zu lösen. Das erlaubt es uns, die Aufgabe nicht als Datenfluss-Problem auf der Kontrollfluss-Darstellung zu betrachten, sondern stattdessen als Grapherreichbarkeits-Problem auf der Datenfluss-Darstellung. Der Ansatz hierzu ist sehr einfach: Die wechselseitige Bestimmung von Datenfluss-Beziehungen und das Propagieren von Zeigerzielen löst iterativ das Problem. Die Analyse ist dabei fluss-sensitiv und beherrscht starke Aktualisierungen; eine fluss-insensitive Betrachtung führt auf die bekannte Zeigeranalyse von Andersen. Wie diese Arbeit zeigt, erreichen wir die höhere Genauigkeit zu den gleichen asymptotischen Kosten. Die Dissertation beweist die Korrektheit des neuen Verfahrens und präsentiert eine ausführliche Evaluation, in der es sich dank Zyklenkontraktion als moderat quadratisch herausstellt. Schließlich präsentiert die Dissertation mit einer Erweiterung der neuen Analyse die erste fluss-sensitive Zeigeranalyse, welche starke Aktualisierungen unterstützt, die sogenannte meet-over-all-valid-paths-Lösung berechnet und dabei nur biquadratische Komplexität besitzt. Dies sind weitere klare Fortschritte zum aktuellen Stand der Forschung.
  • Thumbnail Image
    ItemOpen Access
    Atomic architectural component recovery for program understanding and evolution
    (2000) Koschke, Rainer; Plödereder, Erhard (Prof. Dr.)
    Die Fülle der publizierten Techniken zur Komponentenerkennung macht eine Klassifikation und Bewertung notwendig, um begründete Entscheidungen bei der Auswahl einer geeigneten Technik zu ermöglichen. In dieser Arbeit wird eine Klassifikation basierend auf einer Vereinheitlichung von 23 Techniken eingeführt. Eine engere Betrachtung von 16 strukturellen Techniken liefert eine Subkategorisierung in verbindungs-, metrik-, graph- und begriffsbasierte Techniken. Über den rein qualitativen Vergleich hinaus werden 12 strukturelle Techniken quantitativ beurteilt (alle bis auf begriffsbasierte Techniken). Zu diesem Zweck wird ein Auswerteschema für Komponentenerkennungstechniken vorgestellt, mit dessen Hilfe die Erkennungsqualität hinsichtlich einer manuell ermittelten Menge von Komponenten genau bestimmt werden kann. Unter den bewerteten Techniken befindet sich unsere neue metrikbasierte Technik Similarity Clustering. Bei der Auswertung anhand der von 5 Software-Ingenieuren erkannten Komponenten für vier C-Systeme mit zusammen 136 KLOC befindet sich Similarity Clustering bezüglich seiner Wiederfindungsrate stets unter den besten Techniken; allerdings ist auch eine höhere Anzahl unzuordenbarer Komponenten als bei anderen Techniken zu verzeichnen. Als Resultat ergibt sich insgesamt, dass keine der automatischen Techniken eine ausreichende Erkennungsqualität aufweisen kann. Um diesen Mangel auszugleichen, wird eine halbautomatische Methode eingeführt, die unterstützt wird durch eine Integration der vollautomatischen Techniken als sukzessiv angewandte Analysen mit anschließender Validierung durch den Benutzer. Hierzu werden die Techniken zu inkrementellen Techniken erweitert. Die Resultate der Techniken können mittels Operatoren kombiniert werden, denen die Mengenoperationen Schnitt, Vereinigung und Differenz zugrunde liegen. Eine alternative Art der Integration ist der sogenannte Abstimmungsansatz, bei dem die individuellen Zustimmungen der Techniken zusammengefasst werden.
  • Thumbnail Image
    ItemOpen Access
    Implementing sparse flow-sensitive Andersen analysis
    (2009) Staiger-Stöhr, Stefan
    Andersen's analysis is the most influential pointer analysis known so far. This paper, which contains parts of the author's upcoming PhD thesis, for the first time presents a flow-sensitive version of that analysis. We prove that the flow-sensitive version still has the same cubic complexity. Thus, the higher precision comes without loss of asymptotic scalability. This contradicts common wisdom of flow-sensitivity being substantially more expensive. Compared to other flow-sensitive pointer analyses, we have no expensive data-flow problem on the CFG. Instead, we simply propagate pointer targets along data-flow relations which we determine during the analysis. Our analysis in fact combines the computation of the interprocedural SSA data-flow representation and the uncovering of pointer targets. It also integrates the computation of control-flow relations. The analysis thus presents a new, sparse approach for the flow-sensitive solution of the central problems for data-flow based program analyses. This paper also presents two extensions for higher precision. The first extension shows how the analysis can detect strong updates without increasing the complexity. The second extension describes a context-sensitive version which excludes unrealizable paths. Together this yields the first analysis of that precision which only has a complexity of n^4. This is a substantial improvement over the previous n^6 bound found by Landi. Thus, in summary this report describes several theoretical advances in the field of flow-sensitive pointer analysis. It also provides details on the algorithms used for incremental SSA construction and context-sensitive pointer propagation.
  • Thumbnail Image
    ItemOpen Access
    Interprocedural static single assignment form in Bauhaus
    (2007) Staiger, Stefan; Vogel, Gunther; Keul, Steffen; Wiebe, Eduard
    In this paper we describe interprocedural static single assignment form (ISSA) with optimizations as implemented in the Bauhaus project. We explain our framework which uses an abstract program representation enabling us to use different pointer analyses ranging from fast but imprecise to slow but precise ones. Our implementation includes the computation of (may and must) side effects and optimizations like pruning definitions with simple linear-time algorithms. This paper also provides comprehensive test results and statistics for a large test suite.