Wie kann ich UML-Diagramme (insbesondere Sequenzdiagramme) aus vorhandenem Java-Code generieren?
Wie kann ich UML-Diagramme (insbesondere Sequenzdiagramme) aus vorhandenem Java-Code generieren?
Antworten:
Ist was ich benutzt habe. Es ist einfach aus dem Repository zu installieren :
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
Und erzeugt ganz schöne UML-Diagramme:
Der ObjectAid UML Explorer unterscheidet sich von anderen UML-Tools. Es verwendet die UML-Notation, um eine grafische Darstellung des vorhandenen Codes anzuzeigen, die genauso genau und aktuell ist wie Ihr Texteditor und gleichzeitig sehr einfach zu verwenden ist. Mehrere einzigartige Funktionen machen dies möglich:
- Ihr Quellcode und Ihre Bibliotheken sind das angezeigte Modell. Sie werden nicht in ein anderes Format zurückentwickelt.
- Wenn Sie Ihren Code in Eclipse aktualisieren, wird auch Ihr Diagramm aktualisiert. Es ist nicht erforderlich, den Quellcode zurückzuentwickeln.
- Durch das Refactoring werden sowohl Ihr Diagramm als auch Ihr Quellcode aktualisiert. Wenn Sie ein Feld umbenennen oder eine Klasse verschieben, spiegelt Ihr Diagramm einfach die Änderungen wider, ohne die Synchronisierung zu beeinträchtigen.
- Alle Diagramme in Ihrem Eclipse-Arbeitsbereich werden mit entsprechenden Refactoring-Änderungen aktualisiert. Bei Bedarf werden sie aus Ihrem Versionskontrollsystem ausgecheckt.
- Diagramme sind vollständig in die Eclipse-IDE integriert. Sie können Java-Klassen aus jeder anderen Ansicht in das Diagramm ziehen, und diagrammbezogene Informationen werden gegebenenfalls in anderen Ansichten angezeigt.
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.
Was ist Ihre Codebasis? Java oder C ++?
eUML2 für Java ist ein leistungsstarker UML-Modellierer, der für den Java-Entwickler in Eclipse entwickelt wurde. Die kostenlose Edition kann für kommerzielle Zwecke verwendet werden. Es unterstützt die folgenden Funktionen:
- CVS und Team Support
- Entwickelt für große Projekte mit mehreren und anpassbaren Modellansichten
- Helios-konform
- Echtzeit-Code- / Modellsynchronisation
- UML2.1-konform und Unterstützung von OMG XMI
- JDK 1.4 und 1.5 Unterstützung
Die kommerzielle Ausgabe bietet:
Advanced Reverse Engineering
- Leistungsstarke Tools zur Analyse wahrer Abhängigkeiten
- UML-Profil und MDD
- Datenbank-Tools
- Anpassbare Vorlagenunterstützung
Ich bin einer der Autoren, daher kann die Antwort voreingenommen sein. Es ist Open Source (Apache 2.0), aber das Plugin ist nicht kostenlos. Sie müssen (offensichtlich) nicht bezahlen, wenn Sie es lokal klonen und erstellen.
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
Wie wäre es mit PlantUML ? Es ist nicht für Reverse Engineering !!! Es ist für das Engineering, bevor Sie codieren.
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.
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.
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.
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. ;-);
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:
Es ist auch möglich, weitere Diagramme zu erstellen. Siehe Dokumentation .
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.
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.
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
Ich habe festgestellt, dass das SequenceDiagram-Plugin für Intellij ebenfalls eine gute Option ist.
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.
Es gibt ein kostenloses Tool namens binarydoc, das UML Sequence Diagram
oder Control Flow Graph
( CFG
) aus bytecode
(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
: