Jak generować diagramy UML (szczególnie diagramy sekwencji) z kodu Java?

434

Jak mogę generować diagramy UML (szczególnie diagramy sekwencji) z istniejącego kodu Java?

Jonathan
źródło
3
To mało prawdopodobne. Prawdziwy kod Java nie ma struktury, która wygląda ładnie jak diagramy UML.
Stephan Eggermont,
1
Tak wiele odpowiedzi, które nie odnoszą się do diagramów sekwencji. Hmph
Bill K
@BillK moja odpowiedź robi diagramy sekwencji adresów. Jest to wtyczka Intellij Idea - stackoverflow.com/a/45239269/529187 .
Xiao Peng - ZenUML.com
1
To pytanie jest bardziej odpowiednie dla siostrzanej witryny Zalecenia dotyczące oprogramowania Wymiana stosów .
Basil Bourque,

Odpowiedzi:

257

ObjectAid UML Explorer

To jest to, czego użyłem. Jest łatwy do zainstalowania z repozytorium:

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

I produkuje całkiem ładne diagramy UML:

Zrzut ekranu

Opis ze strony:

ObjectAid UML Explorer różni się od innych narzędzi UML. Wykorzystuje notację UML, aby pokazać graficzną reprezentację istniejącego kodu, który jest tak dokładny i aktualny jak edytor tekstu, a jednocześnie jest bardzo łatwy w użyciu. Jest to możliwe dzięki kilku unikalnym funkcjom:

  • Kod źródłowy i biblioteki są wyświetlanym modelem, nie są one odtwarzane w innym formacie.
  • Jeśli zaktualizujesz kod w Eclipse, twój diagram również zostanie zaktualizowany; nie ma potrzeby odwracania kodu źródłowego.
  • Refaktoryzacja aktualizuje diagram, a także kod źródłowy. Kiedy zmieniasz nazwę pola lub przenosisz klasę, twój diagram po prostu odzwierciedla zmiany bez utraty synchronizacji.
  • Wszystkie diagramy w twoim obszarze roboczym Eclipse są aktualizowane odpowiednio zmianami refaktoryzacji. W razie potrzeby są one sprawdzane w systemie kontroli wersji.
  • Diagramy są w pełni zintegrowane z Eclipse IDE. Możesz przeciągać klasy Java z dowolnego innego widoku na diagram, a informacje związane z diagramem są wyświetlane w innych widokach, tam gdzie ma to zastosowanie.
Thomas Ahle
źródło
Łatwiej niż Papirus, ale z mniejszą liczbą opcji tworzenia diagramów.
lcardosobr
Czy w ObjectAid istnieje sposób na automatyczną aranżację diagramu klas?
Wielokrotnego użytku
4
Poradnik >>> Utwórz konto tutaj: objectaid.com/login (e-mail aktywacyjny został wysłany w 10 minut), kliknij Diagram Add-On, licencja zostanie wysłana na Twój e-mail. Postępuj zgodnie z tą objectaid.com/installation, aby zainstalować ObjectAid, a następnie zainstaluj GEF z download.eclipse.org/tools/gef/updates/releases Teraz skopiuj-wklej licencję z e-maila do Window-> Preferencje-> ObjectAid Jak utworzyć diagram? objectaid.com/class-diagram
rluks,
Nie można zainstalować w 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
Komercyjna wersja ObjectAid może działać lepiej, jeśli chodzi o generowanie diagramów sekwencji w porównaniu z darmowym, można jedynie używać do generowania diagramów klas !!
whoami,
63

EDYCJA: Jeśli jesteś projektantem, Papyrus jest najlepszym wyborem, jest bardzo zaawansowany i pełen funkcji, ale jeśli chcesz tylko naszkicować niektóre diagramy UML i łatwą instalację, ObjectAid jest całkiem fajny i nie wymaga żadnych wtyczek I właśnie zainstalowałem go na Eclipse-Java EE i działa świetnie!


AKTUALIZACJA 11 października 2013 r

Mój oryginalny post był w czerwcu 2012 r. Wiele rzeczy się zmieniło, wiele narzędzi się rozwinęło, a inne nie. Ponieważ wracam do trochę modelowania, a także otrzymuję odpowiedzi na post, postanowiłem ponownie zainstalować papirus i ponownie zbadam inne możliwe rozwiązania modelowania UML. Generowanie UML (z funkcją synchronizacji) jest naprawdę ważne nie dla projektanta oprogramowania, ale dla przeciętnego programisty.

Chciałbym, żeby papirus miał prostą drogę do klas inżynierii odwrotnej na diagram klasy UML i byłoby super fajnie, gdyby ta inżynieria odwrotna miała funkcję synchronizacji, ale niestety projekt papirusu jest pełen funkcji i myślę, że programiści mają już pod ręką wiele, ponieważ wiele działania, które wykonujesz w stosunku do papirusu, mogą nie dać żadnej odpowiedzi i po prostu nic się nie dzieje, ale to i tak nie wchodzi w zakres tego pytania.

Odpowiedź (11 października 2013)

Przybory

  1. Pobierz Papyrus
  2. Przejdź do Pomoc -> Zainstaluj nowe oprogramowanie ...
  3. Z menu rozwijanego Praca z: wybierz - Wszystkie dostępne witryny--
  4. W filtrze wpisz Papyrus
  5. Po zakończeniu instalacji uruchom ponownie Eclipse
  6. Powtórz kroki 1-3 i tym razem zainstaluj Modisco

Kroki

  1. W swoim projekcie Java (zakładając, że nazywa się MyProject) utwórz folder, np. UML
  2. Kliknij prawym przyciskiem myszy nazwę projektu -> Odkrycie -> Odkrywca -> Odkryj Javę i model ekwipunku z projektu Java, zostanie wygenerowany plik o nazwie MyProject_kdm.xmi. wprowadź opis zdjęcia tutaj
  3. Kliknij prawym przyciskiem myszy plik nazwy projektu -> nowy -> model papirusu -> i nazwij go MyProject.
  4. Przenieś trzy wygenerowane pliki MyProject.di, MyProject.notation, MyProject.uml do folderu UML
  5. Kliknij prawym przyciskiem myszy MyProject_kdm.xmi -> Odkrycie -> Odkrywca -> Ponownie odkryj model UML z kodu KDM, otrzymasz okno właściwości, ustaw propozycję serializacji na PRAWDA, aby wygenerować plik o nazwie MyProject.uml wprowadź opis zdjęcia tutaj

  6. Przenieś wygenerowany MyProject.uml, który został wygenerowany w katalogu głównym, do folderu UML, Eclipse zapyta Cię, czy chcesz go zastąpić, kliknij tak. To, co tutaj zrobiliśmy, polegało na tym, że zastąpiliśmy pusty model wygenerowanym.

  7. ALT + W -> pokaż widok -> papirus -> model explorer

  8. W tym widoku znajdziesz swoje zajęcia jak na zdjęciu wprowadź opis zdjęcia tutaj

  9. W widoku Kliknij prawym przyciskiem myszy model główny -> Nowy diagram wprowadź opis zdjęcia tutaj

  10. Następnie zacznij pobierać klasy do diagramu z widoku

Niektóre funkcje

  • Aby wyświetlić elementy klasy (zmienne, funkcje itp.) Kliknij dowolną klasę prawym przyciskiem myszy -> Filtry -> pokaż / ukryj zawartość Voila !!

  • Możesz mieć domyślne przyjazne ustawienia kolorów w Oknie -> pereferencje -> papirus -> diagram klas

  • jednym bardzo ważnym ustawieniem jest Rozmieść, kiedy upuszczasz klasy, ciasno klikają prawym przyciskiem myszy dowolne puste miejsce na schemacie klas i klikają Rozmieść wszystko

  • Strzałki w widoku eksploratora modelu można pobrać na diagramie, aby pokazać uogólnienie, realizację itp

  • Po tym wszystkim twoje ustawienia pokażą diagramy takie jak wprowadź opis zdjęcia tutaj

  • Synchronizacja nie jest dostępna, o ile wiem, że musisz ręcznie zaimportować nowe klasy.

