Reverse Engineering
Reverse Engineering bezeichnet die Umkehrung des Entwicklungs- bzw. Produktionsprozesses vom Produkt hin zur Konstruktionszeichnung bzw. zum Quellcode. Einsatzgebiete des Reverse Engineerings sind die Produktentwicklung, die Qualitätsprüfung und die Fehlersuche.
Reverse Engineering
Reverse Engineering bezeichnet die Umkehrung des Entwicklungs- bzw. Produktionsprozesses vom Produkt hin zur Konstruktionszeichnung bzw. zum Quellcode. Einsatzgebiete des Reverse Engineerings sind die Produktentwicklung, die Qualitätsprüfung und die Fehlersuche.
Das Vorgehen, ein Produkt (z.B. ein Konkurrenzprodukt) zu analysieren, um daraus Erkenntnisse für seine Weiterentwicklung zu gewinnen, stammt aus dem Maschinenbau. Dort werden reale Objekte mit Hilfe verschiedener Verfahren (taktile Messungen, 3D-Scan-Verfahren, Computer-Tomographie, weitere optische Messverfahren, Ultraschallvermessung) vermessen und daraus CAD-Modelle erstellt. In der Software-Entwicklung bedeutet Reverse Engineering entweder die Dekompilierung des ausführbaren Maschinencodes oder dessen direkte Analyse.
Eine grundlegende, allgemeine Definition von Reverse Engineering liefern Elliot J. Chikofsky and James H. Cross II in: Reverse Engineering and Design Recovery: A Taxonomy, IEEE Software, vol. 7, no. 1, January 1990, DOI 101109/52.43044:
"Reverse engineering ist the process of analyzing a subject system to
- identify the system’s components and their interrelationships and
- create representations oft he system in another form or at a higher level of abstraction."
Während bei Hardware Reverse Engineering in der Regel nicht gegen Schutzrechte verstößt, da Patente lediglich die Produktion neuer Produkte mit der gleichen Technik untersagen, ist in den Lizenzbedingungen von Software meist Reverse Engineering explizit untersagt. Für die Europäische Union untersagt die "Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs (Codified version)" das Dekompilieren eines Computerprogrammes zu anderen Zwecken außer zur Anpassung von Schnittstellen.
Reverse Engineering im Qualitäts- und Konfigurationsmanagement
Als produktbezogene Methode ist Reverse Engineering von besonderer Bedeutung im Qualitäts- und Konfigurationsmanagement. Bei Hardware-Entwicklungen kann mithilfe von Reverse Engineering z.B. ein Konfigurationsaudit durchgeführt werden, bei dem vom Prüfling ein CAD-Modell erstellt und mit der Konstruktionszeichnung abgeglichen wird. In der Software-Entwicklung spielt Reverse Engineering z.B. für das Anpassen von Schnittstellen und für die Analyse nicht dokumentierter Programme eine Rolle.
Die Techniken des Reverse Engineerings können auch im Betrieb eines Produkts eingesetzt werden, z.B. bei der Konstruktion von Ersatzschaufeln für Turbinen.
Reverse Engineering und Reengineering
Reverse Engineering ist der erste Arbeitsschritt im Reengineering-Prozess. Anschließend werden neue Anforderungen in das Konzept integriert und ein neues Produkt erstellt (Forward Engineering).