it-swarm.com.de

PHP UML Generator

Wie erstelle ich ein UML-Diagramm basierend auf vorhandenen Klassen in PHP?

107
Jeffrey04

Ich empfehle dringend BOUML welches:

  • ist extrem schnell (schnellstes UML-Tool, das jemals erstellt wurde, siehe Benchmarks ),
  • hat eine grundsolide Unterstützung für PHP-Import und -Export (unterstützt auch C++, Java, Python)
  • ist Multiplattform (Linux, Windows, andere Betriebssysteme),
  • ist voll ausgestattet, beeindruckend intensiv entwickelt (siehe Entwicklungsgeschichte , es ist kaum zu glauben, dass so schnelle Fortschritte möglich sind).
  • unterstützt Plugins, hat modulare Architektur (dies erlaubt Benutzerbeiträge , sieht aus wie BOUML-Community formiert sich)
41
anon

Es gibt auch das PHP UML-Tool von pear .

PHP_UML:

  • Kann UML/XMI-Dateien in Version 1.4 oder in Version 2.1 (logische Ansichten, Komponentenansichten und Bereitstellungsansichten) generieren
  • Kann eine API-Dokumentation im HTML-Format generieren
  • Kann PHP Code (Code-Skelett) aus einer bestimmten XMI-Datei generieren
  • Kann UML/XMI-Inhalte von Version 1.4 auf Version 2.1 konvertieren

Installieren Sie es in der Befehlszeile über:

$ pear install pear/php_uml

(Dies war früher $ pear install pear/php_uml-alpha aber das paket ist inzwischen stabil geworden.)

Generiere dein xmi:

$ phpuml -o project.xmi

41
kguest

phUML

phUML ist ein in PHP geschriebener, vollautomatischer UML-Klassendiagramm-Generator, der unter der BSD-Lizenz lizenziert ist. Es ist in der Lage, jeden objektorientierten PHP5-Quellcode zu analysieren und eine geeignete Bilddarstellung der oo-Struktur basierend auf der UML-Spezifikation zu erstellen.

UML Example

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

Schritt für Schritt Anleitung

23

die beste (Windows) Software, die ich je gefunden habe PHP und UML ist Sparx SystemsEnterprise Architect . Neben einer Vielzahl von Funktionen unterstützt es die folgende für PHP:

  • Reverse Engineering objektorientiert PHP in UML-Klassendiagrammen
  • Generieren Sie PHP Klassendefinitionen aus UML-Klassendiagrammen
  • Synchronisieren Sie die in einer UML-Klasse vorgenommenen Änderungen mit der entsprechenden PHP Klassendefinition
  • Synchronisieren Sie die in einer PHP Klassendefinition vorgenommenen Änderungen mit der entsprechenden UML-Klasse
  • Erstellen Sie UML-Sequenzdiagramme, um zu zeigen, was PHP Klassen verwenden und wie sie verwendet werden
  • Erstellen Sie eine detaillierte Dokumentation Ihres PHP Codes im Standard RTF und HTML Format
  • Führen Sie Code-Engineering für Modelle durch, um base PHP pages zu generieren.

nicht frei (199 $), aber auf jeden Fall das Geld wert.

19
ax.

Es gibt auch php2xmi . Sie müssen ein wenig manuell arbeiten, aber es werden alle Klassen generiert. Alles, was Sie tun müssen, ist, sie in ein Klassendiagramm in mbrello zu ziehen.

Andernfalls ist das Generieren eines Diagramms mit Reflection und Graphviz relativ einfach. Ich habe einen Ausschnitt hier , den Sie als Ausgangspunkt verwenden können.

7
troelskn

Haben Sie schon versucht Autodia ? Das letzte Mal, als ich es ausprobierte, war es nicht perfekt, aber es war gut genug.

7
Vinko Vrsalovic

So habe ich es gemacht (direkt vom Code zu PDF Zeichnen ohne manuelles Zeichnen von irgendetwas):

  1. Verwenden Sie BOUML für "reverse engineering PHP code" [sic], um das Klassenmodell zu extrahieren (BOUML ist verfügbar in "universe") "Repository von Ubuntu). Ich empfehle BOUML ernsthaft für diesen Schritt, da es im Vergleich zu vielen anderen Programmen, die ich ausprobiert habe, sehr schnell ist. Außerdem scheint BOUML das Modell korrekt zu extrahieren (für die Teile, die BOUML sogar zu extrahieren versucht). .
  2. Verwenden Sie BOUML, um das Modell als XMI 1.4-Datei zu exportieren
  3. Verwenden Sie ArgoUML , um die XMI-Datei zu importieren (Sie können für diesen Schritt die Webstart-Version verwenden).
  4. XMI aus ArgoUML exportieren (Ich weiß nicht, welche XMI-Version/-Variante die Ausgabe ist, aber es ist nicht das gleiche Ergebnis wie die Ausgabe aus BOUML. Das argouml-graphviz kann keine XMI-Datei direkt aus BOUML verarbeiten).
  5. Verwenden Sie argouml-graphviz , um die von ArgoUML exportierte XMI-Datei in das Punktformat zu konvertieren (möglicherweise müssen Sie saxon anstelle von xsltproc verwenden, damit sie aufgrund der Verwendung von XSLT2 funktioniert.)
  6. Verwenden Sie Punkt oder FDP oder SFDP , um das Klassendiagramm zu rendern.

