Comment puis-je générer des diagrammes UML (en particulier des diagrammes de séquence) à partir du code Java existant?
java
uml
reverse-engineering
diagram
Jonathan
la source
la source
Réponses:
Explorateur UML ObjectAid
C'est ce que j'ai utilisé. Il s'installe facilement depuis le référentiel:
Et produit de très beaux diagrammes UML:
Description du site Web:
la source
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.
la source
Quelle est votre base de code? Java ou C ++?
la source
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
la source
Que diriez - vous PlantUml ? Ce n'est pas pour l'ingénierie inverse !!! C'est pour l'ingénierie avant de coder.
la source
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
la source
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.
la source
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.
la source
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. ;-)
la source
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:
Le résultat:
Il est également possible de générer d'autres diagrammes. Voir documentation .
la source
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.
la source
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.
la source
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
la source
J'ai remarqué que le plugin SequenceDiagram pour Intellij est également une bonne option.
la source
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.
la source
Il existe un outil gratuit nommé binarydoc qui peut générer
UML Sequence Diagram
, ouControl Flow Graph
(CFG
) à partir dubytecode
(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
:la source