Jak mogę generować diagramy UML (szczególnie diagramy sekwencji) z istniejącego kodu Java?
Jak mogę generować diagramy UML (szczególnie diagramy sekwencji) z istniejącego kodu Java?
Odpowiedzi:
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:
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.
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.
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
Kroki
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
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.
ALT + W -> pokaż widok -> papirus -> model explorer
W tym widoku znajdziesz swoje zajęcia jak na zdjęciu
W widoku Kliknij prawym przyciskiem myszy model główny -> Nowy diagram
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
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.
Jaka jest twoja baza kodów? Java czy C ++?
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
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.
Sprawdź to na https://plugins.jetbrains.com/plugin/12437-zenuml-support
Kod źródłowy: https://github.com/ZenUml/jetbrains-zenuml
Co powiesz na PlantUML ? To nie jest inżynieria odwrotna !!! To dla inżynierii, zanim napiszesz kod.
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:
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
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.
jSonde
jest dostępny w powyższym adresie URL. Można znaleźć stronie internetowej i kodu źródłowego w Github: github.com/bedrin/jsonde .
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. ;-)
Korzystanie z IntelliJ IDEA. Aby wygenerować diagram klas, wybierz pakiet i naciśnij Ctrl+ Alt+ U:
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:
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:
Możliwe jest również generowanie większej liczby innych diagramów. Zobacz dokumentację .
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.
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.
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
Zauważyłem, że wtyczka SequenceDiagram dla Intellij jest również dobrą opcją.
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.
Twórz diagramy za pomocą wskaż i kliknij. Nie ma edytora przeciągania, po prostu kliknij klasy w drzewie repozytorium, które chcesz wizualizować:
Podstawowa technologia oparta jest na PlantUML, co oznacza, że możesz udoskonalić swoje diagramy za pomocą dodatkowych znaczników PlantUML.
Istnieje bezpłatne narzędzie o nazwie binarydoc, które może generować UML Sequence Diagram
lub 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 :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: