Durch eine immer heterogenere und größer werdende Software-Landschaft und der dadurch verbundenen immer komplexer werdenden Software-Architektur in Unternehmen, sind die Forderungen nach Maßnahmen, wodurch die Kosten und die Risiken der Softwarepflege und –änderung minimiert werden können, nachvollziehbar.
Ein weiteres Problem in Hinsicht auf die Softwarepflege und –änderung stellt das oft durch schlechte Dokumentation oder durch Fluktuation verloren gegangene Know-How bezüglich bestehender Software-Architekturen und –System dar.
Durch die oben genannten Aspekte ist es leicht vorstellbar, dass ohne die nötige Dokumentation und das notwendige Wissen eine Weiterentwicklung und Wartung der vorhandenen Software-Architektur nur sehr schwer möglich ist. Hierbei soll das Software Reengineering bzw. das Reverse Engineering helfen, das verloren gegangene Wissen wieder in die Unternehmung zurückzubringen um dadurch historisch gewachsene Software-Architekturen wieder beherrschbar zu machen.
Aus diesem Grund beschäftigt sich dieses Assignment mit dem Thema Software Reengineering und der Wiederverwendung von Software-Architekturen. Im Speziellen soll hier das Reverse Engineering und dessen Methoden betrachtet werden.
Inhaltsverzeichnis
1 Einleitung
1.1 Zielsetzung
2 Software-Architektur
2.1 Definition Software-Architektur
2.2 Einordnung Software-Architektur
2.3 Wiederverwendung von Software-Architekturen
3 Software-Reengineering
3.1 Definition Software-Reengineering
3.2 Methoden Software-Reengineering
4 Reverse Engineering
4.1 Vorgehen beim Reverse Engineering
4.2 Prozess des Reverse Engineerings
4.3 Methoden des Reverse Engineerings
4.4 Probleme des Reverse Engineerings
5 Zusammenfassung
5.1 Ausblick
Zielsetzung & Themen der Arbeit
Die vorliegende Arbeit setzt sich zum Ziel, einen fundierten Überblick über die Methoden des Software-Reengineerings mit einem besonderen Fokus auf das Reverse Engineering zu geben, um die Wiederverwendung bestehender IT-Architekturen zu ermöglichen und verlorenes Wissen zurückzugewinnen.
- Grundlagen der Software-Architektur und deren Bedeutung in Unternehmen
- Die Notwendigkeit und Anwendung von Software-Reengineering
- Methoden und Prozessschritte des Reverse Engineerings
- Techniken wie Decompiling und Disassembly
- Herausforderungen und Problematiken bei Reengineering-Prozessen
Auszug aus dem Buch
4.2 Prozess des Reverse Engineerings
Im Reverse Engineering können vier Prozessschritte unterschieden werden. Parsen, Komponentenanalyse, Design Recovery und Design Reconstruction. Abbildung 6 stellt diese jeweils mit ihrem benötigten Input (links) und dem erbrachten Output (rechts) übersichtlich dar.
Nachfolgend werden die vier Prozessschritte noch einmal genauer erläutert.
Parsen: Im ersten Schritt wird die Struktur des Quellcodes analysiert, seine wesentlichen Bestandteile extrahiert und eine Zwischendarstellung (abstrakter Syntaxbaum) abgeleitet.
Komponentenanalyse: In dieser Phase werden aufbauend auf der Zwischendarstellung des Programmcodes Entwurfskomponenten (Module, Klassen) sowie Beziehungen zwischen diesen (z.B. Aufrufstrukturen) explizit herausgestellt.
Design Recovery: Diese Phase beschäftigt sich mit der Extraktion von Wissen über ursprüngliche Anforderungen und größerer Zusammenhänge über die Struktur des Systems aus der vorhergehenden Phase. Dazu werden externe Wissensquellen in die Analysen einbezogen.
Design Reconstructing: In einer abschließenden Phase werden die bereits erreichten Ergebnisse geschärft und von „Rauschen“ befreit. Spezifikationen und Systemmodelle werden weiter ab-strahiert und miteinander integriert.
Zusammenfassung der Kapitel
1 Einleitung: Die Einleitung beleuchtet die zunehmende Komplexität moderner Software-Landschaften und das Problem verloren gegangenen Know-Hows, wodurch die Relevanz von Software-Reengineering begründet wird.
2 Software-Architektur: Dieses Kapitel definiert den Begriff der Software-Architektur, ordnet sie in den Unternehmenskontext ein und motiviert die Notwendigkeit ihrer Wiederverwendung.
3 Software-Reengineering: Es erfolgt eine Definition des Software-Reengineerings sowie die Einführung der drei zentralen Verfahren Forward Engineering, Reverse Engineering und Refactoring.
4 Reverse Engineering: Dieses Kapitel erläutert das systematische Vorgehen, die einzelnen Prozessschritte sowie spezifische Methoden und die Herausforderungen bei der Umsetzung von Reverse Engineering.
5 Zusammenfassung: Abschließend werden die Ergebnisse der Arbeit zusammengefasst und ein Ausblick auf die zukünftige Bedeutung der Rückgewinnung von Wissen aus Altsystemen gegeben.
Schlüsselwörter
Software-Architektur, Software-Reengineering, Reverse Engineering, Wiederverwendung, IT-Systeme, Legacy Systeme, Forward Engineering, Refactoring, Decompiling, Disassembly, Systemanalyse, Softwarewartung, Quellcode, Prozessmodellierung, Architekturmanagement
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Arbeit befasst sich mit der Analyse bestehender Software-Architekturen durch Reverse Engineering, um diese besser zu verstehen und für zukünftige Entwicklungen wiederverwendbar zu machen.
Was sind die zentralen Themenfelder?
Die zentralen Themenfelder sind Software-Architektur, Reengineering-Verfahren, Prozessmodelle für die Softwareanalyse und die Methoden des Reverse Engineerings.
Was ist das primäre Ziel der Arbeit?
Das primäre Ziel ist es, Methoden aufzuzeigen, wie durch Reverse Engineering verloren gegangenes Wissen über Software-Systeme zurückgewonnen und die Wiederverwendbarkeit von Komponenten sichergestellt werden kann.
Welche wissenschaftliche Methode wird verwendet?
Die Arbeit basiert auf einer Literaturanalyse und der systematischen Darstellung von Prozessen und Methoden des Software-Engineerings sowie deren grafischer Veranschaulichung.
Was wird im Hauptteil der Arbeit behandelt?
Der Hauptteil behandelt die Definition und Einordnung von Software-Architekturen, die verschiedenen Verfahren des Reengineerings sowie eine detaillierte Betrachtung der Phasen und Herausforderungen des Reverse Engineerings.
Welche Schlüsselwörter charakterisieren die Arbeit?
Wichtige Begriffe sind Software-Architektur, Reverse Engineering, Wiederverwendung, Legacy Systeme, Refactoring und Decompiling.
Warum ist Reverse Engineering kein vollautomatisierter Prozess?
Da für die Rekonstruktion von Design-Entscheidungen und die Interpretation der Systemstruktur fachspezifisches Wissen aus dem jeweiligen Anwendungsgebiet erforderlich ist, stößt die Automatisierung hier an ihre Grenzen.
Welche Rolle spielt die Wiederverwendung von Software-Architekturen?
Wiederverwendung mindert Risiken, spart Kosten sowie Zeit bei der Neuentwicklung und ermöglicht eine effiziente Weiterentwicklung bestehender Systeme unter Vermeidung von Komplexitätssteigerungen.
- Citation du texte
- Florian Kurtz (Auteur), 2012, Wiederverwendung von IT-Architekturen, Munich, GRIN Verlag, https://www.grin.com/document/205442