Come posso generare diagrammi UML (specialmente diagrammi di sequenza) dal codice Java esistente?
Come posso generare diagrammi UML (specialmente diagrammi di sequenza) dal codice Java esistente?
Risposte:
È quello che ho usato. Si installa facilmente dal repository:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
E produce diagrammi UML abbastanza belli:
ObjectAid UML Explorer è diverso dagli altri strumenti UML. Utilizza la notazione UML per mostrare una rappresentazione grafica del codice esistente che è accurata e aggiornata come l'editor di testo, pur essendo molto facile da usare. Diverse caratteristiche uniche lo rendono possibile:
- Il codice sorgente e le librerie sono il modello visualizzato, non sono retroingegnerizzati in un formato diverso.
- Se aggiorni il tuo codice in Eclipse, anche il diagramma viene aggiornato; non è necessario decodificare il codice sorgente.
- Refactoring aggiorna il diagramma e il codice sorgente. Quando si rinomina un campo o si sposta una classe, il diagramma riflette semplicemente le modifiche senza andare fuori sincrono.
- Tutti i diagrammi nell'area di lavoro di Eclipse vengono aggiornati con modifiche di refactoring come appropriato. Se necessario, vengono estratti dal sistema di controllo della versione.
- I diagrammi sono completamente integrati nell'IDE Eclipse. È possibile trascinare le classi Java da qualsiasi altra vista sul diagramma e le informazioni relative al diagramma sono mostrate in altre viste ove applicabile.
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: Se sei un designer, Papyrus è la tua scelta migliore, è molto avanzato e pieno di funzionalità, ma se vuoi solo delineare alcuni diagrammi UML e una facile installazione, ObjectAid è piuttosto interessante e non richiede plug-in I appena installato su Eclipse-Java EE e funziona alla grande!
AGGIORNAMENTO 11 ottobre 2013
Il mio post originale era a giugno 2012 molte cose sono cambiate, molti strumenti sono cresciuti e altri no. Dato che torno a fare un po 'di modellazione e anche a ricevere alcune risposte al post, ho deciso di installare nuovamente papyrus e esaminerò di nuovo altre possibili soluzioni di modellazione UML. La generazione di UML (con funzionalità di sincronizzazione) è davvero importante non per il progettista di software ma per lo sviluppatore medio.
Vorrei che il papiro avesse un modo semplice per invertire le classi dell'Ingegnere nel diagramma delle classi UML e sarebbe fantastico se quel reverse engineering avesse una funzione di sincronizzazione, ma sfortunatamente il progetto papyrus è pieno di funzionalità e penso che gli sviluppatori abbiano già molto a portata di mano poiché anche molti le azioni che fai sul papiro potrebbero non darti alcuna risposta e semplicemente non succede nulla, ma questo è al di fuori di questo ambito di domanda.
La risposta (11 ottobre 2013)
Utensili
passi
Fai clic con il tasto destro su MyProject_kdm.xmi -> Discovery -> Discoverer -> Scopri di nuovo il modello UML dal codice KDM otterrai una finestra di dialogo delle proprietà imposta il prop di serializzazione su TRUE per generare un file chiamato MyProject.uml
Sposta il file MyProject.uml generato nella directory principale, nella cartella UML, Eclipse ti chiederà se desideri sostituirlo, fai clic su Sì. Quello che abbiamo fatto qui è che abbiamo sostituito un modello vuoto con uno generato.
ALT + W -> mostra vista -> papiro -> esploratore modello
In quella vista, troverai le tue lezioni come nella foto
Nella vista Fare clic con il pulsante destro del mouse sul modello radice -> Nuovo diagramma
Quindi iniziare a prendere le classi nel diagramma dalla vista
Alcune funzionalità
Per mostrare gli elementi della classe (variabili, funzioni ecc.) Fare clic con il tasto destro del mouse su qualsiasi classe -> Filtri -> mostra / nascondi contenuti Voila !!
Puoi avere impostazioni di colore intuitive predefinite da Finestra -> pereferenze -> papiro -> diagramma di classe
un'impostazione molto importante è Disposizione quando si rilasciano le classi ottengono un clic destro su qualsiasi spazio vuoto in un diagramma di classe e fare clic su Disponi tutto
Le frecce nella vista Esplora modelli possono essere catturate nel diagramma per mostrare generalizzazione, realizzazione ecc
Dopo tutto ciò le tue impostazioni mostreranno diagrammi simili
La sincronizzazione non è disponibile per quanto ne so, dovrai importare manualmente eventuali nuove classi.
Questo è tutto, e non comprare prodotti commerciali a meno che tu non ne abbia davvero bisogno, il papiro è in realtà fantastico e sofisticato invece di donare o qualcosa del genere.
Disclaimer: non ho alcuna relazione con i papiri, infatti, all'inizio non mi piaceva il papiro fino a quando non ho fatto molte ricerche e l'ho vissuto con un po 'di pazienza. E tornerò di nuovo a questo post quando provo altri strumenti gratuiti.
Qual è la tua base di codice? Java o C ++?
eUML2 per Java è un potente modellatore UML progettato per lo sviluppatore Java in Eclipse. L'edizione gratuita può essere utilizzata per uso commerciale. Supporta le seguenti funzionalità:
- CVS e supporto team
- Progettato per progetti di grandi dimensioni con viste modello multiple e personalizzabili
- Conformità Helios
- Sincronizzazione del codice / modello in tempo reale
- Conformità UML2.1 e supporto di OMG XMI
- Supporto JDK 1.4 e 1.5
L'edizione commerciale prevede:
Ingegneria inversa avanzata
- Potenti strumenti di analisi della vera dipendenza
- Profilo UML e MDD
- Strumenti di database
- Supporto template personalizzabile
Sono uno degli autori, quindi la risposta può essere parziale. È open-source (Apache 2.0), ma il plug-in non è gratuito. Non devi pagare (ovviamente) se lo cloni e lo costruisci localmente.
Su Intellij IDEA, ZenUML può generare un diagramma di sequenza dal codice Java.
Dai un'occhiata a https://plugins.jetbrains.com/plugin/12437-zenuml-support
Codice sorgente: https://github.com/ZenUml/jetbrains-zenuml
Che ne dici di PlantUML ? Non è per il reverse engineering !!! È per l'ingegneria prima del codice.
Ho sviluppato un plug-in maven che può essere eseguito dalla CLI come obiettivo del plug-in o importato come dipendenza e utilizzare a livello di codice il parser @see Main#main()
per avere un'idea di come.
Si rende PlantUml src codice di pacchetti desiderati in modo ricorsivo che è possibile modificare manualmente se necessario (si spera che non lo farai). Quindi, incollando il codice nella pagina plantUML o scaricando il barattolo di pianta puoi renderizzare il diagramma UML come immagine png.
Dai un'occhiata qui https://github.com/juanmf/Java2PlantUML
Esempio di diagramma di output:
Qualsiasi contributo è più che benvenuto. Ha una serie di filtri che personalizzano l'output ma non li ho ancora esposti nei parametri della CLI del plug-in.
È importante notare che non è limitato ai tuoi file * .java, ma può anche rendere i diagrammi UML src dalle tue dipendenze. Questo è molto utile per capire le librerie da cui dipendi. Ispeziona effettivamente le classi compilate con la riflessione, quindi non è necessaria alcuna fonte
Sii il primo a recitare su GitHub: P
Consiglierei EclipseUML di Omondo per uso generale, anche se alcuni mesi fa ho riscontrato dei problemi con i miei progetti web. Hanno avuto un'edizione gratuita ad un certo punto nel tempo, ma presumibilmente non è più promossa.
Se sei davvero appassionato di diagrammi di sequenza di reverse engineering dal codice sorgente, consiglierei jTracert .
Per quanto riguarda i progetti Eclipse stessi, il progetto Eclipse UML2 Tools potrebbe supportare il reverse engineering, anche se non ne ho mai visto l'uso in pratica.
Il progetto Eclipse GMT del progetto MoDisco (Model Discovery) sembra essere più chiaro nel raggiungimento del tuo obiettivo. L' elenco di strumenti specifici per la tecnologia sarebbe un buon punto di partenza.
jSonde
è disponibile nell'URL mostrato sopra. Puoi trovare un sito Web e il codice sorgente in Github: github.com/bedrin/jsonde .
Ho trovato il plugin Green molto semplice da usare e per generare un diagramma di classe dal codice sorgente. Provaci :). Copia il plug-in nella tua directory dei plug-in.
Puoi anche provare il modellatore UML di netbeans. L'ho usato per generare javacode che ho usato nei miei progetti eclissi. Puoi persino importare progetti eclipse in netbeans e mantenere sincronizzate le impostazioni eclipse con le impostazioni del progetto netbeans.
Ho provato diversi modellatori UML per eclissi e non ero soddisfatto. Erano instabili, complicati o semplicemente brutti. ;-)
Utilizzo di IntelliJ IDEA. Per generare il diagramma di classe selezionare il pacchetto e premere Ctrl+ Alt+ U:
Per impostazione predefinita, visualizza solo i nomi delle classi e non tutte le dipendenze. Per cambiarlo: tasto destro -> Mostra categorie ... e Mostra dipendenze:
Per separare il diagramma delle dipendenze (diagramma di distribuzione UML) e usare maven vai su Visualizza -> Strumenti Windows -> Progetti Maven e premi Ctrl+ Alt+ U:
Inoltre è possibile generare più altri diagrammi. Vedere la documentazione .
Puoi utilizzare la build di valutazione di 30 giorni di EclipseUML per Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Questa non è l'ultima build 3.6, ma è abbastanza buona e non è necessario acquistarlo per test e reverse engineering.
Ingegneria inversa: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html
Demo flash live: http://www.ejb3.org/reverse.swf
EclipseUML Omondo è lo strumento migliore al mondo per Java. Solo eUML sembra competere con esso su questo mercato di sincronizzazione java live, ma eUML aggiunge tag di modello nel codice che è davvero pessimo e un definitivo non andare per me.
Di gran lunga lo strumento migliore che ho usato per il reverse engineering e il round trip java -> UML è Borland's Together . Si basa su Eclipse (non solo un singolo plugin) e funziona davvero bene.
Suggerisco PlantUML. questo strumento è molto utile e facile da usare. PlantUML ha un plugin per Netbeans che puoi creare diagrammi UML dal tuo codice java.
puoi installare il plug-in PlantUML nei netbeans con questo metodo:
Menu Netbeans -> Strumenti -> Plugin
Ora seleziona Plugin disponibili e trova PlantUML e installalo.
Per ulteriori informazioni, visitare il sito Web: www.plantuml.com
Ho notato che anche il plugin SequenceDiagram per Intellij è una buona opzione.
Un altro strumento di modellazione per Java è il (mio) sito Web GitUML . Genera diagrammi UML da codice Java o Python archiviati nei repository GitHub.
Un'idea chiave con GitUML è quella di affrontare uno dei problemi con la "documentazione": i diagrammi sono sempre obsoleti. Con GitUML, i diagrammi si aggiornano automaticamente quando si invia il codice usando git.
Sfoglia i diagrammi UML della community, ci sono alcuni modelli di progettazione Java lì. Naviga attraverso i famosi repository GitHub e visualizza le architetture e i modelli in essi contenuti.
Crea diagrammi usando punta e clicca. Non esiste un editor di trascinamento della selezione, è sufficiente fare clic sulle classi nella struttura del repository che si desidera visualizzare:
La tecnologia di base è basata su PlantUML, il che significa che puoi perfezionare i tuoi diagrammi con il markup PlantUML aggiuntivo.
Esiste uno strumento gratuito chiamato binarydoc che può generare UML Sequence Diagram
, o Control Flow Graph
( CFG
) dal bytecode
(invece del codice sorgente) di un metodo Java.
Ecco un diagramma di esempio binarydoc generato per il metodo java java.net.AbstractPlainSocketImpl.getInputStream :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: