Reverse Engineering

Es gibt viele Gründe, warum Applikationen, die in Assembler geschrieben wurden noch im produktiven Einsatz sind und warum diese Applikationen auch weiterhin benötigt werden. Angesichts des Alters dieser Anwendungen sehen sich Unternehmen jedoch zunehmend mit Problemen konfrontiert:

  • schlechte oder gar keine Dokumentationen
  • mangelnder Nachwuchs bei Wartung und -Pflege
  • keine Alternativen zu geschriebenen Assembler-Applikationen
  • operationelles Risiko

Die Lösung sind intelligente und standardisierte Softwaretechniken. Sie beeinflussen die Merkmale von Assembler-Anwendungen und optimieren somit deren Wartbarkeit. :conwic hat hierzu ein modulares Leistungsprogramm entwickelt, welches unsere Kunden in allen Phasen des Reengineering unterstützt:

Prozess Reverse Engineering von Altapplikationen
Machbarkeitsanalyse

Im Rahmen der Machbarkeitsanalyse werden repräsentative Assemblermodule und die vorliegende Dokumentation analysiert. Dabei geht es zunächst darum festzustellen, ob mit den zur Verfügung gestellten Informationen und Unterlagen die weiteren Phasen durchgeführt werden können. Des Weiteren werden die Module nach bestimmten Kriterien kategorisiert, um den zu erwartenden Aufwand für die weiteren Aktivitäten für diese und vergleichbare Module abschätzen zu können.

Der Aufwand für die Analyse und (Nach-) Dokumentation ist in der Regel umso höher, je komplexer das Programm ist, je weniger das Programm dokumentiert ist und je schlechter die Verständlichkeit ist. Das hängt wiederum von der Dokumentation, Inline-Dokumentation, der Programmstruktur ab, wie die Datenstrukturen und Datenfelder angesprochen werden bzw. wie sie dokumentiert sind, ob es redundanten Code, toten Code, nicht dokumentierte Schnittstellen usw. gibt.

Nachdokumentation

Im Rahmen der Nachdokumentation werden die Module entsprechend den Dokumentationsrichtlinien des Kunden und/oder auf der Basis von Templates, die von :conwic zur Verfügung gestellt werden, nachdokumentiert. Dabei werden neben dem Sourcecode weitere Unterlagen, sofern vorhanden, die die Nachdokumentation erleichtern können, herangezogen.

Untersuchungen besagen, dass 40% und mehr des Aufwandes in einem Reverse Engineering Projekt für das Verstehen der Programme aufgewendet werden müssen.

Bei wenig oder gar nicht dokumentierten und "schlecht" programmierten Assemblerprogrammen erfordert dies, dass alle Elemente des Assemblermoduls zunächst nachvollzogen werden müssen:

  • Analyse und Beschreibung der Datenstrukturen, Input und Output und schrittweise Analyse der Programmlogik an Hand des Sourcecode
  • Schrittweise Dokumentation der Programmstruktur und des Programmablaufs

um dann eine Dokumentation vornehmen zu können.

Programmspezifikation

Die Programmdokumentation, die Umstellungs- und Programmierrichtlinien bilden die Basis für die Erstellung einer eigenständigen Programmvorgabe für die jeweils vorgesehene Zielsprache. Die Erstellung einer eigenständigen Programmiervorgabe erlaubt es, die Erstellung in der Zielsprache personell (und arbeitsorganisatorisch) von der Analyse zu trennen.

Im Rahmen der Nachdokumentation werden die Module entsprechend den Dokumentationsrichtlinien des Kunden und/oder auf der Basis von Templates, die von :conwic zur Verfügung gestellt werden, nachdokumentiert. Dabei werden neben dem Sourcecode weitere Unterlagen, sofern vorhanden, die die Nachdokumentation erleichtern können, herangezogen.

Implementierung / Integration

Wir verfügen über qualifizierte Mitarbeiter mit vielen Jahren Erfahrung in der Implementierung von Anwendungen in unterschiedlichen Zielsystemen (Cobol, PL/1, aber z. B. auch Java), so dass auch die Implementierung in der Zielsprache, sowie Test und Systemintegration komplett übernommen werden oder unterstützt werden kann.

Bei größeren Vorhaben sollte das komplette Vorgehen an Hand von repräsentativen Beispielen (1. Paket) durchlaufen werden. Auf der Basis der dabei gemachten Erfahrungen werden dann die weiteren Pakete inkrementell geplant und das Vorgehen wird ggf. interativ für die kundenspezifische Situation angepasst.