Jak mogę generować diagramy UML (szczególnie diagramy sekwencji) z istniejącego kodu Java?
java
uml
reverse-engineering
diagram
Jonathan
źródło
źródło
Odpowiedzi:
ObjectAid UML Explorer
To jest to, czego użyłem. Jest łatwy do zainstalowania z repozytorium:
I produkuje całkiem ładne diagramy UML:
Opis ze strony:
źródło
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.
źródło
Jaka jest twoja baza kodów? Java czy C ++?
źródło
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
źródło
Co powiesz na PlantUML ? To nie jest inżynieria odwrotna !!! To dla inżynierii, zanim napiszesz kod.
źródło
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
źródło
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.
źródło
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 .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.
źródło
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. ;-)
źródło
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:
Wynik:
Możliwe jest również generowanie większej liczby innych diagramów. Zobacz dokumentację .
źródło
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.
źródło
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.
źródło
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
źródło
Zauważyłem, że wtyczka SequenceDiagram dla Intellij jest również dobrą opcją.
źródło
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.
źródło
Istnieje bezpłatne narzędzie o nazwie binarydoc, które może generować
UML Sequence Diagram
lubControl 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
:źródło