PHP UML Generator [chiuso]


110

Come posso generare un diagramma UML basato su classi esistenti in PHP?


2
Non lavoro più con PHP, quindi non ho codice da testare effettivamente. Quando ho pubblicato questo, nessuna delle risposte iniziali stava facendo abbastanza, ma da allora molto è cambiato. Stavo lavorando con PHP 5.2, e ora è PHP7 in questi giorni.
Jeffrey04

Risposte:


42

C'è anche lo strumento PHP UML disponibile da Pear .

PHP_UML:

  • Può generare file UML / XMI nella versione 1.4 o nella versione 2.1 (viste logiche, componenti e distribuzione)
  • Può generare una documentazione API in formato HTML
  • Può generare codice PHP (code skeleton) da un dato file XMI
  • Può convertire i contenuti UML / XMI dalla versione 1.4 alla versione 2.1

Installalo sulla riga di comando tramite:

$ pear install pear/php_uml

(In passato lo era, $ pear install pear/php_uml-alphama da allora il pacchetto è diventato stabile.)

Genera il tuo xmi:

$ phpuml -o project.xmi


2
per qualche ragione, a pear.com non piace quel link senza una barra finale: pear.php.net/package/PHP_UML
Stephen Fuhry

1
@Stephen, sì, l'ho notato anche io! Se fai clic sul link, ti ​​dà un 404, ma se selezioni la barra degli indirizzi e premi Invio, funziona.
nickf

1
Pochi anni dopo il comando è ora pear install PHP_UML-1.6.1(vedi pear.php.net/package/PHP_UML/download/All o pear.php.net/package/PHP_UML )
Ben

1
Questa dovrebbe essere la risposta accettata. Lo strumento è spettacolare.
Xofo

3
non funziona con php 7
DevWL

41

Consiglio vivamente BOUML che:

  • è estremamente veloce (lo strumento UML più veloce mai creato, controlla i benchmark ),
  • ha un solido supporto per l' importazione e l'esportazione PHP (supporta anche C ++, Java, Python)
  • è multipiattaforma (Linux, Windows, altri sistemi operativi),
  • è completo, sviluppato in modo incredibilmente intenso (guarda la storia dello sviluppo , è difficile credere che sia possibile un progresso così veloce).
  • supporta i plugin, ha un'architettura modulare (questo consente i contributi degli utenti , sembra che la comunità BOUML si stia formando)

I benchmark sembrano davvero impressionanti. Adoro l'architetto aziendale ma non ha il supporto PHP. Trasmetterò questo strumento, grazie.
Paul Dragoonis

1
@ Paolo Dragoonis Sparx Sistemi Enterprise Architect ha il supporto PHP - e non il peggiore .
ascia.

5
La pagina web di BOUML ora afferma: "ATTENZIONE: A causa delle continue violazioni della licenza, attacchi e insulti da parte di persone di wikipedia [...], ho deciso di interrompere il lavoro su Bouml tranne che per correggere i bug".
MPV

1
"[18 dicembre 2011] I download sono sospesi fino a nuovo avviso" dal loro sito web ufficiale. http://bouml.free.fr/download.html - questo perché avevo bisogno di una versione per Win7. Immagino che possa essere ancora disponibile dai repository di Ubuntu - è necessario controllare
Val Redchenko

4
Versione 6.1 rilasciata il 23 settembre 2012 . Sembra che lo sviluppo sia ripreso. Nessun avviso su rallentamenti, interruzioni, ecc. Bouml.fr/historic.html
Andrew Ensley

24

phUML

phUML è un generatore di diagrammi di classi UML completamente automatico scritto in PHP, con licenza BSD. È in grado di analizzare qualsiasi codice sorgente PHP5 orientato agli oggetti e creare una rappresentazione dell'immagine appropriata della struttura oo basata sulla specifica UML.

Esempio UML

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

Guida passo passo


richiede SVN / subversion per il download e non dice realmente quale sia la licenza del codice sorgente, ma sembra buono! Sì, starei attento a guardare il codice sorgente, non c'è assolutamente alcuna licenza e l'unico file readme è sul sito credo

La licenza è collegata proprio lì nella barra laterale del sito web del progetto, sotto l'autore, Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulos

questa è la licenza per il contenuto del sito, la LICENZA per il progetto deve essere inclusa con il progetto stesso.

3
Ho inviato un'e-mail all'autore, Jakob e lui ha risposto con un aggiornamento al repository con una licenza bsd a 3 clausole
Anthony Hatzopoulos

