Как создать UML-диаграмму на основе существующих классов в PHP?
Также есть инструмент PHP UML, доступный от груши .
PHP_UML:
Установите его в командной строке через:
$ pear install pear/php_uml
(Это раньше было $ pear install pear/php_uml-alpha
но пакет с тех пор стал стабильным.)
Создайте свой xmi:
$ phpuml -o project.xmi
Я настоятельно рекомендую BOUML, который:
лучшее (Windows) программное обеспечение, которое я нашел для PHP и UML, – это Sparx Systems Enterprise Architect . помимо pletora возможностей , он поддерживает следующие для PHP:
не бесплатно ($ 199), но определенно стоит денег.
phUML – полностью автоматический генератор диаграмм классов UML, написанный на PHP, лицензированный по лицензии BSD. Он способен анализировать любой PHP5 объектно-ориентированный исходный код и создавать соответствующее представление изображения структуры oo на основе спецификации 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-рисунок без ручного рисования чего-либо):
Ниже приведен пример подходящей командной строки для использования 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/
преимущества
Недостатки
результат
Во всяком случае, после некоторого болезненного часа работы я смог генерировать несвязанные коробки и должен был использовать дополнительную программу для связывания отношений. Действительно плохо. Но я верю, что когда они заработают правильно, это будет отличная функция, потому что, когда код изменится, диаграммы будут автоматически обновлены!
Пока не используйте PhpStorm для диаграмм UML.