Comment générer des diagrammes UML (en particulier des diagrammes de séquence) à partir du code Java?


434

Comment puis-je générer des diagrammes UML (en particulier des diagrammes de séquence) à partir du code Java existant?


3
Il est peu probable que cela se produise. Le vrai code Java n'est pas structuré pour être joli comme des diagrammes UML.
Stephan Eggermont

1
Autant de réponses qui ne traitent pas des diagrammes de séquence. Hmph
Bill K

@BillK ma réponse concerne les diagrammes de séquence. Il s'agit d'un plugin Intellij Idea - stackoverflow.com/a/45239269/529187 .
Xiao Peng - ZenUML.com

1
Cette question est plus appropriée au site partenaire Recommandations logicielles Stack Exchange .
Basil Bourque

Réponses:


257

Explorateur UML ObjectAid

C'est ce que j'ai utilisé. Il s'installe facilement depuis le référentiel:

Name:     ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current

Et produit de très beaux diagrammes UML:

Capture d'écran

Description du site Web:

L'explorateur UML ObjectAid est différent des autres outils UML. Il utilise la notation UML pour afficher une représentation graphique du code existant qui est aussi précise et à jour que votre éditeur de texte, tout en étant très facile à utiliser. Plusieurs fonctionnalités uniques rendent cela possible:

  • Votre code source et vos bibliothèques sont le modèle qui s'affiche, ils ne sont pas rétroconçus dans un format différent.
  • Si vous mettez à jour votre code dans Eclipse, votre diagramme est également mis à jour; il n'est pas nécessaire de procéder au reverse engineering du code source.
  • La refactorisation met à jour votre diagramme ainsi que votre code source. Lorsque vous renommez un champ ou déplacez une classe, votre diagramme reflète simplement les modifications sans se désynchroniser.
  • Tous les diagrammes de votre espace de travail Eclipse sont mis à jour avec des modifications de refactorisation, le cas échéant. Si nécessaire, ils sont extraits de votre système de contrôle de version.
  • Les diagrammes sont entièrement intégrés dans l'IDE Eclipse. Vous pouvez faire glisser des classes Java à partir de n'importe quelle autre vue sur le diagramme, et les informations relatives au diagramme sont affichées dans d'autres vues, le cas échéant.

Plus facile que Papyrus, mais avec moins d'options pour créer des diagrammes.
lcardosobr

Dans ObjectAid, existe-t-il un moyen d'organiser automatiquement le diagramme de classes?
Réutilisable

4
HowTo >>> Créez un compte ici: objectaid.com/login (l'e-mail d'activation a été envoyé dans 10 minutes), cliquez sur Add Diagram On, la licence sera envoyée à votre e-mail. Suivez cet objectaid.com/installation pour installer ObjectAid, puis installez GEF à partir de download.eclipse.org/tools/gef/updates/releases Maintenant, copiez-collez la licence de l'email vers Windows-> Préférences-> ObjectAid Comment créer un diagramme? objectaid.com/class-diagram
rluks

Impossible d'installer dans eclipse juno. An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
Gunaseelan

1
La version commerciale d'ObjectAid peut faire mieux en ce qui concerne la génération de diagrammes de séquence vs gratuite ne peut être utilisée que pour générer des diagrammes de classes !!
whoami

63

EDIT: Si vous êtes un concepteur, Papyrus est votre meilleur choix, il est très avancé et plein de fonctionnalités, mais si vous voulez simplement esquisser des diagrammes UML et une installation facile, ObjectAid est plutôt cool et ne nécessite aucun plugin I vient de l'installer sur Eclipse-Java EE et fonctionne très bien!.


MISE À JOUR 11 octobre 2013

Mon message d'origine était en juin 2012, beaucoup de choses ont changé, de nombreux outils ont grandi et d'autres non. Depuis que je retourne faire de la modélisation et aussi obtenir des réponses à l'article, j'ai décidé d'installer à nouveau papyrus et j'examinerai à nouveau d'autres solutions de modélisation UML possibles. La génération UML (avec fonction de synchronisation) est vraiment importante non pas pour le concepteur de logiciels mais pour le développeur moyen.

Je souhaite que le papyrus ait un moyen simple de faire de l'ingénierie inverse dans le diagramme de classes UML et ce serait super cool si cette ingénierie inverse avait une fonction de synchronisation, mais malheureusement, le projet papyrus est plein de fonctionnalités et je pense que les développeurs ont déjà beaucoup à portée de main car aussi beaucoup les actions que vous effectuez sur le papyrus pourraient ne pas vous donner de réponse et rien ne se passe, mais c'est hors de cette portée de toute façon.