L'ho scaricato e l'ho fatto funzionare dopo un po 'di aggiustamenti. È stato davvero carino, tranne che non riesco a far funzionare le associazioni, ma sono sicuro che lo scoprirò. Bello, semplice. Nessuna GUI però, ma non è un grosso problema.
Impulsi

19

il miglior software (Windows) che ho trovato per fare PHP e UML è Sparx Systems Enterprise Architect . oltre a una pletora di funzionalità , supporta quanto segue per PHP:

  • Eseguire il reverse engineering di PHP orientato agli oggetti in diagrammi classi UML
  • Genera definizioni di classi PHP da diagrammi classi UML
  • Sincronizza le modifiche apportate in una classe UML nella corrispondente definizione della classe PHP
  • Sincronizza le modifiche apportate alla definizione di una classe PHP nella classe UML corrispondente
  • Crea diagrammi di sequenza UML per mostrare cosa usano le classi PHP e come vengono utilizzate
  • Produci una documentazione dettagliata del tuo codice PHP in formato RTF e HTML standard
  • Esegui l'ingegneria del codice sui modelli per generare pagine PHP di base.

non gratuito ($ 199), ma ne vale decisamente la pena.


1
Wow, questo è davvero un programma utile e professionale davvero, grazie per il suggerimento !! Ho appena provato la generazione del diagramma delle classi UML con il metodo di reverse engineering di Sparx EA dal codice sorgente PHP, e ha funzionato a meraviglia, sono rimasto scioccato da quanto funzionasse bene. : D Man mano che i nostri progetti stanno diventando sempre più grandi e creiamo sempre più oggetti, diventa sempre più difficile tenere d'occhio il nostro codice, ma è di grande aiuto in quanto genera i diagrammi UML nel modo giusto (di ovviamente, potrebbero verificarsi delle eccezioni) DOPO aver terminato il codice. Questo aiuta anche a semplificare le relazioni tra gli oggetti.
Sk8erPeter

@ax - Sono un principiante e mi perdo un po 'nel loro elenco di funzionalità (in "confronta edizioni"). Quale sarebbe il nome della funzione che mi consente di inserire il codice PHP (o il collegamento ai file PHP) e ottenere in cambio un diagramma? Sto cercando di capire quale versione potrei aver bisogno.
JDelage

7

Hai già provato Autodia ? L'ultima volta che l'ho provato non era perfetto, ma era abbastanza buono.


ho provato autodia ma in qualche modo non riesco a generare un diagramma di classe accurato (php5)
Jeffrey04

7

C'è anche php2xmi . Devi fare un po 'di lavoro manuale, ma genera tutte le classi, quindi tutto ciò che devi fare è trascinarle in un diagramma di classe in Umbrello .

Altrimenti, generare un diagramma con l'uso di reflection e graphviz, è abbastanza semplice. Ho uno snippet qui , che puoi usare come punto di partenza.


7

