Im Rahmen dieser Diplomarbeit wird das Dienstmodell für Program Slicing, welches von
Hannes Schwarz in [Sch07] vorgestellt wurde, zu einem komponentenbasierten Referenztool
weiterentwickelt und implementiert.
Dieses Referenztool verwendet zum Slicen ein Referenzschema für Programmiersprachen,
welches ebenfalls in dieser Arbeit eingeführt wird. Die hier eingesetzten Slicing-Verfahren
basieren auf diesem Referenzschema. Somit kann das Referenztool als Grundlage zum Slicen
von Quellcode in beliebigen Programmiersprachen genutzt werden, wenn das Referenzschema
vorab an die Gegebenheiten dieser Sprachen angepasst wird.
Exemplarisch wird in dieser Diplomarbeit ein Program Slicing Tool für C-Quellcode entwickelt.
Dieses Slicing Tool basiert auf dem Referenztool, in dem es die einzelnen Komponenten
des Referenztools bei Bedarf spezialisiert oder in der ursprünglichen Form übernimmt.
Damit das Program Slicing Tool als Referenz gelten kann, wird in dieser Arbeit eine einfache,
erweiterbare und komponentenbasierte Architektur entwickelt. Diese entsteht durch
den Einsatz aktueller Prinzipien der Softwaretechnik.
Inhaltsverzeichnis
- 1. Einleitung
- 1.1. Motivation
- 1.2. Ziel der Diplomarbeit
- 2. Grundlagen
- 2.1. Program Slicing
- 2.1.1. Statisches Slicen
- 2.1.2. Datenfluss der Slicing-Dienste
- 2.2. TGraph
- 2.2.1. TGraph Eigenschaften
- 2.2.2. Schema
- 2.3. Referenzschema
- 2.1. Program Slicing
- 3. Entwicklung eines Referenzschemas für Programmiersprachen
- 3.1. Entwicklung des Referenzschemas
- 3.2. Erweiterung des EL-Schemas zum Referenzschema
- 3.3. Abbildung des C-Schemas auf das Referenzschema
- 3.3.1. Direkte Abbildungen vom RePSS auf das C-Schema
- 3.3.2. Klassen des C-Schemas und von RePSS ohne Abbildung
- 3.3.3. Unterschiede zwischen dem C-Schema und RePSS
- 3.3.4. Kantenklassen im C-Schema und in RePSS
- 3.4. Datenmodelle des C-Schemas
- 3.4.1. Abstrakter Syntaxgraph (ASG) für C
- 3.4.2. Erweiterter Kontrollflussgraph (ACFG) für C
- 3.4.3. Points-to-Graph (PG) für C
- 3.4.4. Aufrufgraph (CG) und erweiterter Aufrufgraph (ECG) für C
- 3.4.5. Erweiterter Systemabhängigkeitsgraph (ESDG) für C
- 3.5. Fazit zu RePSS
- 4. Definition von RePST
- 4.1. Anwendungsfälle
- 4.2. Anforderungen
- 4.2.1. Funktionale Anforderungen
- 4.2.2. Technische Anforderungen
- 4.2.3. Anforderungen an die Architektur
- 4.2.4. Qualitätsanforderungen
- 4.2.5. Anforderungen an die Benutzerschnittstelle
- 4.2.6. Anforderungen an die Dokumentation
- 5. Architektur
- 5.1. Architektur-Muster
- 5.2. Architektur Eigenschaften von RePST
- 5.3. Architektur der Komponente ProgramSlicing Tool
- 5.4. Architektur der Komponente ProgramPreprocessor
- 5.5. Architektur der Komponente ProgramSlicer
- 5.6. Konfiguration von RePST
- 5.7. Verwendung gemeinsamer Komponenten
- 6. Realisierung der Komponenten
- 6.1. ProgramSlicing Tool
- 6.2. ProgramPreprocessor
- 6.3. ASGComputer
- 6.4. ACFGComputer
- 6.5. PGComputer
- 6.6. ECGComputer
- 6.7. CGComputer
- 6.8. DefUseInfComputer
- 6.9. ESDGComputer
- 6.10. BasicESDGComputer
- 6.11. IntMetEdgesComputer
- 6.12. ConDepEdgesComputer
- 6.13. DataFlowEdgesComputer
- 6.14. SumEdgesComputer
- 6.15. ProgramSlicer
- 6.16. ESDGMarker
- 6.17. StaticBackwardSliceComputer
- 6.18. StaticForwardSliceComputer
- 6.19. Weitere Slice- und ChopComputer
Zielsetzung und Themenschwerpunkte
Diese Diplomarbeit erweitert ein bestehendes Dienstmodell für Program Slicing zu einem komponentenbasierten Referenztool und implementiert dieses exemplarisch für C. Das Hauptziel ist die Entwicklung einer flexiblen und erweiterbaren Architektur, die das Slicen von Quellcode in verschiedenen Programmiersprachen ermöglicht.
- Entwicklung eines komponentenbasierten Referenztools für Program Slicing
- Einführung eines Referenzschemas für Programmiersprachen
- Exemplarische Implementierung für C-Quellcode
- Anwendung aktueller Prinzipien der Softwaretechnik
- Modularer Aufbau zur besseren Erweiterbarkeit und Anpassungsfähigkeit
Zusammenfassung der Kapitel
1. Einleitung: Dieses Kapitel führt in das Thema Program Slicing ein und beschreibt die Motivation und das Ziel der vorliegenden Diplomarbeit. Es skizziert den Ansatz, ein komponentenbasiertes und adaptierbares Referenztool zu entwickeln, das auf einem neu eingeführten Referenzschema für Programmiersprachen basiert. Die exemplarische Umsetzung für C-Quellcode wird als zentraler Bestandteil der Arbeit hervorgehoben.
2. Grundlagen: Dieses Kapitel legt die theoretischen Grundlagen für die Arbeit dar. Es beschreibt das Konzept des Program Slicing, sowohl statisches Slicing als auch den Datenfluss der Slicing-Dienste. Weiterhin werden das TGraph-Modell und das Referenzschema als wichtige Konzepte erläutert, die die Basis für die Entwicklung des Referenztools bilden. Es stellt die notwendigen Vorarbeiten und das Verständnis für die folgenden Kapitel sicher.
3. Entwicklung eines Referenzschemas für Programmiersprachen: Dieses Kapitel beschreibt die Entwicklung des zentralen Referenzschemas, das die verschiedenen Programmiersprachen auf einer gemeinsamen Basis repräsentiert. Es detailliert den Entwicklungsprozess, die Erweiterung des EL-Schemas und die Abbildung des C-Schemas auf das Referenzschema. Die Herausforderungen bei der Abbildung verschiedener Datenmodelle (ASG, ACFG, PG, CG, ECG, ESDG) für C-Code auf das Referenzschema werden diskutiert und gelöst. Dieser Teil ist entscheidend für die Flexibilität und die Sprachunabhängigkeit des entwickelten Tools.
4. Definition von RePST: In diesem Kapitel werden die Anwendungsfälle, Anforderungen und die Architektur des entwickelten Referenztools (RePST) detailliert beschrieben. Die Anforderungen umfassen funktionale, technische, architekturbezogene, qualitätsbezogene und anwenderseitige Aspekte. Diese umfassende Anforderungsanalyse bildet die Grundlage für den erfolgreichen Design und die Implementierung des Tools.
5. Architektur: Dieses Kapitel beschreibt die Architektur des RePST. Es beleuchtet die verwendeten Architekturmuster, die Eigenschaften der Architektur und detailliert die Architektur der einzelnen Komponenten (ProgramSlicing Tool, ProgramPreprocessor, ProgramSlicer). Die Konfiguration und die Verwendung gemeinsamer Komponenten werden ebenfalls erläutert. Die Beschreibung der Architektur sichert das Verständnis der Implementierung und die Nachvollziehbarkeit der Entscheidungen.
Schlüsselwörter
Program Slicing, Referenztool, komponentenbasiert, adaptierbar, C, Referenzschema, Programmiersprachen, Softwaretechnik, Datenfluss, Abstrakter Syntaxgraph (ASG), Erweiterter Kontrollflussgraph (ACFG), Points-to-Graph (PG), Aufrufgraph (CG), Erweiterter Aufrufgraph (ECG), Erweiterter Systemabhängigkeitsgraph (ESDG).
Häufig gestellte Fragen zur Diplomarbeit: Entwicklung eines komponentenbasierten Referenztools für Program Slicing
Was ist das Hauptziel dieser Diplomarbeit?
Das Hauptziel ist die Entwicklung eines flexiblen und erweiterbaren, komponentenbasierten Referenztools für Program Slicing, das die Analyse von Quellcode in verschiedenen Programmiersprachen ermöglicht. Die Arbeit implementiert dieses Tool exemplarisch für die Programmiersprache C.
Was ist Program Slicing?
Program Slicing ist eine Technik zur Extraktion relevanter Teile eines Programms, die einen bestimmten Aspekt des Programms beeinflussen oder beeinflusst werden. Die Arbeit behandelt sowohl statisches Slicing als auch den Datenfluss der Slicing-Dienste.
Welche Rolle spielt das Referenzschema?
Die Arbeit entwickelt ein Referenzschema für Programmiersprachen, welches als Grundlage für die Entwicklung des komponentenbasierten Tools dient. Dieses Schema ermöglicht die Anpassung des Tools an verschiedene Programmiersprachen, indem verschiedene Programmiersprachen auf einer gemeinsamen Basis repräsentiert werden. Es wird detailliert beschrieben, wie das C-Schema auf dieses Referenzschema abgebildet wird.
Wie ist das Referenztool (RePST) aufgebaut?
RePST ist komponentenbasiert aufgebaut. Die Architektur umfasst Komponenten wie ProgramSlicing Tool, ProgramPreprocessor und ProgramSlicer. Die Arbeit beschreibt detailliert die Architektur der einzelnen Komponenten, ihre Interaktion und die Verwendung gemeinsamer Komponenten. Die Architektur ist modular aufgebaut um Erweiterbarkeit und Anpassungsfähigkeit zu gewährleisten.
Welche Datenmodelle werden verwendet und wie werden diese abgebildet?
Die Arbeit verwendet verschiedene Datenmodelle für C-Code, darunter Abstrakter Syntaxgraph (ASG), Erweiterter Kontrollflussgraph (ACFG), Points-to-Graph (PG), Aufrufgraph (CG), Erweiterter Aufrufgraph (ECG) und Erweiterter Systemabhängigkeitsgraph (ESDG). Die Abbildung dieser Datenmodelle auf das Referenzschema wird ausführlich beschrieben, einschließlich der Herausforderungen und ihrer Lösungen.
Welche Anforderungen wurden an RePST gestellt?
Die Anforderungen an RePST umfassen funktionale, technische, architekturbezogene, qualitätsbezogene und anwenderseitige Aspekte, einschließlich Anforderungen an die Benutzerschnittstelle und die Dokumentation. Diese Anforderungen bilden die Grundlage für das Design und die Implementierung des Tools.
Welche Programmiersprache wird exemplarisch verwendet?
Die exemplarische Implementierung des Referenztools erfolgt für die Programmiersprache C.
Welche Schlüsselkonzepte werden in der Arbeit behandelt?
Schlüsselkonzepte sind Program Slicing, komponentenbasierte Architektur, Adaptierbarkeit, Referenzschema, Datenmodelle (ASG, ACFG, PG, CG, ECG, ESDG), und die Anwendung von Softwaretechnikprinzipien.
Wie ist die Diplomarbeit strukturiert?
Die Diplomarbeit ist in mehrere Kapitel unterteilt, beginnend mit einer Einleitung, gefolgt von Grundlagenkapiteln, der Entwicklung des Referenzschemas, der Definition und Architektur von RePST, der Realisierung der einzelnen Komponenten und abschließenden Schlüssen. Jedes Kapitel wird in der Zusammenfassung der Kapitel detailliert erläutert.
- Arbeit zitieren
- Elmar Brauch (Autor:in), 2008, Program Slicing - Ein komponentenbasiertes und adaptierbares Referenztool, exemplarisch angepasst für C, München, GRIN Verlag, https://www.grin.com/document/90901