To wszystko, i nie kupuj produktów komercyjnych, chyba że naprawdę tego potrzebujesz, papirus jest naprawdę świetny i wyrafinowany, zamiast tego przekaż darowiznę lub coś takiego.

Oświadczenie: Nie mam związku z papirusami, tak naprawdę nie lubiłem papirusu, dopóki nie przeprowadziłem wielu badań i nie doświadczyłem go z pewną cierpliwością. I wrócę do tego postu, gdy wypróbuję inne bezpłatne narzędzia.

Ismail Marmoush
źródło
W Eclipse szukałem Modisco. pokazało się z 0 niezmiennymi. Czy ten projekt jest żywy czy zabrany? Czy stało się płatnym narzędziem? Czy Papyrus nie ucieknie bez tego?
R-JANA
Używany STS i nieudany.
R-JANA
@ R-JANA Nie wiem, jaki jest obecny stan Modisco, ale wracam do tego postu JAK NAJSZYBCIEJ, bo wkrótce zamierzam zainstalować papirus i będę musiał go zaktualizować. Radzę spróbować samodzielnie zainstalować papirus, mając na uwadze mój obecny post; Myślę, że wiele się wydarzyło, odkąd opublikowałem tę odpowiedź.
Ismail Marmoush
Istnieje opcjonalna wtyczka dla Papyrus, która dodaje funkcjonalność inżynierii wstecznej Java: wiki.eclipse.org/Java_reverse_engineering . Dzięki temu znacznie łatwiej jest dodawać elementy diagramu ze źródła, a nawet przeciągać klasy do diagramu.
Markus Ende,
42

Jaka jest twoja baza kodów? Java czy C ++?

alternatywny tekst

eUML2 for Java to potężny modeler UML zaprojektowany dla programistów Java w Eclipse. Darmowa edycja może być używana do celów komercyjnych. Obsługuje następujące funkcje:

  • CVS i wsparcie zespołu
  • Zaprojektowany do dużych projektów z wieloma i dostosowywanymi widokami modelu
  • Zgodny z Helios
  • Synchronizacja kodu / modelu w czasie rzeczywistym
  • Zgodny z UML2.1 i wsparciem OMG XMI
  • Obsługa JDK 1.4 i 1.5
  • Wersja komercyjna zapewnia:

  • Zaawansowana inżynieria odwrócona

  • Potężne narzędzia do prawdziwej analizy zależności
  • Profil UML i MDD
  • Narzędzia bazy danych
  • Możliwość dostosowania szablonu
prakash
źródło
20
Jest to bardzo trudne narzędzie do zainstalowania. Próbowałem przez około pół godziny bezskutecznie. Jakieś inne sugestie?
Jonathan
2
Nie mogę znaleźć eUML2 to mój menedżer aktualizacji i nie chcę spakować nowej konfiguracji Eclipse tylko z tej funkcji. Korzystam z Eclipse „Helios” i idę w ten sposób: Pomoc - Zainstaluj nowe oprogramowanie - Helios download.eclipse.org/releases/helios - Modelowanie
OneWorld
3
Wiem, że to stary post, ale większość problemów z instalacją eUML2 wydaje się już rozwiązana.
Andy
7
eUML to prawdziwe badziewie. Zmieniło mój format kodu i dodało tagi wszędzie. Mój kod jest teraz tak brudny, że wolę cofnąć zmianę. Problem polega na tym, że nie ma cofania, a kod jest zmieniany na zawsze. Polecam wykonać kopię zapasową projektu przed użyciem crappera eUML :-)
UML GURU
31
Czy słyszałeś kiedyś o kontroli wersji?
pożarł elysium
9