La réponse (11 octobre 2013)

Outils

  1. Télécharger Papyrus
  2. Allez dans Aide -> Installer un nouveau logiciel ...
  3. Dans la liste déroulante Travailler avec :, sélectionnez - Tous les sites disponibles--
  4. Dans le filtre, tapez Papyrus
  5. Une fois l'installation terminée, redémarrez Eclipse
  6. Répétez les étapes 1 à 3 et cette fois, installez Modisco

Pas

  1. Dans votre projet java (supposez qu'il s'appelle MyProject) créez un dossier, par exemple UML
  2. Faites un clic droit sur le nom du projet -> Discovery -> Discoverer -> Discover Java et le modèle d'inventaire du projet java, un fichier appelé MyProject_kdm.xmi sera généré. entrez la description de l'image ici
  3. Cliquez avec le bouton droit sur le fichier de nom de projet -> nouveau -> modèle de papyrus -> et appelez-le MyProject.
  4. Déplacez les trois fichiers générés MyProject.di, MyProject.notation, MyProject.uml dans le dossier UML
  5. Cliquez avec le bouton droit sur MyProject_kdm.xmi -> Discovery -> Discoverer -> Découvrez à nouveau le modèle UML à partir du code KDM, vous obtiendrez une boîte de dialogue de propriétés définissez l'accessibilité de sérialisation sur TRUE pour générer un fichier nommé MyProject.uml entrez la description de l'image ici

  6. Déplacez MyProject.uml généré qui a été généré à la racine, dans le dossier UML, Eclipse vous demandera Si vous souhaitez le remplacer, cliquez sur oui. Ce que nous avons fait ici, c'est que nous avons remplacé un modèle vide par un modèle généré.

  7. ALT + W -> afficher la vue -> papyrus -> model explorer

  8. Dans cette vue, vous trouverez vos classes comme dans l'image entrez la description de l'image ici

  9. Dans la vue Clic droit sur le modèle racine -> Nouveau diagramme entrez la description de l'image ici

  10. Ensuite, commencez à saisir des classes dans le diagramme à partir de la vue

Certaines fonctionnalités

  • Pour afficher les éléments de classe (variables, fonctions, etc.) Faites un clic droit sur n'importe quelle classe -> Filtres -> afficher / masquer le contenu Voila !!

  • Vous pouvez avoir des paramètres de couleur conviviaux par défaut dans Fenêtre -> références -> papyrus -> diagramme de classes

  • un paramètre très important est Arranger lorsque vous déposez les classes, ils obtiennent un clic droit étroit sur n'importe quel espace vide dans un diagramme de classes et cliquez sur Tout organiser

  • Les flèches dans la vue de l'explorateur de modèles peuvent être saisies sur le diagramme pour montrer la généralisation, la réalisation, etc.

  • Après tout cela, vos paramètres afficheront des diagrammes comme entrez la description de l'image ici

  • Pour autant que je sache, la synchronisation n'est pas disponible. Vous devrez importer manuellement toutes les nouvelles classes.

C'est tout, et n'achetez pas de produits commerciaux sauf si vous en avez vraiment besoin, le papyrus est en fait génial et sophistiqué à la place, faites un don ou quelque chose.

Avertissement: je n'ai aucune relation avec les papyrus, en fait, je n'ai pas aimé le papyrus au début jusqu'à ce que je fasse beaucoup de recherches et que je le fasse avec patience. Et je reviendrai à ce poste lorsque j'essaierai d'autres outils gratuits.


J'ai cherché Modisco dans Eclipse. il est apparu avec 0 intallable. Ce projet est-il vivant ou retiré? Est-il devenu un outil payant. Papyrus ne fonctionnera-t-il pas sans cela?
R-JANA

STS utilisé et infructueux.
R-JANA

@ R-JANA Je ne sais pas quel est le statut actuel de Modisco, mais je reviens à ce poste dès que possible car je suis sur le point d'installer le papyrus bientôt et devra le mettre à jour. Je vous conseille d'essayer par vous-même d'installer papyrus, avec mon message actuel à l'esprit; Je pense que beaucoup de changements sont survenus depuis que j'ai posté cette réponse.
Ismail Marmoush

