Як створити діаграму UML на основі існуючих класів у PHP?
Як створити діаграму UML на основі існуючих класів у PHP?
Відповіді:
Існує також інструмент PHP UML, доступний від груші .
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 or 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 . крім pletora функцій , він підтримує наступне для PHP:
не безкоштовно (199 доларів), але, безумовно, варто грошей.
Також є php2xmi . Ви повинні зробити трохи ручної роботи, але це генерує всі класи, тому все, що вам потрібно зробити, це перетягнути їх у класдіаграму в Umbrello .
В іншому випадку створити діаграму з використанням відображення та графівізу досить просто. У мене є фрагмент коду тут , що ви можете використовувати в якості відправної точки.
Ось як я це зробив (безпосередньо від коду до малювання PDF без ручного малювання нічого):
Ось приклад підходящого командного рядка для використання fdp для виведення PDF-діаграми (якщо припустити, що файл точок, сформований обробкою argouml-graphviz XLST, зберігається як 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, в першу чергу, на відміну від початку кодування;) Це називається аналіз, і він занепадає, тому що кожен другий хлопець у бізнесі вважає, що це занадто дорого і не дуже потрібно.