Jestem jednym z autorów, więc odpowiedź może być stronnicza. Jest to oprogramowanie typu open source (Apache 2.0), ale wtyczka nie jest darmowa. Nie musisz płacić (oczywiście), jeśli sklonujesz i zbudujesz go lokalnie.

Na Intellij IDEA ZenUML może generować schemat sekwencji z kodu Java. wprowadź opis zdjęcia tutaj

Sprawdź to na https://plugins.jetbrains.com/plugin/12437-zenuml-support

Kod źródłowy: https://github.com/ZenUml/jetbrains-zenuml

Xiao Peng - ZenUML.com
źródło
1
@hc_dev, dziękuję za przypomnienie. Dodano tę notatkę.
Xiao Peng - ZenUML.com
7

Co powiesz na PlantUML ? To nie jest inżynieria odwrotna !!! To dla inżynierii, zanim napiszesz kod.

Zamel
źródło
4
Nie odpowiada na pytanie, które wyraźnie wymaga narzędzia inżynierii odwrotnej.
jmite
1
Nie jestem pewien, czy to całkowicie poprawne. PlantUML potrafi także opisywać kod za pomocą diagramów. Spróbuj otworzyć odpowiedni widok w pliku klasy
Erez A. Korn
1
Tak, mogę sprawdzić, czy diagramy klas są tworzone automatycznie z plików Java we wtyczce Eclipse.
HRJ
1
Próbowałem tego, ale jeśli kod PlantUML staje się zbyt skomplikowany, spędzasz cały swój czas, próbując dowiedzieć się, dlaczego rysunek nie wyświetla się poprawnie i ma usterki. Jest dobry tylko dla małych schematów.
trusktr
W Intellij łącząc PlantUML z Sketch It! i graphviz może generować diagramy klas z kodu. Działa najlepiej dla małych pakietów, pngs nie wydają się być w pełni tworzone, gdy diagramy stają się zbyt duże.
Melissa Loos
6

Opracowałem wtyczkę maven, która może być uruchamiana z CLI jako cel wtyczki lub importuj jako zależność i programowo używaj analizatora składni, @see Main#main()aby dowiedzieć się , jak to zrobić.

To powoduje PlantUML Src kod żądanych pakietów rekurencyjnie , które można edytować ręcznie w razie potrzeby (mam nadzieję, że nie będzie). Następnie, wklejając kod na stronie plantUML lub pobierając słoik rośliny, możesz wyrenderować diagram UML jako obraz png.

Sprawdź tutaj https://github.com/juanmf/Java2PlantUML

Przykładowy schemat wyjściowy: wprowadź opis zdjęcia tutaj

Każdy wkład jest mile widziany. Ma zestaw filtrów, które dostosowują dane wyjściowe, ale nie pokazałem ich jeszcze w parametrach CLI wtyczki.

Ważne jest, aby pamiętać, że nie ogranicza się to do twoich plików * .java, może również renderować diagramy UML src z twoich zależności maven. Jest to bardzo przydatne do zrozumienia bibliotek, od których zależysz. W rzeczywistości sprawdza skompilowane klasy za pomocą refleksji, więc żadne źródło nie jest potrzebne

Bądź pierwszym, który oznaczy go gwiazdką w GitHub: P

juanmf
źródło
4

Polecam EclipseUML z Omondo do ogólnego użytku, chociaż kilka miesięcy temu miałem problemy z moimi projektami internetowymi. W pewnym momencie mieli darmową edycję, ale podobno nie jest już promowana.

Jeśli naprawdę interesują Cię schematy sekwencji inżynierii odwrotnej z kodu źródłowego, polecam jTracert .

Jeśli chodzi o same projekty Eclipse, projekt Narzędzia Eclipse UML2 Tools może wspierać inżynierię wsteczną, chociaż nigdy nie widziałem jej zastosowania w praktyce.

