PHP UML Generator

Как создать UML-диаграмму на основе существующих классов в PHP?

Также есть инструмент PHP UML, доступный от груши .

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

Я настоятельно рекомендую BOUML, который:

  • является чрезвычайно быстрым (самый быстрый инструмент UML, когда-либо созданный, проверял контрольные показатели ),
  • имеет встроенную поддержку импорта и экспорта PHP (также поддерживает C ++, Java, Python)
  • является многоплатформенным (Linux, Windows, другие ОС),
  • полнофункциональный, впечатляюще интенсивно развитый (посмотрите на историю развития , трудно поверить, что такой быстрый прогресс возможен).
  • поддерживает плагины, имеет модульную архитектуру (это позволяет вклады пользователей , похоже, формируется сообщество BOUML)

лучшее (Windows) программное обеспечение, которое я нашел для PHP и UML, – это Sparx Systems Enterprise Architect . помимо pletora возможностей , он поддерживает следующие для PHP:

  • Обратный инженер-объектно-ориентированный PHP в диаграммы классов UML
  • Сгенерировать определения классов PHP из диаграмм классов UML
  • Синхронизировать изменения, внесенные в класс UML, в соответствующее определение класса PHP
  • Синхронизировать изменения, внесенные в определение класса PHP, в соответствующий класс UML
  • Создайте диаграммы последовательности UML, чтобы показать, какие классы PHP используют и как они используются
  • Произведите подробную документацию вашего PHP-кода в стандартном формате RTF и HTML
  • Выполните разработку кода на моделях для создания базовых страниц PHP.

не бесплатно ($ 199), но определенно стоит денег.

phUML

phUML – полностью автоматический генератор диаграмм классов UML, написанный на PHP, лицензированный по лицензии BSD. Он способен анализировать любой PHP5 объектно-ориентированный исходный код и создавать соответствующее представление изображения структуры oo на основе спецификации UML.

Пример UML

 ./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png 

Пошаговое руководство

Вы еще пробовали Autodia ? В прошлый раз, когда я попробовал, это было не идеально, но это было достаточно хорошо.

Там также php2xmi . Вы должны выполнить небольшую ручную работу, но она генерирует все классы, поэтому вам нужно всего лишь перетащить их в классную диаграмму в Umbrello .

В противном случае, создавая диаграмму с использованием отражения и graphviz, довольно просто. У меня есть фрагмент, который вы можете использовать в качестве отправной точки.

Если вы хотите легко сгенерировать UML из существующих PHP-классов, вам может понадобиться рассмотреть программу PHPStorm 3.0 IDE. Он неплохо реплицирует существующий код в UML.

Посмотрите список функций PHP Storm .

Вот как я это сделал (непосредственно из кода в PDF-рисунок без ручного рисования чего-либо):

  1. Используйте BOUML для «обратного инженерного PHP-кода» [sic] для извлечения модели класса (BOUML доступен из репозитория «юниверса» Ubuntu). Я серьезно рекомендую BOUML для этого шага, потому что это очень быстро по сравнению со многими другими программами, которые я пробовал. Кроме того, похоже, что BOUML, кажется, правильно извлекает модель (для тех частей, которые BOUML даже пытается извлечь).
  2. Используйте BOUML для экспорта модели в виде файла XMI 1.4
  3. Используйте ArgoUML для импорта указанного файла XMI (вы можете использовать версию webstart для этого шага)
  4. Экспорт XMI из ArgoUML (я не знаю, какая версия / вариант XMI имеет выход, но это не тот же результат, что и вывод из BOUML. Аргумо-graphviz не может обрабатывать файл XMI непосредственно из BOUML).
  5. Используйте argouml-graphviz для преобразования экспортированного файла XMI в формате ArgoUML в формат точки (вам может понадобиться использовать saxon вместо xsltproc, чтобы заставить его работать из-за использования XSLT2)
  6. Используйте dot или fdp или sfdp для отображения диаграммы классов.

Ниже приведен пример подходящей командной строки для использования fdp для вывода PDF-диаграммы (при условии, что файл dot, созданный обработкой XLUT с помощью 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.

Вы можете использовать Visual Paradigm для UML. Это может быть не самый лучший (это продукт стоимостью 699 долларов США), как вариант, если кто-то захочет попробовать. Он может создавать диаграмму классов из PHP и наоборот, а не только PHP, есть куча языка, который вы можете выбрать, например, C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl и т. Д. Также есть вы можете проверить.

Ну, честно говоря, в первую очередь вы не должны генерировать UML-модель из кода, а код из UML-модели;).

Даже если вы находитесь в редкой ситуации, когда вам нужно сделать это обратное проектирование, обычно предлагается, чтобы вы делали это вручную или, по крайней мере, приводили в порядок диаграммы, поскольку автоматически сгенерированный UML имеет действительно плохую визуальную (= информацию) большую часть времени.

Если вам просто нужно создать диаграммы, вероятно, хорошо спросить себя, почему именно? Кто является целевой аудиторией и какова цель? Что может предложить автоматическая диаграмма, какой код нет?

В основном я принимаю только один ответ на этот вопрос. Он просто стал слишком большим и непонятным.

Что опять-таки является поводом для начала с UML, в первую очередь, в отличие от начала кодирования;) Это называется анализом, и он находится на упадке, потому что каждый второй парень в бизнесе считает, что это слишком дорого и не очень необходимо.

В теории вы можете использовать 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.