Wie kann ich UML-Diagramme (insbesondere Sequenzdiagramme) aus vorhandenem Java-Code generieren?
java
uml
reverse-engineering
diagram
Jonathan
quelle
quelle
Antworten:
ObjectAid UML Explorer
Ist was ich benutzt habe. Es ist einfach aus dem Repository zu installieren :
Und erzeugt ganz schöne UML-Diagramme:
Beschreibung von der Website:
quelle
An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
BEARBEITEN: Wenn Sie Designer sind, ist Papyrus die beste Wahl. Es ist sehr fortschrittlich und voller Funktionen. Wenn Sie jedoch nur einige UML-Diagramme und eine einfache Installation skizzieren möchten, ist ObjectAid ziemlich cool und erfordert keine Plugins I. habe es gerade über Eclipse-Java EE installiert und funktioniert super!
UPDATE 11. Oktober 2013
Mein ursprünglicher Beitrag war im Juni 2012. Viele Dinge haben sich geändert. Viele Tools sind gewachsen und andere nicht. Da ich wieder einige Modellierungen durchführen und auch einige Antworten auf den Beitrag erhalten werde, habe ich beschlossen, Papyrus erneut zu installieren und werde andere mögliche UML-Modellierungslösungen erneut untersuchen. Die UML-Generierung (mit Synchronisationsfunktion) ist nicht für den Softwareentwickler, sondern für den durchschnittlichen Entwickler sehr wichtig.
Ich wünschte, Papyrus hätte eine einfache Möglichkeit, Reverse Engineer-Klassen in ein UML-Klassendiagramm umzuwandeln, und es wäre super cool, wenn dieses Reverse Engineering eine Synchronisationsfunktion hätte, aber leider ist das Papyrus-Projekt voller Funktionen, und ich denke, die Entwickler dort haben bereits viel zur Hand, da auch viele Aktionen, die Sie über Papyrus ausführen, geben Ihnen möglicherweise keine Antwort und es passiert einfach nichts, aber das kommt ohnehin nicht in Frage.
Die Antwort (11. Oktober 2013)
Werkzeuge
Schritte
Klicken Sie mit der rechten Maustaste auf MyProject_kdm.xmi -> Discovery -> Discoverer -> UML-Modell erneut aus KDM-Code ermitteln. In einem Eigenschaftsdialog wird die Serialisierungs-Requisite auf TRUE gesetzt, um eine Datei mit dem Namen MyProject.uml zu generieren
Verschieben Sie die generierte MyProject.uml, die im Stammverzeichnis generiert wurde, in den UML-Ordner. Eclipse fragt Sie, ob Sie sie ersetzen möchten. Klicken Sie auf Ja. Was wir hier gemacht haben, war, dass wir ein leeres Modell durch ein generiertes ersetzt haben.
ALT + W -> Ansicht anzeigen -> Papyrus -> Modell-Explorer
In dieser Ansicht finden Sie Ihre Klassen wie auf dem Bild
Klicken Sie in der Ansicht mit der rechten Maustaste auf das Stammmodell -> Neues Diagramm
Beginnen Sie dann damit, Klassen aus der Ansicht in das Diagramm aufzunehmen
Einige Eigenschaften
So zeigen Sie die Klassenelemente (Variablen, Funktionen usw.) an Klicken Sie mit der rechten Maustaste auf eine Klasse -> Filter -> Inhalte ein- / ausblenden Voila !!
Sie können standardmäßige benutzerfreundliche Farbeinstellungen über Fenster -> Referenzen -> Papyrus -> Klassendiagramm vornehmen
Eine sehr wichtige Einstellung ist Anordnen, wenn Sie die Klassen löschen. Sie erhalten einen engen Rechtsklick auf eine leere Stelle in einem Klassendiagramm und klicken auf Alle anordnen
Pfeile in der Modell-Explorer-Ansicht können in das Diagramm aufgenommen werden, um die Verallgemeinerung, Realisierung usw. Zu zeigen
Nach all dem zeigen Ihre Einstellungen Diagramme wie
Soweit ich weiß, ist die Synchronisierung nicht verfügbar. Sie müssen neue Klassen manuell importieren.
Das ist alles, und kaufen Sie keine kommerziellen Produkte, es sei denn, Sie brauchen sie wirklich. Papyrus ist wirklich großartig und raffiniert, statt zu spenden oder so.
Haftungsausschluss: Ich habe keine Beziehung zu den Papyrusleuten. Tatsächlich mochte ich Papyrus zuerst nicht, bis ich viel recherchiert und es mit etwas Geduld erlebt habe. Und ich werde wieder auf diesen Beitrag zurückkommen, wenn ich andere kostenlose Tools ausprobiere.
quelle
Was ist Ihre Codebasis? Java oder C ++?
quelle
Auf Intellij IDEA kann ZenUML ein Sequenzdiagramm aus Java-Code generieren.
Überprüfen Sie es unter https://plugins.jetbrains.com/plugin/12437-zenuml-support
Quellcode: https://github.com/ZenUml/jetbrains-zenuml
quelle
Wie wäre es mit PlantUML ? Es ist nicht für Reverse Engineering !!! Es ist für das Engineering, bevor Sie codieren.
quelle
Ich habe ein Maven-Plugin entwickelt, das sowohl als Plugin-Ziel über die CLI ausgeführt oder als Abhängigkeit importiert und programmgesteuert mithilfe des Parsers importiert werden kann
@see Main#main()
, um eine Vorstellung davon zu erhalten, wie.Es rendert PlantUML src-Code der gewünschten Pakete rekursiv , den Sie bei Bedarf manuell bearbeiten können (hoffentlich nicht). Anschließend können Sie das UML-Diagramm als PNG-Bild rendern, indem Sie den Code in die plantUML-Seite einfügen oder das Jar von plant herunterladen.
Überprüfen Sie es hier https://github.com/juanmf/Java2PlantUML
Beispiel für ein Ausgabediagramm:
Jeder Beitrag ist mehr als willkommen. Es hat eine Reihe von Filtern, die die Ausgabe anpassen, aber ich habe diese noch nicht in den CLI-Parametern des Plugins verfügbar gemacht.
Es ist wichtig zu beachten, dass es nicht auf Ihre * .java-Dateien beschränkt ist, sondern auch UML-Diagramme src aus Ihren Maven-Abhängigkeiten rendern kann. Dies ist sehr praktisch, um Bibliotheken zu verstehen, von denen Sie abhängig sind. Es überprüft tatsächlich kompilierte Klassen mit Reflexion, sodass keine Quelle benötigt wird
Seien Sie der Erste, der es bei GitHub spielt: P.
quelle
Ich würde EclipseUML von Omondo für den allgemeinen Gebrauch empfehlen , obwohl ich vor einigen Monaten einige Probleme mit meinen Webprojekten hatte. Sie hatten zu einem bestimmten Zeitpunkt eine kostenlose Ausgabe, die aber angeblich nicht mehr beworben wird.
Wenn Sie sich wirklich für Reverse Engineering-Sequenzdiagramme aus dem Quellcode interessieren, würde ich jTracert empfehlen .
In Bezug auf Eclipse-Projekte selbst unterstützt das Eclipse UML2 Tools- Projekt möglicherweise das Reverse Engineering, obwohl ich seine Verwendung in der Praxis noch nie gesehen habe.
Das MoDisco- Projekt (Model Discovery) Eclipse GMT-Projekt scheint klarer zu sein, um Ihr Ziel zu erreichen. Die Liste der technologie-spezifischen Tools wäre ein guter Anfang.
quelle
jSonde
ist in der oben gezeigten URL nicht verfügbar. Eine Website und den Quellcode finden Sie in Github: github.com/bedrin/jsonde .Ich fand das Green Plugin sehr einfach zu bedienen und Klassendiagramme aus dem Quellcode zu generieren. Versuche es :). Kopieren Sie einfach das Plugin in Ihr Plugin-Verzeichnis.
quelle
Sie können auch den Netbeans-UML-Modellierer ausprobieren. Ich habe es verwendet, um Javacode zu generieren, den ich in meinen Eclipse-Projekten verwendet habe. Sie können sogar Eclipse-Projekte in Netbeans importieren und die Eclipse-Einstellungen mit den Netbeans-Projekteinstellungen synchronisieren.
Ich habe mehrere UML-Modellierer für Eclipse ausprobiert und war mit ihnen nicht zufrieden. Sie waren entweder instabil, kompliziert oder einfach nur hässlich. ;-);
quelle
Verwenden von IntelliJ IDEA. Um ein Klassendiagramm zu erstellen, wählen Sie das Paket aus und drücken Sie Ctrl+ Alt+ U:
Standardmäßig werden nur Klassennamen und nicht alle Abhängigkeiten angezeigt. So ändern Sie es: Klicken Sie mit der rechten Maustaste auf> Kategorien anzeigen ... und Abhängigkeiten anzeigen:
Um ein Abhängigkeitsdiagramm (UML-Bereitstellungsdiagramm) zu erstellen und maven zu verwenden, gehen Sie zu Ansicht -> Werkzeugfenster -> Maven-Projekte und drücken Sie Ctrl+ Alt+ U:
Das Ergebnis:
Es ist auch möglich, weitere Diagramme zu erstellen. Siehe Dokumentation .
quelle
Sie können den 30-Tage-Evaluierungs-Build von EclipseUML für Eclipse 3.5 verwenden: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Dies ist nicht der neueste Build 3.6, aber ziemlich gut und Sie müssen es nicht zum Testen und Reverse Engineering erwerben.
Reverse Engineering: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html
Live-Flash-Demo: http://www.ejb3.org/reverse.swf
EclipseUML Omondo ist das beste Tool der Welt für Java. Nur eUML scheint auf diesem Live-Java-Synchronisationsmarkt damit zu konkurrieren, aber eUML fügt dem Code Modell-Tags hinzu, was wirklich sehr, sehr schlecht ist und für mich definitiv kein Problem darstellt.
quelle
Das mit Abstand beste Tool, das ich für das Reverse Engineering und Roundtripping Java verwendet habe -> UML ist Borland's Together . Es basiert auf Eclipse (nicht nur einem einzelnen Plugin) und funktioniert wirklich gut.
quelle
Ich schlage PlantUML vor. Dieses Tool ist sehr nützlich und einfach zu bedienen. PlantUML verfügt über ein Plugin für Netbeans, mit dem Sie aus Ihrem Java-Code ein UML-Diagramm erstellen können.
Sie können das PlantUML-Plugin auf folgende Weise in den Netbeans installieren:
Netbeans-Menü -> Extras -> Plugin
Wählen Sie nun Verfügbare Plugins aus, suchen Sie PlantUML und installieren Sie es.
Weitere Informationen finden Sie auf der Website: www.plantuml.com
quelle
Ich habe festgestellt, dass das SequenceDiagram-Plugin für Intellij ebenfalls eine gute Option ist.
quelle
Ein weiteres Modellierungswerkzeug für Java ist (meine) Website GitUML . Generieren Sie UML-Diagramme aus Java- oder Python-Code, der in GitHub-Repositorys gespeichert ist.
Eine Schlüsselidee bei GitUML ist es, eines der Probleme mit der "Dokumentation" zu lösen: Diagramme sind immer veraltet. Mit GitUML werden Diagramme automatisch aktualisiert, wenn Sie Code mit git pushen.
Durchsuchen Sie Community-UML-Diagramme. Dort gibt es einige Java-Entwurfsmuster. Surfen Sie durch beliebte GitHub-Repositories und visualisieren Sie die darin enthaltenen Architekturen und Muster.
Erstellen Sie Diagramme mit Point & Click. Es gibt keinen Drag-Drop-Editor. Klicken Sie einfach auf die Klassen im Repository-Baum, die Sie visualisieren möchten:
Die zugrunde liegende Technologie basiert auf PlantUML. Dies bedeutet, dass Sie Ihre Diagramme mit zusätzlichem PlantUML-Markup verfeinern können.
quelle
Es gibt ein kostenloses Tool namens binarydoc, das
UML Sequence Diagram
oderControl Flow Graph
(CFG
) ausbytecode
(anstelle des Quellcodes) einer Java-Methode generieren kann .Hier ist ein Beispieldiagramm binarydoc, das für die Java-Methode java.net.AbstractPlainSocketImpl.getInputStream generiert wurde :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
:quelle