Für viele der heute eingesetzten Softwaresysteme besteht aufgrund ihrer schlechten Wartbarkeit oder zwischenzeitlich veränderter Anforderungen der Bedarf einer Ablösung. Softwaresysteme altern, sie müssen durch neue ersetzt werden.
Als Alternative zur vollständigen Neuentwicklung eines Softwaresystems bietet sich das Software Reengineering an. Ein bestehendes Softwaresystem wird im Zuge eines Reverse Engineering analysiert und dokumentiert, danach restrukturiert und in einer abschließenden Phase des Forward Engineering neu implementiert [KAUFM94, S.1].
Das neu entstehende Systeme kann ein 1:1-Abbild des bestehenden Systems sein oder einzelne gezielte Erweiterungen der fachlichen Funktionalität aufweisen.
Abhängig vom Umfang der Änderungen und Erweiterungen in der Anforderungsspezifikation, der Entwurfsspezifikation oder der Implementierung ergibt sich der jeweilige Lösungsraum für ein neu zu erstellendes Softwaresystem.
Im Zuge des Software Reengineering sind vielfältige Probleme zu lösen. So hängt z. B. der Erfolg der (Re-) Dokumentation eines Softwaresystems stark von der Qualität und dem Umfang der vorhandenen Dokumentation ab. Insbesondere sehr alte Softwaresysteme weisen hier erhebliche Defizite auf. Bei der Ablösung der bestehenden Softwaresysteme bestehen hohe Risiken. Abhängig vom Risiko und dem möglichen Einführungsaufwand sind hier geeignete Strategien für die Ablösung eines Softwaresystems zu definieren und umzusetzen [BISKR92, S.125].
Jedes neu erstellte Softwaresystem wird früher oder später zu einem Altsystem. Vor diesem Hintergrund bietet es sich an, Alterungsprozesse bereits bei der Neuerstellung eines Softwaresystems zu berücksichtigen, um die Wartung und ein ggf. später durchzuführendes Software Reengineering zu vereinfachen. Dadurch könnten die Kosten, die im Lebenszyklus eines Softwaresystems entstehen, nachhaltig reduziert werden.
Inhaltsverzeichnis
1 Einleitung
1.1 Überblick
1.2 Zielsetzung des Reengineering
1.3 Aufbau der Arbeit
2 Grundlagen des Reengineering
2.1 Begriffsdefinitionen
2.2 Die technologische Lücke im Software Lebenszyklus
2.3 Reengineering – Modelle
2.4 Argumente für ein Reengineering
2.5 Problemerkennung und Analyse
2.6 Restrukturierung
2.7 Reverse Engineering
2.8 CARE – Werkzeuge und Einsatzmöglichkeiten
3 Offene Probleme und Fazit
Zielsetzung & Themen
Das Hauptziel dieser Arbeit ist die fundierte Untersuchung von Software-Reengineering als Strategie zur Modernisierung und Werterhaltung bestehender Softwaresysteme. Die Forschungsfrage fokussiert sich darauf, wie Reengineering in der Praxis zur Lösung von Wartungsproblemen eingesetzt werden kann, welche methodischen Ansätze existieren und unter welchen Bedingungen sich der Einsatz dieser Verfahren als sinnvoll erweist.
- Grundlagen und Definitionen des Software Reengineerings
- Modelle und Vorgehensweisen im Reengineering-Prozess
- Analyse der technologischen Lücke im Software-Lebenszyklus
- Identifikation und Lösung von Problemen in Altsystemen
- Einsatz von CARE-Werkzeugen zur computerunterstützten Analyse
Auszug aus dem Buch
2.5 Problemerkennung und Analyse
Die erste Phase des Reengineering – Prozesses besteht in der Analyse des Quellcodes. Ziel ist es, den Quelltext in eine geeignete Form zu überführen, mit deren Hilfe weitere Analysen ermöglicht werden. Hierfür stellt man Metamodelle der Implementierungssprache des Systems auf. Unter einem Metamodell ist ein Modell der Eigenschaften und Relationen von Entitäten zu verstehen, welches das Problem aus der eigentlichen Anwendungsdomäne der Programme modelliert. Ein Metamodell ist also ein Model der Programmiersprache selbst, im Gegensatz zum Modell der Anwendungsdomäne, die durch das Programm gegeben ist. Im Metamodell treten Elemente wie Klasse, Methode, Variable, etc. und deren Beziehungen (erbt von, ist ein, …) untereinander auf [TICH01].
Um die Quelltextrepräsentation auf die Metamodellebene zu überführen, werden entsprechende Analysetools benötigt. Ein Parser analysiert den Quelltext und konstruiert ein Systemmodell, das nur aus Elementen des verwendeten Metamodells besteht und meist baum- oder graphenartig aufgebaut ist. In den unterschiedlichen Phasen des Reengineerings werden oft Metamodelle mit unterschiedlichem Abstraktionsniveau verwendet. Bei der Analyse von Abhängigkeiten oder nur bestimmten Systemeigenschaften reichen bisweilen grobe Modelle und Darstellungsformen aus.
Zusammenfassung der Kapitel
1 Einleitung: Dieses Kapitel erläutert die Problematik alternder Softwaresysteme und definiert die Ziele des Reengineerings sowie den Aufbau der Arbeit.
2 Grundlagen des Reengineering: Hier werden zentrale Begriffe, Vorgehensmodelle, die technologische Lücke, Argumente für Reengineering sowie Methoden zur Problemanalyse, Restrukturierung, zum Reverse Engineering und zu CARE-Werkzeugen behandelt.
3 Offene Probleme und Fazit: Das letzte Kapitel diskutiert verbleibende Herausforderungen bei der Visualisierung, Komponentenidentifizierung und automatisierten Transformation und zieht ein Fazit zur Praxis des Reengineerings.
Schlüsselwörter
Software Reengineering, Reverse Engineering, Restrukturierung, Forward Engineering, Software-Lebenszyklus, Altsysteme, Softwarewartung, CARE-Werkzeuge, Quellcodeanalyse, Metamodellierung, Design Recovery, Systemarchitektur, Code-Transformation, Softwarequalität, Objektorientierung.
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Arbeit beschäftigt sich mit dem Software Reengineering als systematische Methode zur Erneuerung und Anpassung bestehender Softwaresysteme, um deren Wartbarkeit und Funktionalität zu verbessern.
Was sind die zentralen Themenfelder?
Zentrale Themen sind die Begriffsbestimmung des Reengineerings, die Analyse der technologischen Lücke, verschiedene Vorgehensmodelle, die praktische Umsetzung von Reverse Engineering und Restrukturierung sowie der Einsatz moderner CARE-Werkzeuge.
Was ist das primäre Ziel oder die Forschungsfrage?
Das Ziel ist die Klärung, wie Reengineering zur Lösung von Wartungsproblemen beitragen kann, welche Techniken dabei effektiv sind und wann sich die Anwendung dieser Prozesse ökonomisch und technisch sinnvoll gestalten lässt.
Welche wissenschaftliche Methode wird verwendet?
Die Arbeit basiert auf einer theoretischen Fundierung durch Literaturanalyse und der Untersuchung etablierter Modelle aus dem Bereich des Software-Engineering und der Wirtschaftsinformatik.
Was wird im Hauptteil behandelt?
Im Hauptteil werden detailliert die Begriffe, die Lebenszyklusmodelle, die Gründe für Reengineering, die Schritte der Problemanalyse, die Techniken der Restrukturierung und die Rolle von Unterstützungswerkzeugen (CARE) dargestellt.
Welche Schlüsselwörter charakterisieren die Arbeit?
Die Arbeit wird maßgeblich durch Begriffe wie Reengineering, Reverse Engineering, Altsysteme, Software-Lebenszyklus und Wartungsproduktivität charakterisiert.
Was genau versteht der Autor unter dem Begriff "Design Recovery"?
Design Recovery bezeichnet den Prozess, bei dem durch eine Kombination aus bestehendem Code, Entwurfsdokumenten und Expertenwissen der ursprüngliche Entwurf eines Softwaresystems rückwirkend rekonstruiert wird.
Warum stellt die Automatisierte Transformation ein Problem dar?
Obwohl Methoden zur Transformation von Quellcode existieren, mangelt es derzeit noch an leistungsfähigen Werkzeugen, die diese Transformationen für eine breite Palette relevanter Programmiersprachen zuverlässig und effizient durchführen können.
- Quote paper
- Aron Koch (Author), 2003, Software Reengineering, Munich, GRIN Verlag, https://www.grin.com/document/14129