Software Reverse Engineering

Legacy-Software-Systeme sind für einen Großteil der Unternehmen im täglichen Geschäftsablauf erfolgskritisch. Diese Software-Systeme stehen im Mittelpunkt der bestehenden IT-Architektur. Ihre Schnittstellen sind tief in den Rest der IT-Landschaft eingebunden und bieten unentbehrliche Daten für die Business Services. Im Laufe der Jahrzehnte wurden diese Legacy-Systeme schrittweise modernisiert oder zusätzliche Funktionalität wurde dem System hinzugefügt. In der Regel haben diese Erweiterungen mehr Komplexität zu den Systemen hinzugefügt. Aufgrund der langjährigen Weiterentwicklung der Software-Systeme kamen meist zusätzliche Programmiersprachen und Technologie-Stacks hinzu. >Ablöse- oder Modernisierungsprojekte von Bestandssoftware-Systeme sind oft groß angelegte und mehrjährige Projekte. Wegen der Komplexität der gewachsenen Systeme gibt es ein außergewöhnliches Risiko, dass Ersatz- oder Modernisierungsprojekte scheitern. Auf der anderen Seite sind die angebotenen Business-Services aus diesen Systemen entscheidend für den Geschäftserfolg und moderne Organisationen haben keine Wahl, diese gewachsenen Software-Systeme zu modernisieren.

Software Reverse Engineering

Der Zweck von Software Reverse Engineering ist die Vermessung, Dokumentation und Kartographierung der Software zur verbesserten Unterstützung der Wartung und Weiterentwicklung der bestehenden Software-Systeme. Diese Unterstützung kann in vielerlei Hinsicht erfolgen, von denen fünf hier explizit angesprochen werden:

  • Die Struktur der Systeme besser verstehen: Verbessertes Verständnis der Verbindungen zwischen den Systemteilen und Source-Code Artefakten
  • Visualisierte Darstellung der Systemkomplexität: Generieren grafischer Dokumente, die die Architektur ausgewählter Komponenten sowie die Architektur des Systems als Ganzes darstellen
  • Durchführung von Folgenabschätzungen: Aufwandsschätzungen und Auswirkungsanalysen zu den vorgeschlagenen Änderungen und Korrekturen
  • Berechenbarkeit: Berechnen Sie die Kosten der einzelnen Wartungsaufgaben
  • Traceability: Nachvollziehbarkeit der Verknüpfungen zwischen semantischen Ebenen einer Software, d.h. zwischen den Anforderungen, Design, Code und Testfällen
  • Dokumentation: Dokumentation der Funktionalität eines Softwaresystems. Darstellung der Abhängigkeiten als Graph und mathematische Berechnungen als Formeln.