UML-Klassendiagramm aus Java-Projekt generieren [geschlossen]


200

Gibt es ein gutes Tool, mit dem Sie Java-Klassen in UML zurückentwickeln können, um einen Überblick über die Beziehung meiner Klassen zueinander zu erhalten? Es muss nicht aus der JAR-Datei dekompiliert werden, da ich die Quellen habe. Ich weiß, dass es einige gibt, aber die meisten von ihnen können nur einzelne Klassen erzeugen. Ich hoffe, es gibt ein Tool, mit dem Klassendiagramme erstellt werden können, das einen Überblick über die Zusammenarbeit aller meiner aktuellen Klassen und Pakete zeigt, sodass ich mein aktuelles Architekturdesign analysieren kann. Analysieren ist natürlich eine Sache. Die andere dient Dokumentationszwecken.

Ich kenne bisher einige. Sie können jedoch kein Übersichtsklassendiagramm erstellen. Hier ist eine Liste der Java UML-Tools, die ich ausprobiert habe und die Reverse Engineering ausführen können, die jedoch kein Übersichtsklassendiagramm meines gesamten Projekts erstellen können:

  • StarUML (Wirklich gutes UMS- Tool für OpenSource , kann jedoch kein Übersichtsklassendiagramm generieren)
  • ArgoUML (Es ist langsam und träge und es stürzt immer wieder ab)
  • UModel (Dies ist eine kommerzielle Software. Ich habe sie vor einiger Zeit verwendet, fand sie aber schwierig zu verwenden.)
  • MS Visio (Java UML Reverse Engineering wird nicht unterstützt. Nur für VB)

Gibt es weitere Empfehlungen, die dieser Liste hinzugefügt werden können? Und hoffentlich kann ein Überblick Java-Klassendiagramm generieren. Ich benutze übrigens Eclipse.


1
Um noch ein paar Möglichkeiten hinzuzufügen, gibt es in Eclipse Papyrus. Aber das Plugin zur Codegenerierung hat bei mir leider nicht funktioniert. Es gibt zu viele Abhängigkeiten, um sie zu installieren. Ich habe am Ende eUML2 verwendet.
Carven

Sie können sich UML Lab ansehen - es ist kommerziell - aber es verfügt über ein sehr ausgeklügeltes und anpassbares Reverse Engineering (und Roundtrip).
Christian

Es gibt ein kostenloses Tool namens JGrasp, das helfen kann.
HRJ

Ich habe diese Methode verwendet: youtube.com/watch?v=HwBep8DmBVw Der einzige Nachteil ist: Es ist nicht kostenlos, aber Sie können eine 30-Tage-Testversion haben, was in meinem Fall ausreichend war. HINWEIS: Es ist nicht mein Video, ich habe es nur beim Googeln gefunden.
Dazito

@Carven, bitte lassen Sie mich wissen, welches Plugin Sie verwendet haben? Derzeit suche ich nach der automatischen Generierung von Sequenzdiagrammen bei Ausführung von junit / test.
User27854

Antworten:


46

Ich verwende das eUML2- Plugin von Soyatec unter Eclipse und es funktioniert gut für die Generierung von UML mit dem Quellcode. Dieses Tool ist bis Eclipse 4.4.x nützlich


Hat die kostenlose Edition diese Funktion?
Carven

Ja. Ich benutze die kostenlose Edition.
Heisenbug

1
Vielen Dank! ;) Ich habe es nicht ausprobiert, weil ich immer dachte, dass die kostenlose Version keinen Code für die UML-Generierung enthält.
Carven

38
Es nervt. Schwer. Anweisungen möchten, dass Benutzer allen Eigenschaften ein 'f'-Zeichen voranstellen, um sie zu beschnüffeln. Es ist auch destruktiv und fügt ALLEN Klassendateien eine Reihe eigener Kommentare hinzu. Anweisungen sind auch nicht intuitiv. Wenn jemand meine Erfahrung widerlegen kann (basierend auf der aktuellen Version in Kepler), tun Sie dies bitte. Und nur drei Wochen Probezeit. Jetzt deinstallieren.
Ingyhere

1
Es hat mir nicht gefallen. Es ist nicht kompatibel neueste Version von Eclipse / Sauerstoff.
Tayfun Yaşar

108

Ich habe Class Visualizer geschrieben , der das macht. Es ist ein kostenloses Tool mit allen genannten Funktionen - ich persönlich benutze es für die gleichen Zwecke, wie in diesem Beitrag beschrieben. Für jede durchsuchte Klasse werden 2 sofort generierte Klassendiagramme angezeigt: Klassenbeziehungen und Klassen-UML-Ansicht. Das Klassenbeziehungsdiagramm ermöglicht das Durchlaufen der gesamten Struktur. Es bietet volle Unterstützung für Anmerkungen und Generika sowie spezielle Unterstützung für JPA-Entitäten. Funktioniert sehr gut mit großen Projekten (Tausende von Klassen).


8
Das Programm ist wirklich gut. Danke, dass du es erstellt hast und für den Link.
Igor Rodriguez

17
Jonatan, aus Höflichkeit könnte / sollte man der Antwort einen Haftungsausschluss hinzufügen, wenn man Produkte, Dienstleistungen usw. vorschlägt, an denen man beteiligt ist.
dbm

2
Das ist echt cool. Angesichts unseres jahrzehntealten, sehr komplexen Projekts - ein Großteil des Codes ist JDK 1.1-Jahrgang - bietet dies einen großartigen Überblick darüber, wie die Dinge miteinander verbunden sind. Als Ergänzung zum Quellcode und zu Javadoc bietet es einen enormen Wert zu einem fantastischen Preis.
Gerardw

2
Ist Class Visualizer ein herausragendes und nützliches Werkzeug? JA, SO IST ES. Wie bezahlen wir dafür? Es ist kostenlos zum Download! Wie lernen wir es zu benutzen? Verbrachte 10 Minuten damit, das Video anzusehen!
Martin Meeser

2
Ich habe eine Klasse, die eine Methode einer anderen Klasse im selben Projekt / Ordner aufruft, aber diese andere Klasse wird nicht angezeigt. Ich habe alle möglichen Abhängigkeiten hinzugefügt, einschließlich aller JDK8-Gläser. Habe ich etwas verpasst?
Wassermann Power

2

Wie wäre es mit dem Omondo Plugin für Eclipse ? Ich habe es benutzt und finde es sehr nützlich. Wenn Sie Diagramme für große Quellen erstellen, müssen Sie Eclipse möglicherweise mit mehr Speicher starten.


Der Link funktioniert nicht
Blip

2

Ich würde sagen, MoDisco ist bei weitem das mächtigste (obwohl es wahrscheinlich nicht das einfachste ist, mit dem man arbeiten kann).

MoDisco ist ein generisches Reverse Engineering-Framework (damit Sie Ihr Reverse Engineering-Projekt anpassen können. Mit MoDisco können Sie sogar das Verhalten der Java-Methoden zurückentwickeln, nicht nur die Struktur und Signaturen), sondern auch einige vordefinierte Funktionen wie die Generierung von Klassen Diagramme aus Java-Code, die Sie benötigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.