Reverse Engineering in Java
Ich weiß, dass die gleiche Frage gestellt wurde, viele Male auf SO und ich habe durch die meisten der threads. Allerdings habe ich auch noch dot nicht eine befriedigende Antwort, so dachte ich, Fragen aus der community.
Ich bin zugewiesen wird die Arbeit zu tun, ein reverse engineering zu einem Modul und die folgenden Probleme:
- Das team keine Ahnung hat, was genau ist in dem zugrunde liegenden Komponente
(Modul ist ein third-party-Lösung) - Team war nur an Tests Teil, so dass Sie nur mir zur Verfügung stellen
Informationen über die Strömung, aber was ist der Ausgangspunkt und die
ist, wo Sie keine Ahnung haben.
Jetzt wollen Sie mich zu Graben, durch den code-Basis und kommen mit Klassendiagrammen, sowie Sequenz-Fluss etc.
Ich war noch nie in meinem beruflichen Leben in dieser Art von situation, wo es ist, keine Ahnung, wo Sie beginnen und wie diese Arbeit zu tun. Das einzige, was ich habe, ist source-code.
Ich habe zwei Fragen, bei denen ich will, dass die Hilfe:
- Gibt es irgendein plugin für Eclipse generieren kann Klassendiagrammen
automatisch aus dem source code? - Was sollte der Ansatz sein, wenn man in dieser Art von situation?
Update:
Ich habe Zugriff auf den Quellcode. So bin ich mehr geneigt, der beste Ansatz, um die Aufgabe zu erfüllen
.class
Dateien/Gläser?ich habe gesagt, um den Zugriff auf den Quellcode
Ja, gute Frage. Ich war in der Annahme gab es keinen source-code, aber wenn es ist, dann ist es eine einfachere Lösung für sicher...
Reverse engineering ist die Nachbildung eines Geräts ausführt, die die gleiche wie ein bereits existierendes Gerät, ohne Kenntnis der Interna. Wenn Sie den source-code für etwas, das Sie nicht von reverse-engineering. Sie sind refactoring, oder dokumentieren Sie es.
InformationsquelleAutor Umesh Awasthi | 2011-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Java-decompilers, die Ihnen helfen, wie JD-Core, und es gibt ein Eclipse-version.
Das Verständnis einer neuen code-Basis ist immer eine schwierige Aufgabe, selbst mit der Dokumentation und Klassendiagrammen. Ich finde es immer hilft, klein zu beginnen. Sie sind offenbar mit einem kleinen Teil der Bibliothek bereits, so würde ich beginnen mit dieser API. Holen Sie sich die Liste der Klassen, die Sie verwenden bereits und versuchen Sie zu verstehen, Sie zuerst. Class-Bibliotheken sind in der Regel von der gleichen person oder ein team von Personen, so gewinnt einen Einblick in, wie strukturieren Sie Ihren code wird Hilfe für das Verständnis der gesamten Bibliothek. Dies gilt unabhängig davon, ob oder nicht Sie verwenden Werkzeuge.
InformationsquelleAutor Eric Giguere
ich würde anfangen mit der Dekompilierung des Moduls und machen Sie sicher, dass der code dekompiliert werden kann, wieder zusammengesetzt in eine funktionierende Bibliothek. Sie können JD zum Beispiel.ich kann jetzt sehen, dass Sie habe den Quellcode schon.Immer ein kompilierbar Quellcode zunächst ist wichtig, da haben Sie, um das hinzufügen von Kommentaren und javadoc, wie Sie zu erkunden. Sie nicht haben, um die Arbeit mit der ursprünglichen binären mehr, nur behandeln die der dekompilierte Quellcode als sehr schlecht dokumentiert normalen code. Es ist auch eine gute Idee, umbenennen von lokalen Variablen und Parameter der Methode, um den code leichter zu Lesen.
Generierung von Klassendiagrammen aus
.java
Dateien sollte einfach sein, dann.Verständnis der flow kann auf zwei Arten erfolgen, manuell oder mit einem profiler. Für beide Methoden müssen Sie den Eintrag zuerst werden die Punkte, aber wenn Sie bereits mit der Bibliothek, dieser sollte ziemlich offensichtlich. Dann haben Sie gerade den aufrufen der API-Methode und Schritt durch den code. Immer machen Sie sich Notizen, etwas Interessantes, der Sie begegnen. (In vielen Arten, Erkundung unbekannter code ist ähnlich wie die Erkundung eines Dungeons in eine gute alte adventure-Spiel.) Konvertieren Sie diese Anmerkungen in den javadoc-Kommentare, so können Sie generieren mehr informativ, javadocs, wie Sie entlang gehen.
Profiler-Methode ist mehr zu entdecken, die Allgemeinen Muster der Anrufe, aber alle profiler sollte einen call-stack-Ansicht, die Sie verwenden können.
InformationsquelleAutor biziclop
Die Antwort auf Frage (2) wird, hängt von Ihrer Antwort auf meinen Kommentar, aber für Frage (1), check-out auf dieser Seite, dass gibt ein tutorial auf, wie mit eclipse erzeugen Sie ein UML-Klassendiagramm von der Quelle.
InformationsquelleAutor Chris Thompson