Il existe un plug-in facultatif pour Papyrus, qui ajoute des fonctionnalités de reverse engineering Java: wiki.eclipse.org/Java_reverse_engineering . Avec cela, il est beaucoup plus facile d'ajouter des éléments de diagramme à partir de la source, vous pouvez même faire glisser des classes dans un diagramme.
Markus Ende

42

Quelle est votre base de code? Java ou C ++?

texte alternatif

eUML2 for Java est un puissant modeleur UML conçu pour les développeurs Java dans Eclipse. L'édition gratuite peut être utilisée à des fins commerciales. Il prend en charge les fonctionnalités suivantes:

  • CVS et support d'équipe
  • Conçu pour les grands projets avec des vues de modèle multiples et personnalisables
  • Conforme à Helios
  • Synchronisation de code / modèle en temps réel
  • Conforme à UML2.1 et prise en charge d'OMG XMI
  • Prise en charge de JDK 1.4 et 1.5
  • L'édition commerciale fournit:

  • Ingénierie inversée avancée

  • De puissants outils d'analyse des vraies dépendances
  • Profil UML et MDD
  • Outils de base de données
  • Prise en charge de modèles personnalisables

20
Il s'agit d'un outil très difficile à installer. J'ai essayé pendant environ une demi-heure sans succès. D'autres suggestions?
Jonathan

2
Impossible de trouver que eUML2 est mon gestionnaire de mise à jour et je ne veux pas emballer une nouvelle configuration Eclipse juste pour cette fonctionnalité. J'utilise Eclipse "Helios" et je vais comme suit: Aide - Installer un nouveau logiciel - Helios download.eclipse.org/releases/helios - Modélisation
OneWorld

3
Je sais que c'est un ancien message, mais la plupart des problèmes d'installation d'eUML2 semblent avoir été résolus.
Andy

7
eUML est une vraie merde. Il a changé mon format de code et ajouté des balises partout. Mon code est maintenant tellement sale que je préfère annuler la modification. Le problème est qu'il n'y a pas d'annulation et que votre code est changé pour toujours. Je recommanderais de sauvegarder votre projet avant d'utiliser le crapper eUML :-)
UML GURU

31
Avez-vous déjà entendu parler du contrôle de version?
dévoré elysium

9

Je suis l'un des auteurs, donc la réponse peut être biaisée. Il est open-source (Apache 2.0), mais le plugin n'est pas gratuit. Vous n'avez pas à payer (évidemment) si vous clonez et construisez localement.

Sur Intellij IDEA, ZenUML peut générer un diagramme de séquence à partir du code Java. entrez la description de l'image ici

Découvrez-le sur https://plugins.jetbrains.com/plugin/12437-zenuml-support

Code source: https://github.com/ZenUml/jetbrains-zenuml


1
@hc_dev, merci pour votre rappel. Ajout de cette note.
Xiao Peng - ZenUML.com

7

Que diriez - vous PlantUml ? Ce n'est pas pour l'ingénierie inverse !!! C'est pour l'ingénierie avant de coder.


4
Ne répond pas à la question, qui demande clairement un outil d'ingénierie inverse.
jmite

1
Je ne suis pas sûr que ce soit tout à fait correct. PlantUML est également capable de décrire du code avec des diagrammes. Essayez d'ouvrir la vue pertinente dans un fichier de classe
Erez A. Korn

1
Oui, je peux vérifier que les diagrammes de classes sont créés automatiquement à partir de fichiers Java dans le plugin Eclipse.
HRJ

1
J'ai essayé cela, mais si votre code PlantUML devient trop complexe, vous passez tout votre temps à essayer de comprendre pourquoi le dessin ne s'affiche pas correctement et présente des problèmes. C'est bon seulement pour les petits diagrammes.
trusktr

Dans Intellij, combiner PlantUML avec Sketch It! et graphviz peut générer des diagrammes de classes à partir du code. Fonctionne mieux pour les petits packages, les pngs ne semblent pas être entièrement créés lorsque les diagrammes deviennent trop volumineux.
Melissa Loos

6

J'ai développé un plugin maven qui peut à la fois être exécuté à partir de la CLI comme objectif de plugin ou importé en tant que dépendance et utiliser l'analyseur par programme @see Main#main()pour avoir une idée de la manière.