Hier ist ein Beispiel einer geeigneten Befehlszeile für die Verwendung von fdp zur Ausgabe von PDF Diagramm) (unter der Annahme, dass die durch die argouml-graphviz XLST-Verarbeitung erzeugte Punktdatei als xmi-model.dot gespeichert wird):

fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
  -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
  -Goverlap=false xmi-model.dot -oxmi-model.pdf

Alternativ können Sie PHP_UML oder php2xmi anstelle von BOUML versuchen, um den Teil "Reverse Engineering" durchzuführen. Das habe ich noch nicht ausprobiert.

(Ich verwende den Ausdruck "Reverse Engineering", weil es den Anschein hat, als würden UML-Benutzer diese Wörter verwenden, wenn sie Klassen- und Methodeninformationen aus dem Quellcode extrahieren. Ich würde diese Wörter persönlich als Extrahieren von Informationen aus einer ausführbaren Binärdatei oder als Erfassen von Rohdrahtdaten interpretieren.)

Wenn Sie es vorziehen, das Klassendiagramm von Hand zu zeichnen (anstatt Computer für das Zeichnen zu verwenden), können Sie entweder BOUML oder ArgoUML für das Zeichnen verwenden. In diesem Fall hilft die Verwendung der "Reverse Engineered" -Daten über BOUML.

7

Wenn Sie UML einfach aus Ihren vorhandenen PHP Klassen generieren möchten, sollten Sie PHPStorm 3.0 IDE in Betracht ziehen. Es ist eine gute Arbeit, vorhandenen Code in UML zu replizieren.

Schauen Sie sich die PHP Storm Feature Liste an.

5
David Lundquist

Sie können Visual Paradigm für UML verwenden. Dies ist möglicherweise nicht das bestbezahlte Produkt (es ist 699 US-Dollar), nur als Option, wenn jemand es versuchen möchte. Es kann ein Klassendiagramm aus PHP und umgekehrt, und nicht nur PHP, es gibt eine Reihe von Sprachen, die Sie auswählen können, wie C #, C++, Ruby, Java, VB.NET, Python, Objective C, Perl usw. Es gibt auch eine Testversion, die Sie überprüfen können.

1
Hendra Uzia

Theoretisch können Sie mit PhpStorm Ihre Klassen mit UML visualisieren. Die Generation ist nicht wirklich großartig, aber Sie können Dinge effektiv umgestalten und zumindest eine Vorschau von Eltern, Implementierungen, Konstanten, Attributen, Methoden und deren Sichtbarkeit auf eine nette Art und Weise anzeigen.

Situation

Ich möchte eine Kommunikation zwischen bereits vorhandenen Komponenten zu einem Kollegen visualisieren.

Mit PHPStorm verarbeiten

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

Vorteile

  • Schöne Benutzeroberfläche, letztes Diagramm.
  • Kann Code aus einem Diagramm umgestalten.
  • Kann Notizen hinzufügen.
  • Das Klassendiagramm symbolisiert private/öffentliche Eigenschaften, Konstruktoren und Methoden.

Nachteile

  • Keine Unterstützung für PHP 7.
  • Schmerzhaft zu bedienen. Die Größe der generierten Felder kann nicht geändert werden.
  • Beim Hinzufügen einer neuen Beziehung gehen die vorherigen zufällig verloren: O wtf?
  • Durch einen Neustart von PhpStorm werden die Diagramme zerstört
  • Ich änderte meine Meinung, es war unmöglich, Beziehungen zu benutzen

Ergebnis

Jedenfalls konnte ich nach einer mühsamen Arbeitsstunde nur unabhängige Boxen generieren und musste zusätzliches Programm verwenden, um Beziehungen zu verknüpfen. Wirklich schlecht. Aber ich glaube, wenn sie erst einmal richtig funktionieren, wird es eine großartige Funktion sein, denn wenn sich der Code ändert, werden die Diagramme automatisch aktualisiert!

Verwenden Sie PhpStorm vorerst nicht für UML-Diagramme.

1
BlocksByLukas

Um ehrlich zu sein, sollten Sie in erster Linie kein UML-Modell aus Code generieren, sondern Code aus einem UML-Modell;).

Selbst wenn Sie sich in einer seltenen Situation befinden und dieses Reverse Engineering durchführen müssen, wird im Allgemeinen empfohlen, dies von Hand zu tun oder zumindest die Diagramme aufzuräumen, da die automatisch generierte UML über eine sehr schlechte visuelle Darstellung verfügt (= Informationen). Wert die meiste Zeit.

Wenn Sie nur die Diagramme generieren müssen, ist es wahrscheinlich eine gute Sache, sich zu fragen, warum genau? Wer ist das Zielpublikum und was ist das Ziel? Was hat das automatisch generierte Diagramm zu bieten, welcher Code nicht?

Grundsätzlich akzeptiere ich nur eine Antwort auf diese Frage. Es wurde einfach zu groß und unverständlich.

Was wiederum ein Grund ist, mit UML anzufangen, anstatt mit dem Codieren zu beginnen;) Es heißt Analyse und nimmt ab, weil jeder zweite im Geschäft der Meinung ist, dass es ein bisschen zu teuer und nicht wirklich notwendig ist.

0
trueanalysis.eu