Как создать UML-диаграмму на основе существующих классов в PHP?
PHP UML-генератор
Ответ 1
Там также доступен инструмент PHP UML из pear.
PHP_UML:
- Может генерировать файлы UML/XMI в версии 1.4 или версии 2.1 (логические, компонентные и развертывания)
- Может генерировать документацию API в формате HTML
- Может генерировать PHP-код (скелет кода) из заданного файла XMI
- Может конвертировать содержимое UML/XMI с версии 1.4 на версию 2.1
Установите его в командной строке с помощью:
$ pear install pear/php_uml
(Это раньше было $ pear install pear/php_uml-alpha
, но пакет с тех пор стал стабильным.)
Создайте свой xmi:
$ phpuml -o project.xmi
Ответ 2
Я настоятельно рекомендую BOUML, который:
- чрезвычайно быстрый (самый быстрый инструмент UML, когда-либо созданный, проверить тесты),
- имеет прочную поддержку импорта и экспорта PHP (также поддерживает С++, Java, Python)
- - мультиплатформенный (Linux, Windows, другие ОС),
- полнофункциональный, впечатляюще интенсивно развитый (посмотрите история развития, трудно поверить, что такой быстрый прогресс возможен).
- поддерживает плагины, имеет модульную архитектуру (это позволяет вклад пользователей, похоже, что сообщество BOUML формируется)
Ответ 3
лучшее (Windows) программное обеспечение, которое я нашел для PHP и UML, Sparx Systems Enterprise Architect. кроме pletora features, он поддерживает после для PHP:
- Обратный инженерный объектно-ориентированный PHP в диаграммы классов UML
- Сгенерировать определения классов PHP из диаграмм классов UML
- Синхронизировать изменения, внесенные в класс UML, в соответствующее определение класса PHP
- Синхронизировать изменения, внесенные в определение класса PHP, в соответствующий класс UML
- Создайте диаграммы последовательности UML, чтобы показать, какие классы PHP используются и как они используются.
- Создайте подробную документацию вашего PHP-кода в стандартном формате RTF и HTML
- Выполните разработку кода на моделях для создания базовых страниц PHP.
не бесплатно ($ 199), но определенно стоит денег.
Ответ 4
phUML
phUML - полностью автоматический генератор диаграмм классов UML, написанный на PHP, лицензированный по лицензии BSD. Он способен анализировать любой объектно-ориентированный исходный код PHP5 и создавать соответствующее представление изображения структуры oo на основе спецификации UML.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
Ответ 5
Вы уже пробовали Autodia? В прошлый раз, когда я попробовал, это было не идеально, но это было достаточно хорошо.
Ответ 6
Там также php2xmi. Вы должны выполнить небольшую ручную работу, но он генерирует все классы, поэтому все, что вам нужно сделать, - это перетащить их в classdiagram в Umbrello.
В противном случае, создавая диаграмму с использованием отражения и graphviz, достаточно просто. У меня есть фрагмент здесь, который вы можете использовать в качестве отправной точки.
Ответ 7
Если вы хотите легко сгенерировать UML из существующих PHP-классов, вам может потребоваться рассмотреть программу PHPStorm 3.0 IDE. Он неплохо реплицирует существующий код в UML.
Посмотрите список функций PHP Storm.
Ответ 8
Вот как я это сделал (прямо из кода в PDF-рисунок без ручного рисования чего-либо):
- Используйте BOUML для "обратного инженерного PHP-кода" [sic] для извлечения модели класса (BOUML доступен из репозитория "Вселенная" Ubuntu). Я серьезно рекомендую BOUML для этого шага, потому что он очень быстро по сравнению со многими другими программами, которые я пробовал. Кроме того, похоже, что BOUML, кажется, правильно извлекает модель (для тех частей, которые BOUML даже пытается извлечь).
- Используйте BOUML для экспорта модели в виде файла XMI 1.4.
- Используйте ArgoUML для импорта указанного файла XMI (вы можете использовать версию webstart для этого шага)
- Экспорт XMI из ArgoUML (я не знаю, какая версия/вариант XMI - это результат, но это не тот же результат, что и вывод из BOUML. Аргуал-graphviz не может обрабатывать файл XMI непосредственно из BOUML).
- Используйте argouml-graphviz, чтобы конвертировать экспортированный файл XMI в формате ArgoUML в формат точки (вам может потребоваться использовать saxon вместо xsltproc, чтобы заставить его работать из-за использования XSLT2)
- Используйте dot или fdp или sfdp, чтобы отобразить диаграмму классов.
Здесь приведен пример подходящей командной строки для использования fdp для вывода PDF-диаграммы (при условии, что файл dot, сгенерированный обработкой 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 для выполнения части "обратного проектирования". Я еще этого не пробовал.
(Я использую фразу "reverse engineering", потому что кажется, что люди UML используют эти слова, когда они подразумевают извлечение информации о классе и методе из исходного кода. Я бы лично интерпретировал эти слова как извлечение информации из исполняемого двоичного файла или захваченных данных необработанного провода.)
Если вы предпочитаете рисовать диаграмму классов вручную (вместо использования компьютера для выполнения всего чертежа), вы можете использовать либо BOUML, либо ArgoUML для чертежа. В этом случае поможет использование данных с обратной обработкой через BOUML.
Ответ 9
Вы можете использовать Visual Paradigm для UML. Это может быть не самый лучший (он 699 долларов США) продукт, как вариант, если кто-то захочет попробовать. Он может создавать диаграмму классов из PHP и наоборот, а не только PHP, там есть куча языка, который вы можете выбрать, например, С#, С++, Ruby, Java, VB.NET, Python, Objective C, Perl и т.д. Кроме того, вы можете проверить.
Ответ 10
Ну, честно говоря, прежде всего вы не должны генерировать UML-модель из кода, а код из UML-модели;).
Даже если вы находитесь в редкой ситуации, когда вам нужно сделать это обратное проектирование, обычно предлагается, чтобы вы делали это вручную или, по крайней мере, приводили в порядок диаграммы, поскольку автоматически генерируемый UML действительно плохой визуальный ( = информация) большую часть времени.
Если вам просто нужно создать диаграммы, вероятно, хорошо спросить себя, почему именно? Кто является целевой аудиторией и какова цель? Что может сделать автогенерированная диаграмма, какой код нет?
В основном я принимаю только один ответ на этот вопрос. Это просто стало слишком большим и непонятным.
Что опять-таки является основанием для начала с UML, в первую очередь, в отличие от начала кодирования;) Это называется анализом, и оно на упадке, потому что каждый второй парень в бизнесе считает это слишком дорогостоящим и не очень необходимым.
Ответ 11
В теории вы можете использовать PhpStorm для визуализации ваших классов с использованием UML. Генерация не очень велика, но вы можете эффективно реорганизовать материал и снова, по крайней мере, предварительно просматривать родителей, реализации, константы, атрибуты, методы и их видимость.
Ситуация
Я хочу визуализировать связь между уже существующими компонентами с коллегой.
Процесс с использованием PHPStorm
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
<сильные > Преимущества
- Nice UI, окончательная диаграмма.
- Возможность преобразования кода с диаграммы.
- Возможность добавления заметок.
- Диаграмма классов хорошо символизирует частные/общедоступные свойства, конструкторы, методы.
Недостатки
- Поддержка PHP 7 не поддерживается.
- Тяжело использовать. Невозможно изменить размер созданных ящиков.
- При добавлении нового отношения предыдущие получают случайную потерю: O wtf?
- Перезапуск PhpStorm разрушает диаграммы
- Изменен мой ум, невозможно использовать отношения.
Результат
В любом случае, после некоторого болезненного часа работы я смог генерировать несвязанные коробки и должен был использовать дополнительную программу для связывания отношений. Действительно плохо. Но я верю, что когда они заработают правильно, это будет отличная функция, потому что при изменении кода диаграммы будут автоматически обновляться!
На данный момент не используйте PhpStorm для диаграмм UML.