web-dev-qa-db-fra.com

PHP Générateur UML

Comment générer un diagramme UML basé sur des classes existantes en PHP?

107
Jeffrey04

Je recommande fortement BOUML qui:

  • est extrêmement rapide (outil UML le plus rapide jamais créé, consultez benchmarks ),
  • a le rock solide importation et exportation PHP support (supporte également C++, Java, Python)
  • est multiplateforme (Linux, Windows, autres systèmes d’exploitation),
  • est complet, développé avec une intensité impressionnante (regardez historique du développement , il est difficile de croire qu'un progrès aussi rapide est possible).
  • supporte les plugins, a une architecture modulaire (cela permet contributions des utilisateurs , on dirait que la communauté BOUML est en train de se constituer)
41
anon

Il y a aussi le PHP outil UML disponible chez pear .

PHP_UML:

  • Peut générer des fichiers UML/XMI en version 1.4 ou 2.1 (vues de logique, de composant et de déploiement)
  • Peut générer une documentation d'API au format HTML
  • Peut générer PHP du code (code squelette)) à partir d'un fichier XMI donné
  • Peut convertir le contenu UML/XMI de la version 1.4 à la version 2.1

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

41
kguest

phUML

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.

UML Example

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

Guide étape par étape

23
Anthony Hatzopoulos

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:

  • Reverse engineering orienté objet PHP dans les diagrammes de classe UML
  • Générer PHP définitions de classe à partir de diagrammes de classe UML
  • Synchronisez les modifications apportées dans une classe UML à la définition de la classe correspondante PHP
  • Synchroniser les modifications apportées dans une définition de classe PHP dans la classe UML correspondante)
  • Créez des diagrammes de séquence UML pour montrer ce que les classes PHP utilisent et leur utilisation)
  • Produisez une documentation détaillée de votre PHP code en standard RTF et le format HTML
  • Effectuez l’ingénierie de code sur les modèles pour générer des pages de base PHP.

pas gratuit (199 $), mais vaut vraiment la peine.

19
ax.

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.

7
troelskn

Avez-vous essayé Autodia encore? La dernière fois que j'ai essayé, ce n'était pas parfait, mais c'était suffisant.

7
Vinko Vrsalovic

Voici comment je l'ai fait (directement du code à PDF dessiner sans dessiner manuellement):

  1. Utilisez BOUML pour "reverse engineering PHP code" [sic]] pour extraire le modèle de classe (BOUML est disponible dans "universe "référentiel d’Ubuntu). Je recommande sérieusement BOUML pour cette étape car c’est très rapide comparé à beaucoup d’autres programmes que j’ai essayés. De plus, il semble que BOUML semble extraire correctement le modèle (pour les parties que BOUML essaie même d’extraire) .
  2. Utiliser BOUML pour exporter le modèle en tant que fichier XMI 1.4
  3. Utilisez ArgoUML pour importer ledit fichier XMI (vous pouvez utiliser la version Webstart pour cette étape)
  4. Exportez XMI à partir d'ArgoUML (je ne sais pas quelle version/variante XMI est la sortie, mais ce n'est pas le même résultat que la sortie de BOUML. Argouml-graphviz ne peut pas gérer le fichier XMI directement à partir de BOUML).
  5. Utilisez argouml-graphviz pour convertir le fichier XMI exporté par ArgoUML au format point (vous devrez peut-être utiliser saxon au lieu de xsltproc pour le faire fonctionner en raison de l'utilisation de XSLT2).
  6. Utilisez point ou fdp ou sfdp pour rendre le diagramme de classes.

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.

7
Mikko Rantalainen

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 .

5
David Lundquist

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.

1
Hendra Uzia

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

  • Belle interface utilisateur, diagramme final.
  • Capable de refactoriser le code à partir d'un diagramme.
  • Capable d'ajouter des notes.
  • Le diagramme de classes symbolise joliment les propriétés privées/publiques, les constructeurs et les méthodes.

Inconvénients

  • Pas de support pour PHP 7.
  • Péniblement à utiliser. Impossible de redimensionner les cases générées.
  • Lors de l'ajout d'une nouvelle relation, les précédentes sont perdues au hasard: O wtf?
  • Redémarrer PhpStorm détruit les diagrammes
  • Changé d'avis, impossible d'utiliser les relations

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.

1
BlocksByLukas

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.

0
trueanalysis.eu