Projekt MoDisco (Model Discovery) Eclipse GMT wydaje się być bardziej zrozumiały w osiąganiu celu. Lista narzędzi konkretnej technologii byłoby to dobre miejsce na początek.

Vineet Reynolds
źródło
Nie znalazłem tej funkcji inżynierii wstecznej w narzędziach UML2; (
OneWorld,
2
jTracert jest teraz wycofany. Następca jTracert, nowego narzędzia o nazwie jSonde, jest teraz licencjonowane na licencji GPL v3. jsonde.com
Alpine
Omondo jest najlepsze dla java. Naprawdę czysta integracja, bez mieszania modelu i kodu. Znakomity, ale zbyt drogi. Zezwolono nam na zakup tylko jednej licencji, ale korzystamy z niej ponad 20 modelarzy, ponieważ bezpieczeństwo opiera się na logowaniu do nazwy użytkownika. Oznacza to, że jeśli 10 użytkowników ma ten sam login, wszyscy mogą z niego korzystać. Mamy licencję z nazwą użytkownika Admin :-)
UML GURU
Nie jSondejest dostępny w powyższym adresie URL. Można znaleźć stronie internetowej i kodu źródłowego w Github: github.com/bedrin/jsonde .
Jaime,
3

Uważam, że zielona wtyczka jest bardzo łatwa w użyciu i generuje diagram klas z kodu źródłowego. Spróbuj :). Po prostu skopiuj wtyczkę do swojego katalogu wtyczek.

pcmind
źródło
2
Zieleń wydaje się mieć potencjał. Jednak w mojej pracy mamy projekt, który ma ~ 700 klas i przez chwilę trąci, a potem umiera.
Appak
3

Możesz także wypróbować modelera UML netbeans. Użyłem go do wygenerowania kodu javacode, którego użyłem w swoich projektach zaćmienia. Możesz nawet importować projekty zaćmień w netbeans i utrzymywać synchronizację ustawień zaćmienia z ustawieniami projektu netbeans.

Wypróbowałem kilka modeli UML do zaćmienia i nie byłem z nich zadowolony. Były albo niestabilne, skomplikowane, albo po prostu brzydkie. ;-)

Patrick Cornelissen
źródło
Chciałem tylko wspomnieć, że użyłem również modelera Netbeans UML i nie napotkałem problemów w moich stosunkowo prostych przypadkach. Interfejs użytkownika nie jest zbyt intuicyjny, ale jest całkowicie w porządku. Modelarz ma również kilka zaawansowanych funkcji, takich jak tworzenie kodu encji JPA poza modelem, jeśli dobrze pamiętam.
Tuukka Mustonen
1
Niestety wygląda na to, że wtyczka UML nie jest już obsługiwana. Przerobienia wtyczki jest podobno trwają, ale to nie pomoże nikomu, ponieważ spadła starą wtyczkę przed przepisać została zakończona.
Appak
To jest bummer :-( Miejmy nadzieję, że przepisanie nie potrwa zbyt długo :-)
Patrick Cornelissen
1
UML dla NetBeans został stworzony przez VP. Nie będą już tego robić, tylko ich VP UML jest już dostępny, ze słabą darmową wersją.
Gangnus
2

Korzystanie z IntelliJ IDEA. Aby wygenerować diagram klas, wybierz pakiet i naciśnij Ctrl+ Alt+ U:wprowadź opis zdjęcia tutaj

Domyślnie wyświetla tylko nazwy klas, a nie wszystkie zależności. Aby to zmienić: kliknij prawym przyciskiem myszy -> Pokaż kategorie ... i Pokaż zależności: wprowadź opis zdjęcia tutaj

Aby zgrupować diagram zależności (diagram wdrażania UML) i używasz maven, przejdź do Widok -> Narzędzie Windows -> Projekty Maven i naciśnij Ctrl+ Alt+ U: wprowadź opis zdjęcia tutaj

Wynik: wprowadź opis zdjęcia tutaj

Możliwe jest również generowanie większej liczby innych diagramów. Zobacz dokumentację .

