Comment puis-je générer des diagrammes UML (en particulier des diagrammes de séquence) à partir du code Java existant?
Comment puis-je générer des diagrammes UML (en particulier des diagrammes de séquence) à partir du code Java existant?
Réponses:
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:
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.
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.
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
Pas
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
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é.
ALT + W -> afficher la vue -> papyrus -> model explorer
Dans cette vue, vous trouverez vos classes comme dans l'image
Dans la vue Clic droit sur le modèle racine -> Nouveau diagramme
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
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.
Quelle est votre base de code? Java ou C ++?
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
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.
Découvrez-le sur https://plugins.jetbrains.com/plugin/12437-zenuml-support
Code source: https://github.com/ZenUml/jetbrains-zenuml
Que diriez - vous PlantUml ? Ce n'est pas pour l'ingénierie inverse !!! C'est pour l'ingénierie avant de coder.
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:
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
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.
jSonde
n'est pas disponible dans l'URL ci-dessus. Vous pouvez trouver un site Web et le code source dans Github: github.com/bedrin/jsonde .
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.
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. ;-)
Utilisation d'IntelliJ IDEA. Pour générer le diagramme de classes, sélectionnez le package et appuyez sur Ctrl+ Alt+ U:
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:
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:
Il est également possible de générer d'autres diagrammes. Voir documentation .
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.
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.
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
J'ai remarqué que le plugin SequenceDiagram pour Intellij est également une bonne option.
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.
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:
La technologie sous-jacente est basée sur PlantUML, ce qui signifie que vous pouvez affiner vos diagrammes avec un balisage PlantUML supplémentaire.
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 :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: