Comment générer un diagramme UML basé sur des classes existantes en PHP?
Comment générer un diagramme UML basé sur des classes existantes en PHP?
Réponses:
Il existe également l'outil PHP UML disponible chez pear .
PHP_UML:
Installez-le sur la ligne de commande via:
$ pear install pear/php_uml
(C'était autrefois, $ pear install pear/php_uml-alpha
mais le paquet est devenu stable depuis.)
Générez votre xmi:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(voir pear.php.net/package/PHP_UML/download/All ou pear.php.net/package/PHP_UML )
Je recommande fortement BOUML qui:
phUML est un générateur de diagrammes de classes UML entièrement automatique écrit en PHP, sous licence BSD. Il est capable d'analyser tout code source orienté objet PHP5 et de créer une représentation image appropriée de la structure oo basée sur la spécification UML.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
le meilleur logiciel (Windows) que j'ai trouvé pour faire PHP et UML est Sparx Systems Enterprise Architect . outre une pléthore de fonctionnalités , il prend en charge les éléments suivants pour PHP:
pas gratuit (199 $), mais ça vaut vraiment le coup.
Il y a aussi php2xmi . Vous devez faire un peu de travail manuel, mais cela génère toutes les classes, donc tout ce que vous avez à faire est de les faire glisser dans un diagramme de classes dans Umbrello .
Sinon, générer un diagramme avec l'utilisation de la réflexion et du graphviz, est assez simple. J'ai un extrait ici , que vous pouvez utiliser comme point de départ.
Voici comment je l'ai fait (directement du code au dessin PDF sans dessin manuel de quoi que ce soit):
Voici un exemple de ligne de commande appropriée pour utiliser fdp pour générer un diagramme PDF (en supposant que le fichier de points généré par le traitement argouml-graphviz XLST est enregistré sous 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
Comme alternative, vous pouvez essayer PHP_UML ou php2xmi au lieu de BOUML pour faire la partie "reverse engineering". Je n'ai pas encore essayé ça.
(J'utilise l'expression "ingénierie inverse" car il semble que les gens UML utilisent ces mots lorsqu'ils veulent dire extraire des informations de classe et de méthode à partir du code source . j'interpréterais ces mots comme l'extraction d'informations d'un fichier binaire exécutable ou capturé brut données de fil.)
Si vous préférez dessiner le diagramme de classes à la main (au lieu d'utiliser l'ordinateur pour faire tout le dessin), vous pouvez utiliser BOUML ou ArgoUML pour le dessin. L'utilisation des données "reverse engineering" via BOUML aidera dans ce cas.
Si vous cherchez à générer facilement UML à partir de vos classes PHP existantes, vous pouvez envisager PHPStorm 3.0 IDE. Il fait un bon travail de réplication du code existant dans UML.
Jetez un œil à la liste des fonctionnalités de PHP Storm .
Vous pouvez utiliser Visual Paradigm pour UML. Ce n'est peut-être pas le produit le mieux payé (699 $ US), juste comme option si quelqu'un souhaite essayer. Il peut créer un diagramme de classes à partir de PHP et vice versa, et pas seulement de PHP, vous pouvez choisir un tas de langages tels que C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl, etc. essai que vous pouvez vérifier.
En théorie, vous pouvez utiliser PhpStorm pour visualiser vos classes en utilisant UML. La génération n'est pas vraiment géniale mais vous pouvez efficacement refactoriser les choses et encore une fois, au moins prévisualiser les parents, les implémentations, les constantes, les attributs, les méthodes et leur visibilité de manière agréable.
Situation
Je souhaite visualiser une communication entre des composants déjà existants avec un collègue.
Processus à l'aide de PHPStorm
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
Avantages
Désavantages
Résultat
Quoi qu'il en soit, après une heure pénible de travail, je n'ai pu générer que des boîtes sans rapport et j'ai dû utiliser un programme supplémentaire pour lier les relations. Vraiment mauvais. Mais je crois qu'une fois qu'ils le feront fonctionner correctement, ce sera une excellente fonctionnalité car à mesure que le code changera, les diagrammes seront automatiquement mis à jour!
Pour l'instant, n'utilisez pas PhpStorm pour les diagrammes UML.
Eh bien, pour être honnête, avant tout, vous ne devez pas générer de modèle UML à partir du code, mais du code à partir du modèle UML;).
Même si vous êtes dans une situation rare, lorsque vous avez besoin de faire cette ingénierie inverse, il est généralement suggéré de le faire à la main ou au moins de ranger les diagrammes, car UML généré automatiquement a un visuel vraiment médiocre (= information) valeur la plupart du temps.
Si vous avez juste besoin de générer les diagrammes, c'est probablement une bonne chose de vous demander pourquoi exactement? Quel est le public visé et quel est le but? Qu'est-ce que le diagramme généré automatiquement a à offrir, quel code ne le fait pas?
Fondamentalement, je n'accepte qu'une seule réponse à cette question. C'est devenu trop gros et incompréhensible.
Ce qui est encore une fois une raison de commencer avec UML en premier lieu, par opposition à commencer à coder;) Cela s'appelle l'analyse et c'est en déclin, car chaque homme sur deux en entreprise pense que c'est un peu trop cher et pas vraiment nécessaire.