Wenn es darum geht, Altsysteme durch neue IT-Systeme zu ersetzen kommt man oft bei dem Thema Reverse Engineering nicht vorbei. Unzureichende oder nicht vorhandene Dokumentation der Funktionalität der Altsysteme erschweren die Spezifikation der Soll-Funktionalität neuer Systeme. Das ursprünglich aus dem Maschinenbau stammende Verfahren des Reverse Engineerings ergibt Aufschluss wie die einzelnen Programm-Bestandteile funktionieren und erleichtert so ein komplettes Funktionsverständnis.
Reverse Engineering erlaubt es den Anwendern den Entwicklungsprozess einer Software umzukehren, die Software also quasi zu „zerlegen“, und ermöglicht so wertvolle Einblicke in deren Funktionalität. Die Rückentwicklung ist bis hinunter zur Quellcode Ebene eines Systems möglich. Ausgehend davon kann die Architektur und die Funktionsweise der Software analysiert, verstanden und dokumentiert werden. Diese Schritte dienen einerseits der Optimierung bestehender Systeme oder der Neuentwicklung neuer Systeme, die Funktionen der Alt-Systeme beinhalten sollen.
Unter Reverse Engineering von Software wird zumeist einer der folgenden drei Prozesse verstanden:
Wiederherstellung des Quellcodes einer Software
Der Quellcode ist der in einer Programmiersprache geschriebene, für den Menschen lesbare, Text einer Software. Diesen Code wird mithilfe des Compilers in eine für den Computer lesbare Maschinensprache umgewandelt. Um diesen Schritt rückgängig zu machen wird ein Decompiler eingesetzt. Meistens ist es nicht möglich den gesamten Quellcode zu rekonstruieren. Weil das Verstehen der Idee hinter der Software das Ziel ist, ist es auch nicht notwendig den vollständigen Originalcode zu analysieren. Bereits mit lückenhaftem Code können Verhaltensanalysen der Software durchgeführt werden und eine Dokumentation daraus generiert werden.
Kommunikationsprotokolle von Software analysieren
Reverse Engineering kann auch verwendet werden, um unbekannte Kommunikationsprotokolle von Software zu erschließen, um neue Treiber anzubinden oder Voraussetzungen für Schnittstellen zu definieren.
Nachträgliche Modellerstellung einer Software
Der rekonstruierte Quellcode wird in ein Modell übertragen, das anschließend weiterverarbeitet werden kann. Die grafische Modellierungssprache UML ist hierbei die meistverwendete Sprache zur grafischen Spezifikation, Konstruktion und Dokumentation von Software.
Anwendungsmöglichkeiten
Reverse Engineering erfüllt eine große Anzahl an Anwendungsmöglichkeiten:
- Qualitätsmanagement und Weiterentwicklung eigener Software
- Analyse von Kommunikationsprotokollen einer Software
- Aufspüren von Softwarefehlern
- Verständnis für die Funktionalität der Software erlangen
- Verbesserung der Softwarekompatibilität
- Dokumentationserstellung
Sysparency bietet mithilfe von Reverse Engineering eine automatisierte Methode zur Dokumentationserstellung, die den Prozess der nachträglichen Softwaredokumentation vereinfacht und eine unkompliziertere Transformation ermöglicht.