Come generare diagrammi UML (soprattutto diagrammi di sequenza) dal codice Java?


434

Come posso generare diagrammi UML (specialmente diagrammi di sequenza) dal codice Java esistente?


3
È improbabile che ciò accada. Il vero codice Java non è strutturato in modo da apparire bello come i diagrammi UML.
Stephan Eggermont,

1
Tante risposte che non affrontano i diagrammi di sequenza. Hmph
Bill K

@BillK la mia risposta riguarda i diagrammi di sequenza. Si tratta di un'idea IntelliJ plugin - stackoverflow.com/a/45239269/529187 .
Xiao Peng - ZenUML.com,

1
Questa domanda è più appropriata per lo scambio di stack di raccomandazioni software del sito affiliato .
Basil Bourque,

Risposte:


257

Explorer UML ObjectAid

È 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:

Immagine dello schermo

Descrizione dal sito Web:

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.

Più facile del papiro, ma con meno opzioni per creare diagrammi.
lcardosobr,

In ObjectAid, c'è un modo per organizzare automaticamente il diagramma delle classi?
Riutilizzabile il

4
Come >>> Crea un account qui: objectaid.com/login (l'email di attivazione è stata inviata in 10 minuti), fai clic su Componente aggiuntivo diagramma, la licenza verrà inviata alla tua email. Segui objectaid.com/installation per installare ObjectAid, quindi installa GEF da download.eclipse.org/tools/gef/updates/releases Ora copia e incolla la licenza dall'e-mail a Window-> Preferenze-> ObjectAid Come creare un diagramma? objectaid.com/class-diagram
rluks

Impossibile installare in 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 versione commerciale di ObjectAid può fare di meglio quando si tratta di generare diagrammi di sequenza vs liberi può essere utilizzato solo per generare diagrammi di classe !!
whoami,

63

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

  1. Scarica Papyrus
  2. Vai su Aiuto -> Installa nuovo software ...
  3. Nel menu a discesa Lavora con: seleziona - Tutti i siti disponibili--
  4. Nel filtro, digita Papyrus
  5. Al termine dell'installazione, riavviare Eclipse
  6. Ripeti i passaggi 1-3 e questa volta installa Modisco

passi

  1. Nel tuo progetto java (supponi che si chiami MyProject) crea una cartella come UML
  2. Fai clic con il pulsante destro del mouse sul nome del progetto -> Discovery -> Discoverer -> Scopri Java e il modello di inventario dal progetto Java, verrà generato un file chiamato MyProject_kdm.xmi. inserisci qui la descrizione dell'immagine
  3. Fare clic con il pulsante destro del mouse sul file del nome del progetto -> nuovo -> modello papiro -> e chiamarlo MyProject.
  4. Spostare i tre file generati MyProject.di, MyProject.notation, MyProject.uml nella cartella UML
  5. 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 inserisci qui la descrizione dell'immagine

  6. 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.

  7. ALT + W -> mostra vista -> papiro -> esploratore modello

  8. In quella vista, troverai le tue lezioni come nella foto inserisci qui la descrizione dell'immagine

  9. Nella vista Fare clic con il pulsante destro del mouse sul modello radice -> Nuovo diagramma inserisci qui la descrizione dell'immagine

  10. 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 inserisci qui la descrizione dell'immagine

  • 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.


Ho cercato Modisco in eclissi. si presentava con 0 non installabile. Questo progetto è vivo o portato via? È diventato uno strumento a pagamento. Papiro non funzionerà senza questo?
R-JANA,

STS usato e non riuscito.
R-JANA,

@ R-JANA Non so quale sia lo stato attuale di Modisco, ma tornerò a questo post al più presto perché sto per installare presto papiro e dovrò aggiornarlo. Ti consiglio di provare tu stesso a installare papiro, tenendo presente il mio post attuale; Penso che molti cambiamenti siano avvenuti da quando ho pubblicato questa risposta.
Ismail Marmoush,

Esiste un plug-in opzionale per Papyrus, che aggiunge la funzionalità di reverse engineering Java: wiki.eclipse.org/Java_reverse_engineering . Con questo, è molto più semplice aggiungere elementi del diagramma dall'origine, puoi persino trascinare le classi in un diagramma.
Markus Ende,

42

Qual è la tua base di codice? Java o C ++?

testo alternativo

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

20
Questo è uno strumento molto difficile da installare. Ho provato per circa mezz'ora senza successo. Qualche altro suggerimento?
Jonathan,

2
Non riesco a trovare eUML2 è il mio Update Managaer e non voglio creare una nuova configurazione di Eclipse proprio da questa funzione. Sto usando Eclipse "Helios" e vado in questo modo: Aiuto - Installa nuovo software - Helios download.eclipse.org/releases/helios - Modellazione
OneWorld

3
So che questo è un vecchio post, ma la maggior parte dei problemi con l'installazione di eUML2 sembra essere stata risolta.
Andy,

7
eUML è una vera merda. Ha cambiato il mio formato di codice e aggiunto tag ovunque. Il mio codice ora è così sporco che preferisco annullare la modifica. Il problema è che non c'è annullamento e il tuo codice è cambiato per sempre. Consiglio di eseguire il backup del progetto prima di utilizzare eUML crapper :-)
UML GURU

31
Hai mai sentito parlare del controllo della versione?
divorò l'elisio

9

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. inserisci qui la descrizione dell'immagine

Dai un'occhiata a https://plugins.jetbrains.com/plugin/12437-zenuml-support

Codice sorgente: https://github.com/ZenUml/jetbrains-zenuml


1
@hc_dev, grazie per il tuo promemoria. Aggiunta quella nota.
Xiao Peng - ZenUML.com

7

Che ne dici di PlantUML ? Non è per il reverse engineering !!! È per l'ingegneria prima del codice.


4
Non risponde alla domanda, che richiede chiaramente uno strumento di reverse engineering.
jmite,

1
Non sono sicuro che sia completamente corretto. PlantUML è anche in grado di descrivere il codice con diagrammi. Prova ad aprire la vista pertinente in un file di classe
Erez A. Korn il

1
Sì, posso verificare che i diagrammi di classe vengano creati automaticamente dai file Java nel plugin Eclipse.
HRJ,

1
Ho provato questo, ma se il tuo codice PlantUML diventa troppo complesso, passi tutto il tuo tempo a cercare di capire perché il disegno non viene visualizzato correttamente e presenta problemi. Va bene solo per piccoli diagrammi.
trusktr,

In Intellij, combinando PlantUML con Sketch It! e graphviz può generare diagrammi di classe dal codice. Funziona meglio per piccoli pacchetti, i png non sembrano essere completamente creati quando i diagrammi diventano troppo grandi.
Melissa Loos,

6

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: inserisci qui la descrizione dell'immagine

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


4

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.


Non ho trovato quella funzione di reverse engineering in UML2 Tools; (
OneWorld

2
jTracert è ora fuori produzione. Un successore di jTracert, un nuovo strumento chiamato jSonde è ora concesso in licenza con GPL v3. jsonde.com
Alpino,

Omondo è il migliore per Java. Integrazione davvero pulita, nessun mix tra modello e codice. Superbo ma troppo costoso. Ci è stato permesso di acquistare una sola licenza, ma ci sono oltre 20 modellatori che la utilizzano perché la sicurezza si basa sull'accesso al nome utente. Significa che se 10 utenti hanno lo stesso login, tutti possono usarlo. Abbiamo ottenuto una licenza con nome utente Admin :-)
UML GURU

Non jSondeè disponibile nell'URL mostrato sopra. Puoi trovare un sito Web e il codice sorgente in Github: github.com/bedrin/jsonde .
Jaime

3

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.


2
Il verde sembra avere un potenziale. Tuttavia nel mio lavoro abbiamo un progetto che ha ~ 700 classi e si soffoca per un po 'e poi muore.
Appak,

3

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. ;-)


Volevo solo ricordare che ho anche usato il modellatore UML di Netbeans e non ho incontrato problemi nei miei casi relativamente semplici. L'interfaccia utente non è troppo intuitiva, ma è del tutto ok. Il modellatore ha anche alcune funzionalità avanzate come la creazione di codice entità JPA fuori modello se ricordo bene.
Tuukka Mustonen,

1
Sfortunatamente sembra che il plug-in UML non sia più supportato. Apparentemente è in corso una riscrittura del plug- in, ma ciò non aiuta nessuno poiché hanno abbandonato il vecchio plug-in prima che la riscrittura fosse completata.
Appak

È un peccato :-( Speriamo che la riscrittura non richieda troppo tempo :-)
Patrick Cornelissen

1
L'UBL per NetBeans è stato realizzato da VP. Non lo faranno più, solo il loro VP UML è ora disponibile, con una versione gratuita debole.
Gangnus,

2

Utilizzo di IntelliJ IDEA. Per generare il diagramma di classe selezionare il pacchetto e premere Ctrl+ Alt+ U:inserisci qui la descrizione dell'immagine

Per impostazione predefinita, visualizza solo i nomi delle classi e non tutte le dipendenze. Per cambiarlo: tasto destro -> Mostra categorie ... e Mostra dipendenze: inserisci qui la descrizione dell'immagine

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: inserisci qui la descrizione dell'immagine

Il risultato: inserisci qui la descrizione dell'immagine

Inoltre è possibile generare più altri diagrammi. Vedere la documentazione .


2

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.



0

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


0

Ho notato che anche il plugin SequenceDiagram per Intellij è una buona opzione.


1
Controllare questo per la generazione: - quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/... (reverse engineering) && per il disegno: - guru99.com/ best-uml-tools.html (Ricorda che non tutti gli strumenti gratuiti generano diagrammi di sequenza, possono supportare solo diagrammi di classe, ho usato SequenceDiagram per la generazione e draw.io per la creazione manuale di diagrammi UML)
whoami,

0

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.

browser dei diagrammi

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:

seleziona le classi java che desideri visualizzare

La tecnologia di base è basata su PlantUML, il che significa che puoi perfezionare i tuoi diagrammi con il markup PlantUML aggiuntivo.


0

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 :

  • Grafico del flusso di controllo del metodo java.net.AbstractPlainSocketImpl.getInputStream:

Grafico del flusso di controllo

  • Diagramma sequenza UML del metodo java.net.AbstractPlainSocketImpl.getInputStream:

Diagramma sequenza UML

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.