Il rend récursivement le code src PlantUML des packages souhaités que vous pouvez modifier manuellement si nécessaire (j'espère que vous ne le ferez pas). Ensuite, en collant le code dans la page plantUML, ou en téléchargeant le pot de plante, vous pouvez rendre le diagramme UML sous forme d'image png.

Découvrez-le ici https://github.com/juanmf/Java2PlantUML

Exemple de diagramme de sortie: entrez la description de l'image ici

Toute contribution est plus que bienvenue. Il a un ensemble de filtres qui personnalisent la sortie mais je ne les ai pas encore exposés dans les paramètres CLI du plugin.

Il est important de noter qu'il n'est pas limité à vos fichiers * .java, il peut également restituer les diagrammes UML à partir de vos dépendances maven. C'est très pratique pour comprendre les bibliothèques dont vous dépendez. Il inspecte en fait les classes compilées avec réflexion, donc aucune source n'est nécessaire

Soyez le premier à le regarder sur GitHub: P


4

Je recommanderais EclipseUML d'Omondo pour une utilisation générale, même si j'ai rencontré quelques problèmes il y a quelques mois avec mes projets Web. Ils ont eu une édition gratuite à un moment donné, mais qui ne serait plus promue.

Si vous aimez vraiment les diagrammes de séquence de rétro-ingénierie à partir du code source, je recommanderais jTracert .

En ce qui concerne les projets Eclipse eux-mêmes, le projet Eclipse UML2 Tools peut prendre en charge la rétro-ingénierie, bien que je n'ai jamais vu son utilisation dans la pratique.

Le projet MoDisco (Model Discovery) Le projet Eclipse GMT semble être plus clair pour atteindre votre objectif. La liste des outils technologiques spécifiques serait un bon point de départ.


Je n'ai pas trouvé cette fonctionnalité d'ingénierie inverse dans les outils UML2; (
OneWorld

2
jTracert est désormais interrompu. Successeur de jTracert, un nouvel outil appelé jSonde est désormais sous licence GPL v3. jsonde.com
Alpine

Omondo est le meilleur pour java. Intégration vraiment propre, pas de mélange entre modèle et code. Superbe mais trop cher. Nous n'avons été autorisés à acheter qu'une seule licence, mais nous sommes plus de 20 modélisateurs à l'utiliser, car la sécurité est basée sur la connexion au nom d'utilisateur. Cela signifie que si 10 utilisateurs ont la même connexion, ils peuvent tous l'utiliser. Nous avons obtenu une licence avec le nom d'utilisateur Admin :-)
UML GURU

Le jSonden'est pas disponible dans l'URL ci-dessus. Vous pouvez trouver un site Web et le code source dans Github: github.com/bedrin/jsonde .
Jaime

3

J'ai trouvé le plugin Green très simple à utiliser et à générer un diagramme de classes à partir du code source. Essaie :). Copiez simplement le plugin dans votre répertoire de plugins.


2
Le vert semble avoir un potentiel. Cependant, dans mon travail, nous avons un projet qui compte environ 700 classes et il s'étouffe un peu puis meurt.
Appak

3

Vous pouvez également essayer le modélisateur UML de Netbeans. Je l'ai utilisé pour générer du javacode que j'ai utilisé dans mes projets d'éclipse. Vous pouvez même importer des projets d'éclipse dans des netbeans et garder les paramètres d'éclipse synchronisés avec les paramètres du projet netbeans.

J'ai essayé plusieurs modélisateurs UML pour eclipse et je n'en étais pas satisfait. Ils étaient soit instables, compliqués ou tout simplement moches. ;-)


Je voulais juste mentionner que j'ai également utilisé le modélisateur Netbeans UML et que je n'ai pas rencontré de problèmes dans mes cas relativement simples. L'interface utilisateur n'est pas trop intuitive, mais c'est tout à fait correct. Le modélisateur a également des fonctionnalités avancées telles que la création de code d'entité JPA à partir du modèle si je me souviens bien.
Tuukka Mustonen

1
Malheureusement, il semble que le plugin UML ne soit plus pris en charge. Une réécriture du plugin est apparemment en cours mais cela n'aide personne car ils ont abandonné l'ancien plugin avant la fin de la réécriture.
Appak

C'est une déception :-( Espérons que la réécriture ne prendra pas trop de temps :-)
Patrick Cornelissen

1
L'UML pour NetBeans a été créé par VP. Ils ne le feront plus, seul leur VP UML est disponible maintenant, avec une version gratuite faible.
Gangnus

2

Utilisation d'IntelliJ IDEA. Pour générer le diagramme de classes, sélectionnez le package et appuyez sur Ctrl+ Alt+ U:entrez la description de l'image ici

Par défaut, il affiche uniquement les noms de classe et pas toutes les dépendances. Pour le changer: clic droit -> Afficher les catégories ... et Afficher les dépendances: entrez la description de l'image ici

Pour générer un diagramme de dépendances (diagramme de déploiement UML) et vous utilisez maven, allez Affichage -> Fenêtres d'outils -> Projets Maven et appuyez sur Ctrl+ Alt+ U: entrez la description de l'image ici

Le résultat: entrez la description de l'image ici

Il est également possible de générer d'autres diagrammes. Voir documentation .


2

Vous pouvez utiliser la version d'évaluation de 30 jours d'EclipseUML pour Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Ce n'est pas la dernière version 3.6, mais elle est plutôt bonne et ne vous oblige pas à l'acheter pour les tests et l'ingénierie inverse.

Rétroingénierie: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

Démo flash en direct: http://www.ejb3.org/reverse.swf

EclipseUML Omondo est le meilleur outil au monde pour Java. Seul eUML semble rivaliser avec lui sur ce marché de synchronisation Java en direct, mais eUML ajoute des balises de modèle dans le code, ce qui est vraiment très très mauvais et un non définitif pour moi.


1

De loin le meilleur outil que j'ai utilisé pour la rétro-ingénierie et le déclenchement rond java -> UML est Borland's Together . Il est basé sur Eclipse (pas seulement un seul plugin) et fonctionne vraiment bien.


Together est maintenant Micro Focus Together
Jaime

0

Je suggère PlantUML. cet outil est très utile et facile à utiliser. PlantUML a un plugin pour Netbeans que vous pouvez créer un diagramme UML à partir de votre code java.

vous pouvez installer le plugin PlantUML dans les netbeans par cette méthode:

Menu Netbeans -> Outils -> Plugin

Maintenant, sélectionnez Plugins disponibles, puis trouvez PlantUML et installez-le.

Pour plus d'informations, visitez le site Web: www.plantuml.com


0

J'ai remarqué que le plugin SequenceDiagram pour Intellij est également une bonne option.


1
Vérifiez ceci pour la génération: - quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/… (reverse engineering) && for Sketching: - guru99.com/ best-uml-tools.html (N'oubliez pas que tous les outils gratuits ne génèrent pas de diagrammes de séquence, peuvent uniquement prendre en charge les diagrammes de classe, j'ai utilisé SequenceDiagram pour la génération et draw.io pour la création manuelle de diagrammes UML)
whoami

0

Un autre outil de modélisation pour Java est (mon) site Web GitUML . Générez des diagrammes UML à partir du code Java ou Python stocké dans les référentiels GitHub.

Une idée clé avec GitUML est de résoudre l'un des problèmes de la "documentation": les diagrammes sont toujours obsolètes. Avec GitUML, les diagrammes sont automatiquement mis à jour lorsque vous envoyez du code à l'aide de git.

Parcourez les diagrammes UML de la communauté, il y a quelques modèles de conception Java. Naviguez à travers les référentiels GitHub populaires et visualisez les architectures et les modèles qui s'y trouvent.

navigateur de diagramme

Créez des diagrammes en utilisant pointer et cliquer. Il n'y a pas d'éditeur de glisser-déposer, cliquez simplement sur les classes dans l'arborescence du référentiel que vous souhaitez visualiser:

sélectionnez les classes java que vous souhaitez visualiser

La technologie sous-jacente est basée sur PlantUML, ce qui signifie que vous pouvez affiner vos diagrammes avec un balisage PlantUML supplémentaire.


0

Il existe un outil gratuit nommé binarydoc qui peut générer UML Sequence Diagram, ou Control Flow Graph( CFG) à partir du bytecode(au lieu du code source) d'une méthode Java.

Voici un exemple de diagramme binaire généré pour la méthode java java.net.AbstractPlainSocketImpl.getInputStream :

  • Graphique de flux de contrôle de la méthode java.net.AbstractPlainSocketImpl.getInputStream:

Graphique de flux de contrôle

  • Diagramme de séquence UML de la méthode java.net.AbstractPlainSocketImpl.getInputStream:

Diagramme de séquence UML

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.