Ecco come l'ho fatto (direttamente dal codice al disegno PDF senza disegnare manualmente nulla):

  1. Usa BOUML per il "codice PHP di reverse engineering" [sic] per estrarre il modello di classe (BOUML è disponibile dal repository "universe" di Ubuntu). Consiglio vivamente BOUML per questo passaggio perché è molto veloce rispetto a molti altri programmi che ho provato. Inoltre, sembra che BOUML sembri estrarre correttamente il modello (per le parti che BOUML cerca anche di estrarre).
  2. Usa BOUML per esportare il modello come file XMI 1.4
  3. Usa ArgoUML per importare detto file XMI (puoi usare la versione webstart per questo passaggio)
  4. Esporta XMI da ArgoUML (non so quale versione / variante XMI sia l'output, ma non è lo stesso risultato dell'output di BOUML. Argouml-graphviz non può gestire il file XMI direttamente da BOUML).
  5. Usa argouml-graphviz per convertire il file XMI esportato da ArgoUML in formato punto (potresti dover usare saxon invece di xsltproc per farlo funzionare a causa dell'uso di XSLT2)
  6. Usa punto o fdp o sfdp per eseguire il rendering del diagramma delle classi.

Ecco un esempio di riga di comando adatta per l'utilizzo di fdp per l'output del diagramma PDF (supponendo che il file punto generato dall'elaborazione XLST di argouml-graphviz sia salvato come xmi-model.dot):

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

In alternativa potresti provare PHP_UML o php2xmi invece di BOUML per fare la parte "reverse engineering". Non l'ho ancora provato.

(Sto usando la frase "ingegneria inversa" perché sembra che le persone UML stiano usando quelle parole quando intendono estrarre informazioni sulla classe e sul metodo dal codice sorgente . Personalmente interpreterei quelle parole come estrarre informazioni da file binari eseguibili o catturate dati del filo.)

Se preferisci disegnare il diagramma di classe a mano (invece di usare il computer per fare tutto il disegno), puoi usare BOUML o ArgoUML per il disegno. L'utilizzo dei dati "decodificati" tramite BOUML aiuterà in questo caso.



1

Puoi usare Visual Paradigm per UML. Questo potrebbe non essere il prodotto più pagato (è di $ 699), solo come opzione se qualcuno volesse provare. Può creare diagrammi di classe da PHP e viceversa, e non solo PHP, c'è un sacco di linguaggi che puoi scegliere come C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl, ecc. C'è anche un prova che puoi controllare.


1

In teoria puoi usare PhpStorm per visualizzare le tue classi usando UML. La generazione non è davvero eccezionale, ma puoi eseguire il refactoring efficace delle cose e di nuovo, almeno visualizzare in anteprima i genitori, le implementazioni, le costanti, gli attributi, i metodi e la loro visibilità in un modo carino.

Situazione

Voglio visualizzare una comunicazione tra componenti già esistenti a un collega.

Processo utilizzando PHPStorm

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

vantaggi

  • Bella interfaccia utente, diagramma finale.
  • In grado di eseguire il refactoring del codice da un diagramma.
  • In grado di aggiungere note.
  • Il diagramma delle classi simboleggia bene proprietà, costruttori e metodi privati ​​/ pubblici.

svantaggi

  • Nessun supporto per PHP 7.
  • Dolorosamente da usare. Non è possibile ridimensionare le caselle generate.
  • Quando si aggiunge una nuova relazione, le precedenti vengono perse casualmente: O wtf?
  • Il riavvio di PhpStorm distrugge i diagrammi
  • Ho cambiato idea, impossibile usare le relazioni

Risultato

Comunque, dopo qualche dolorosa ora di lavoro sono stato in grado di generare solo scatole non correlate e ho dovuto utilizzare un programma aggiuntivo per collegare le relazioni. Veramente male. Ma credo che una volta che lo faranno funzionare correttamente, sarà una grande funzionalità perché quando il codice cambia, i diagrammi verranno aggiornati automaticamente!

Per ora, non utilizzare PhpStorm per i diagrammi UML.


Suppongo che questo sia nuovo (:
Jeffrey04

Corretta. Attualmente sono nella stessa situazione. Ho sviluppato una parte complessa di un sistema e voglio visualizzarla per il mio collega. Ho provato diversi strumenti ma sono schifosi e brutti :) Lo farò con PHPStorm e aggiornerò la mia risposta come appare e quanto è davvero potente. Oggi vi farò sapere il risultato @ Jeffrey04
Lukas

va bene, non faccio PHP per un bel po 'di tempo in realtà
Jeffrey04

0

Beh, ad essere onesti, prima di tutto non dovresti generare il modello UML dal codice, ma il codice dal modello UML;).

Anche se ti trovi in ​​una situazione rara, quando hai bisogno di fare questo reverse engineering, è generalmente suggerito di farlo a mano o almeno di riordinare i diagrammi, poiché UML generato automaticamente ha una visuale (= informazioni) davvero scarsa valore la maggior parte del tempo.

Se hai solo bisogno di generare i diagrammi, è probabilmente una buona cosa chiederti perché esattamente? Chi è il pubblico previsto e qual è l'obiettivo? Cosa ha da offrire il diagramma generato automaticamente e quale codice no?

Fondamentalmente accetto solo una risposta a questa domanda. È semplicemente diventato troppo grande e incomprensibile.

Il che è ancora una volta un motivo per iniziare con UML in primo luogo, invece di iniziare a scrivere codice;) Si chiama analisi ed è in declino, perché ogni secondo ragazzo nel mondo degli affari pensa che sia un po 'troppo costoso e non realmente necessario.


7
È vero, ma la vita è più complicata di alcuni principi, che è saggio usare. Potrebbe essere necessario confrontare il codice effettivo con il diagramma UML originale o analizzare il codice di qualcuno o un codice implementato senza diagrammi UML.
DAH

3
Disaccordo. Grande valore ottenuto dalla visualizzazione di una base di codice / modulo con un diagramma. Il codice è come le indicazioni stradali, ma con troppe indicazioni a volte si potrebbe trovare utile una mappa.
Basil Musa

1
La maggior parte dei programmi di disegno UML ha un'interfaccia utente così scadente che è più veloce scrivere il codice e generare il diagramma UML automaticamente, anche se poi butti via il codice che hai usato per generare il diagramma ...
Mikko Rantalainen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.