Comment générer un diagramme UML basé sur des classes existantes en PHP?
Je recommande fortement BOUML qui:
Il y a aussi le PHP outil UML disponible chez pear .
PHP_UML:
Installez-le sur la ligne de commande via:
$ pear install pear/php_uml
(C'était jadis $ pear install pear/php_uml-alpha
mais le paquet est depuis stable.)
Générez votre xmi:
$ phpuml -o project.xmi
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 n'importe quel 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é à faire PHP et UML est Sparx SystemsEnterprise Architect . en plus d'une pletora de caractéristiques , il supporte le suivant pour PHP:
pas gratuit (199 $), mais vaut vraiment la peine.
Il y a aussi php2xmi . Vous devez faire un peu de travail manuel, mais il génère toutes les classes, il vous suffit donc de les faire glisser dans un diagramme de classe dans mbrello .
Autrement, générer un diagramme avec l'utilisation de la réflexion et de graphviz est assez simple. J'ai un extrait ici , que vous pouvez utiliser comme point de départ.
Avez-vous essayé Autodia encore? La dernière fois que j'ai essayé, ce n'était pas parfait, mais c'était suffisant.
Voici comment je l'ai fait (directement du code à PDF dessiner sans dessiner manuellement):
Voici un exemple de ligne de commande appropriée pour utiliser fdp en sortie PDF (en supposant que le fichier de points généré par le traitement argouml-graphviz XLST est enregistré sous le nom 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 effectuer la partie "reverse engineering". Je n'ai pas encore essayé ça.
(J'utilise l'expression "reverse engineering", car il semble que les personnes UML utilisent ces mots lorsqu'elles veulent dire extraire des informations sur les classes et les méthodes de le code source. Personnellement, j’interpréterais ces mots comme des informations extraites d’un fichier binaire exécutable ou de données brutes capturées.)
Si vous préférez dessiner le diagramme de classes à la main (au lieu d'utiliser un ordinateur pour 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 du langage UML à partir de vos classes PHP existantes), vous pouvez envisager un environnement de développement IDE PHPStorm 3.0. Il réplique bien le code existant dans le langage UML.
Jetez un coup d'œil à la liste des fonctionnalités de PHP Storm .
Vous pouvez utiliser Visual Paradigm pour UML. Il se peut que ce ne soit pas le produit le mieux payé (au prix de 699 USD), juste comme une option si quelqu'un souhaite l'essayer. Il peut créer un diagramme de classes à partir de PHP et inversement, et pas seulement PHP, il existe un tas de langages que vous pouvez choisir, tels que C #, C++, Ruby, Java, VB.NET, Python, Objective C, Perl, etc. Il existe également un procès que vous pouvez vérifier.
En théorie, vous pouvez utiliser PhpStorm pour visualiser vos classes en UML. La génération n’est pas vraiment géniale, mais vous pouvez effectivement refactoriser des éléments 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 et un collègue.
Processus utilisant PHPStorm
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
Avantages
Inconvénients
Résultat
Quoi qu'il en soit, après une heure de travail pénible, je ne pouvais générer que des boîtes non liées et devais utiliser un programme supplémentaire pour lier des relations. Vraiment mauvais. Mais je pense qu'une fois qu'ils fonctionneront correctement, ce sera une fonctionnalité intéressante, car à mesure que le code change, les diagrammes seront automatiquement mis à jour!
Pour l'instant, n'utilisez pas PhpStorm pour les diagrammes UML.
Eh bien, pour être honnête, vous ne devriez pas avant tout générer un modèle UML à partir de code, mais un code à partir d'un modèle UML;).
Même si vous êtes dans une situation rare, lorsque vous avez besoin de faire de la rétro-ingénierie, il est généralement suggéré de le faire à la main ou au moins de bien ranger les diagrammes, car le langage UML généré automatiquement a un très mauvais visuel (= informations). 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? Qui 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?
En gros, je n’accepte qu’une réponse à cette question. C'est devenu trop gros et incompréhensible.
Ce qui, encore une fois, est une raison de commencer par UML en premier lieu, plutôt que de commencer à coder;) Cela s'appelle une analyse et il est en déclin, car chaque seconde en affaires pense que c'est un peu trop cher et pas vraiment nécessaire.