Igor Rybak
źródło
2

Możesz użyć 30-dniowej wersji ewaluacyjnej EclipseUML dla Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip To nie jest najnowsza kompilacja 3.6, ale jest całkiem dobra i nie wymagają kupowania go do testowania i inżynierii wstecznej.

Inżynieria odwrotna: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

Wersja demonstracyjna flash na żywo: http://www.ejb3.org/reverse.swf

EclipseUML Omondo to najlepsze na świecie narzędzie do Java. Wydaje się, że tylko eUML konkuruje z nim na tym rynku synchronizacji na żywo java, ale eUML dodaje znaczniki modelowe w kodzie, co jest naprawdę bardzo złe i zdecydowanie dla mnie nie.

UML GURU
źródło
1

Zdecydowanie najlepsze narzędzie, jakiego użyłem do inżynierii odwrotnej, i java tripping tripping -> UML to Razem Borlanda . Opiera się na Eclipse (nie tylko jednej wtyczce) i naprawdę działa dobrze.

serg10
źródło
Razem jest teraz Micro Focus Razem
Jaime,
0

Sugeruję PlantUML. narzędzia te są bardzo przydatne i łatwe w użyciu. PlantUML ma wtyczkę do Netbeans, która umożliwia tworzenie diagramów UML na podstawie kodu Java.

możesz zainstalować wtyczkę PlantUML w netbeans tą metodą:

Menu Netbeans -> Narzędzia -> Wtyczka

Teraz wybierz Dostępne wtyczki, a następnie znajdź PlantUML i zainstaluj go.

Więcej informacji na stronie: www.plantuml.com

Masood
źródło
0

Zauważyłem, że wtyczka SequenceDiagram dla Intellij jest również dobrą opcją.

kim jestem
źródło
1
Sprawdź to dla generacji: - quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/... (inżynieria wsteczna) i& S do szkicowania: - guru99.com/ best-uml-tools.html (Pamiętaj, że nie wszystkie darmowe narzędzia generują diagramy sekwencji, mogą obsługiwać tylko diagramy klas, użyłem SequenceDiagram do generowania i draw.io do ręcznego tworzenia diagramów UML)
whoami
0

Kolejnym narzędziem do modelowania Java jest (moja) strona internetowa GitUML . Generuj diagramy UML z kodu Java lub Python przechowywanego w repozytoriach GitHub.

Jednym z kluczowych pomysłów GitUML jest rozwiązanie jednego z problemów związanych z „dokumentacją”: diagramy są zawsze nieaktualne. Dzięki GitUML diagramy są aktualizowane automatycznie, gdy wypychasz kod za pomocą git.

Przeglądaj diagramy UML społeczności, są tam pewne wzorce projektowe Java. Przeglądaj popularne repozytoria GitHub i wizualizuj w nich architektury i wzorce.

przeglądarka diagramów

Twórz diagramy za pomocą wskaż i kliknij. Nie ma edytora przeciągania, po prostu kliknij klasy w drzewie repozytorium, które chcesz wizualizować:

wybierz klasy Java, które chcesz wizualizować

Podstawowa technologia oparta jest na PlantUML, co oznacza, że ​​możesz udoskonalić swoje diagramy za pomocą dodatkowych znaczników PlantUML.

abulka
źródło
0

Istnieje bezpłatne narzędzie o nazwie binarydoc, które może generować UML Sequence Diagramlub Control Flow Graph( CFG) zbytecode (zamiast kodu źródłowego) metody Java.

Oto przykładowy diagram binarydoc wygenerowany dla metody java java.net.AbstractPlainSocketImpl.getInputStream :

  • Wykres kontroli przepływu metody java.net.AbstractPlainSocketImpl.getInputStream:

Wykres przepływu sterowania

  • Schemat sekwencji UML metody java.net.AbstractPlainSocketImpl.getInputStream:

Diagram sekwencji UML

Szczęśliwy
źródło