Как создать диаграмму UML на основе существующих классов в PHP?
Как создать диаграмму UML на основе существующих классов в PHP?
Ответы:
Есть также инструмент PHP UML, доступный от pear .
PHP_UML:
Установите его в командной строке через:
$ pear install pear/php_uml
(Раньше это было, $ pear install pear/php_uml-alpha
но с тех пор пакет стал стабильным.)
Создайте свой xmi:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(см. Pear.php.net/package/PHP_UML/download/All или pear.php.net/package/PHP_UML )
Я настоятельно рекомендую BOUML, который:
phUML - это полностью автоматический генератор диаграмм классов UML, написанный на PHP, под лицензией BSD. Он способен анализировать любой объектно-ориентированный исходный код PHP5 и создавать соответствующее графическое представление структуры oo на основе спецификации UML.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
Лучшее (Windows) программное обеспечение, которое я нашел для PHP и UML, - это Sparx Systems Enterprise Architect . Помимо множества функций , он поддерживает следующее для PHP:
не бесплатно (199 долларов), но определенно стоит своих денег.
Вы уже пробовали Autodia ? В прошлый раз, когда я попробовал, это было не идеально, но было достаточно.
Также есть php2xmi . Вам придется немного поработать вручную, но он генерирует все классы, поэтому все, что вам нужно сделать, это перетащить их на диаграмму классов в Umbrello .
В противном случае создать диаграмму с помощью отражения и графвиза довольно просто. У меня есть фрагмент кода здесь , что вы можете использовать в качестве отправной точки.
Вот как я это сделал (прямо из кода в чертеж PDF без рисования вручную):
Вот пример подходящей командной строки для использования fdp для вывода диаграммы PDF (при условии, что точечный файл, созданный обработкой XLST argouml-graphviz, сохранен как 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
В качестве альтернативы вы можете попробовать PHP_UML или php2xmi вместо BOUML для выполнения части «обратного проектирования». Я еще не пробовал.
(Я использую фразу «обратная инженерия», потому что кажется, что люди UML используют эти слова, когда имеют в виду извлечение информации о классах и методах из исходного кода . Я бы лично интерпретировал эти слова как извлечение информации из исполняемого двоичного файла или захваченного необработанного данные провода.)
Если вы предпочитаете рисовать диаграмму классов вручную (вместо использования компьютера для рисования всего), вы можете использовать для рисования либо BOUML, либо ArgoUML. В этом случае поможет использование «реконструированных» данных через BOUML.
Если вы хотите легко сгенерировать UML из существующих классов PHP, вы можете подумать о PHPStorm 3.0 IDE. Он хорошо воспроизводит существующий код в UML.
Взгляните на список функций PHP Storm .
Вы можете использовать Visual Paradigm для UML. Это может быть не самый высокооплачиваемый (это 699 долларов США) продукт, просто как вариант, если кто-то захочет попробовать. Он может создавать диаграмму классов из PHP и наоборот, и не только из PHP, вы можете выбрать множество языков, таких как C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl и т. Д. пробную версию вы можете проверить.
Теоретически вы можете использовать PhpStorm для визуализации ваших классов с помощью UML. Генерация не очень хорошая, но вы можете эффективно реорганизовать материал и снова, по крайней мере, предварительно просмотреть родительские элементы, реализации, константы, атрибуты, методы и их видимость в приятной форме.
ситуация
Я хочу визуализировать общение между уже существующими компонентами с коллегой.
Процесс с использованием PHPStorm
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
Преимущества
Недостатки
Результат
В любом случае, после некоторого мучительного часа работы я смог создать только несвязанные блоки, и мне пришлось использовать дополнительную программу для связывания отношений. Действительно плохо. Но я считаю, что как только они заставят его работать должным образом, это станет отличной функцией, потому что при изменении кода диаграммы будут автоматически обновляться!
На данный момент не используйте PhpStorm для диаграмм UML.
Если честно, в первую очередь вы должны генерировать не UML-модель из кода, а код из UML-модели;).
Даже если вы находитесь в редкой ситуации, когда вам нужно провести обратный инжиниринг, обычно рекомендуется делать это вручную или, по крайней мере, приводить в порядок диаграммы, так как автоматически сгенерированный UML имеет очень плохую визуализацию (= информацию) ценить большую часть времени.
Если вам просто нужно сгенерировать диаграммы, вероятно, стоит спросить себя, почему именно? Кто целевая аудитория и какова цель? Что предлагает автоматически сгенерированная диаграмма, а какой код нет?
В основном я принимаю только один ответ на этот вопрос. Он стал слишком большим и непонятным.
Что снова является причиной в первую очередь начать с UML, а не начинать кодирование;) Это называется анализом, и он идет на спад, потому что каждый второй человек в бизнесе думает, что это слишком дорого и не совсем необходимо.