Eine der anspruchsvollsten Aufgaben für jeden Programmierer, der Architekt versteht den Code des anderen.
Zum Beispiel bin ich Auftragnehmer, der beauftragt wurde, ein Projekt sehr schnell zu retten. Beheben Sie Fehler, planen Sie globales Refactoring und deshalb brauche ich den effizientesten Weg, den Code zu verstehen. Was ist die Liste der Konzepte, ihre Priorität und beste Werkzeuge dafür?
Von dem, was ich weiß: Reverse-Code-Engineering zum Erstellen von Objektmodellen (Erstellen von Diagramm pro Paket ist nicht so bequem), Erstellen von Sequenzdiagrammen (das Tool verbindet im Debug-Modus mit dem System und generiert Diagramme von der Laufzeit). Einige Visualisierungstechniken verwenden einige Werkzeuge, um nicht nur mit .java
, sondern auch mit z. JPA
Implementoren wie Hibernate
. Generieren Sie ein Diagramm für nicht alle Codebasen, fügen Sie jedoch eine Klasse und dann Klassen hinzu, die von ihr verwendet werden.
Ist Sparx Enterprise Architect im Reverse Engineering State of the Art oder weit davon entfernt? Irgendwelche anderen besseren Werkzeuge? Idealerweise würde dieses Tool mir den Code verständlich machen, als ob ich es selbst geschrieben hätte:)
Das Buch Objektorientierte Reengineering-Muster behandelt das im Detail. Leider gibt es keine Silberkugel: -)
Es enthält jedoch eine Menge nützlicher Techniken zur Übernahme von Legacy-Code. Kurz gesagt
Bei weitem die wichtigsten Werkzeuge sind Ihre Ohren, Ihre Zunge und Ihr Kehlkopf. Fragen Sie die Personen, die mit dem Code vertraut sind - sie werden Ihnen helfen, die allgemeine Architektur besser zu verstehen als alle Software-Tools.
Automatisch reverse-engineered komplette UML-Modelle sind im Allgemeinen fast nutzlos, weil sie nicht zwischen wichtigen Abstraktionen und Implementierungsdetails unterscheiden können - was den ganzen Sinn solcher Modelle ausmacht.
Software-Tools sind hilfreicher, um sehr spezifische Fragen zu beantworten, wenn Sie Details untersuchen, z. B. "Wo wird diese Methode aufgerufen?" oder "welche Klassen diese Schnittstelle implementieren" - jede gute IDE wird das können. Debugger können auch helfen - Breakpoints an Schlüsselpunkten des Codes zu platzieren und den Aufruf-Stack zu betrachten, wenn sie getroffen werden, ist oft sehr aufschlussreich.
Nur um Michaels zu erwähnen, die gute IDEs erwähnen, die Ihnen helfen können:
Ich benutze die folgenden Eclipse-Möglichkeiten sehr oft:
EclipseUML Omondo ist das beste Java-Reverse-Engineering-Tool. Sie kehren den ganzen Java-Code, alle Pakete und sogar die Klasseninteraktion mit der Schnittstelle um, wenn sie nicht im selben Paket sind. Einfach unglaublich. Sie können auch umkehren: - Klasse - Hibernate-Annotationen - JPA-Anmerkungen
Was ich an diesem Tool mag, ist, dass mein Code sauber ist, weil alle Modellinformationen in einem xmi-Format und nicht als Tag in meinem Code gespeichert werden. Sie können auch kleine Dokumentation innerhalb jedes vorhandenen Pakets erstellen, indem Sie Diagramme als Ansicht des Modells verwenden. Einfach wunderbar und respektiert die offizielle Uml 2.2 Spezifikation. Das einzige Problem ist, dass es wirklich zu teuer ist , also ist der Preis ein Halt für mich!
Extrahiert keine High-Level-Architekturen, aber macht es viel einfacher, Ihren Java-Code zu umgehen: unser Java Quellcode-Browser . Dieser liest den Quellcode (und die unterstützenden Klassendateien) und erstellt die Dokumentation im Javadoc-Stil sowie den Quelltext, der in beide Richtungen mit den Javadoc-Informationen verlinkt ist. (Ich bin einer der Hauptverantwortlichen dahinter).
Tags und Links java uml reverse-engineering