Come posso generare un diagramma UML basato su classi esistenti in PHP?
Come posso generare un diagramma UML basato su classi esistenti in PHP?
Risposte:
C'è anche lo strumento PHP UML disponibile da Pear .
PHP_UML:
Installalo sulla riga di comando tramite:
$ pear install pear/php_uml
(In passato lo era, $ pear install pear/php_uml-alpha
ma da allora il pacchetto è diventato stabile.)
Genera il tuo xmi:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(vedi pear.php.net/package/PHP_UML/download/All o pear.php.net/package/PHP_UML )
Consiglio vivamente BOUML che:
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.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
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:
non gratuito ($ 199), ma ne vale decisamente la pena.
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.
Ecco come l'ho fatto (direttamente dal codice al disegno PDF senza disegnare manualmente nulla):
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.
Se stai cercando di generare facilmente UML dalle tue classi PHP esistenti, potresti prendere in considerazione PHPStorm 3.0 IDE. Fa un buon lavoro nel replicare il codice esistente in UML.
Dai un'occhiata all'elenco delle funzionalità di PHP Storm .
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.
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
svantaggi
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.
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.