Jak wygenerować diagram UML na podstawie istniejących klas w PHP?
Jak wygenerować diagram UML na podstawie istniejących klas w PHP?
Odpowiedzi:
Gruszka oferuje również narzędzie PHP UML .
PHP_UML:
Zainstaluj go w wierszu poleceń za pomocą:
$ pear install pear/php_uml
(Kiedyś tak było, $ pear install pear/php_uml-alpha
ale pakiet stał się stabilny).
Wygeneruj swoje XMI:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(patrz pear.php.net/package/PHP_UML/download/All lub pear.php.net/package/PHP_UML )
Gorąco polecam BOUML, który:
phUML to w pełni automatyczny generator diagramów klas UML napisany w PHP, licencjonowany na licencji BSD. Jest w stanie przeanalizować dowolny obiektowy kod źródłowy PHP5 i stworzyć odpowiednią reprezentację obrazu struktury oo w oparciu o specyfikację UML.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
Najlepsze oprogramowanie (Windows) do obsługi PHP i UML to Sparx Systems Enterprise Architect . poza mnóstwem funkcji obsługuje następujące funkcje dla PHP:
nie za darmo (199 USD), ale zdecydowanie warte swojej ceny.
Jest też php2xmi . Musisz trochę popracować ręcznie, ale to generuje wszystkie klasy, więc wszystko, co musisz zrobić, to przeciągnąć je do diagramu klas w Umbrello .
W przeciwnym razie wygenerowanie diagramu za pomocą refleksji i graphviz jest dość proste. Mam fragment tutaj , które można wykorzystać jako punkt wyjściowy.
Oto jak to zrobiłem (bezpośrednio z kodu do rysunku PDF, bez ręcznego rysowania czegokolwiek):
Oto przykład odpowiedniego wiersza poleceń do użycia fdp do wyprowadzenia diagramu PDF (zakładając, że plik kropki wygenerowany przez przetwarzanie argouml-graphviz XLST jest zapisywany jako xmi-model.dot):
fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
-Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
-Goverlap=false xmi-model.dot -oxmi-model.pdf
Alternatywnie możesz wypróbować PHP_UML lub php2xmi zamiast BOUML do wykonywania części „inżynierii wstecznej”. Jeszcze tego nie próbowałem.
(Używam wyrażenia „inżynieria wsteczna”, ponieważ wydaje się, że ludzie używający języka UML używają tych słów, gdy mają na myśli wyodrębnianie informacji o klasie i metodzie z kodu źródłowego . Osobiście zinterpretowałbym te słowa jako wyodrębnianie informacji z wykonywalnego pliku binarnego lub przechwyconego surowego dane przewodowe.)
Jeśli wolisz ręcznie rysować diagram klas (zamiast używać komputera do rysowania), możesz użyć do rysowania BOUML lub ArgoUML. W takim przypadku pomocne będzie użycie danych „odtworzonych” za pośrednictwem BOUML.
Jeśli chcesz łatwo generować UML z istniejących klas PHP, możesz rozważyć PHPStorm 3.0 IDE. Dobrze radzi sobie z replikacją istniejącego kodu do UML.
Spójrz na listę funkcji PHP Storm .
Możesz użyć Visual Paradigm dla UML. To może nie być najlepiej płatny produkt (to 699 USD), po prostu opcja, jeśli ktoś chciałby spróbować. Potrafi tworzyć diagram klas z PHP i odwrotnie, i nie tylko PHP, jest też kilka języków, które możesz wybrać, takich jak C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl itp. próbna, którą możesz sprawdzić.
Teoretycznie możesz użyć PhpStorm do wizualizacji swoich klas za pomocą UML. Generacja nie jest naprawdę świetna, ale możesz skutecznie refaktoryzować rzeczy i znowu, przynajmniej w przyjemny sposób podejrzeć rodziców, implementacje, stałe, atrybuty, metody i ich widoczność.
Sytuacja
Chcę wizualizować komunikację między już istniejącymi komponentami ze współpracownikiem.
Przetwarzaj za pomocą PHPStorm
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
Zalety
Niedogodności
Wynik
Zresztą po kilku bolesnych godzinach pracy byłem w stanie tylko wygenerować niepowiązane skrzynki i musiałem użyć dodatkowego programu do powiązania relacji. Naprawdę źle. Ale wierzę, że kiedy już sprawią, że będzie działać poprawnie, będzie to świetna funkcja, ponieważ wraz ze zmianami kodu diagramy będą automatycznie aktualizowane!
Na razie nie używaj PhpStorm do diagramów UML.
Cóż, jeśli mam być szczery, przede wszystkim nie powinieneś generować modelu UML z kodu, ale kod z modelu UML;).
Nawet jeśli jesteś w rzadkiej sytuacji, kiedy musisz wykonać tę inżynierię wsteczną, ogólnie sugeruje się, aby zrobić to ręcznie lub przynajmniej uporządkować diagramy, ponieważ automatycznie generowany UML ma naprawdę słaby obraz (= informacje) wartości przez większość czasu.
Jeśli potrzebujesz tylko wygenerować diagramy, prawdopodobnie dobrze jest zadać sobie pytanie, dlaczego dokładnie? Kim jest docelowa publiczność i jaki jest cel? Co ma do zaoferowania diagram generowany automatycznie, a jaki kod nie?
Zasadniczo przyjmuję tylko jedną odpowiedź na to pytanie. Po prostu stało się zbyt duże i niezrozumiałe.
Co znowu jest powodem, aby zacząć od UML w pierwszej kolejności, a nie kodować;) Nazywa się to analizą i spada, ponieważ co drugi facet w biznesie uważa, że jest to trochę za drogie i niepotrzebne.