PHP генератор UML [закрито]


110

Як створити діаграму UML на основі існуючих класів у PHP?


2
Я більше не працюю з PHP, тому у мене немає коду, щоб насправді перевірити. Коли я опублікував це, жоден з початкових відповідей не робив достатньо, але з того часу багато що змінилося. Я працював з PHP 5.2, і зараз це PHP7.
Jeffrey04

Відповіді:


42

Існує також інструмент 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


2
чомусь груші.com не подобається це посилання без останньої
Стівен Фугрі

1
@Stephen, так, я теж це помітив! Якщо ви натиснете посилання, воно дає 404, але якщо ви виберете адресний рядок і натисніть клавішу Enter, воно працює.
нікфф

1
Через кілька років команда тепер pear install PHP_UML-1.6.1(див. Pear.php.net/package/PHP_UML/download/All or pear.php.net/package/PHP_UML )
Бен

1
Це має бути прийнятою відповіддю. Інструмент вражаючий.
Xofo

3
не працює з php 7
DevWL

41

Я настійно рекомендую BOUML, який:

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

Тести виглядають дуже ефектно. Я люблю корпоративного архітектора, але у нього немає підтримки PHP. Я передаю цей інструмент, дякую.
Пол Драгуніс

1
@Paul Dragoonis Sparx Systems Enterprise Architect робить мають PHP підтримку - і не найгірший .
сокира.

5
На веб-сторінці BOUML зараз зазначено: "ОБЕРЕЖНО: Через безперервні порушення ліцензій, напади та образи з боку людей з wikipedia [...] я вирішив припинити роботу над Bouml, крім виправлення помилок."
MPV

1
"[18 грудня 2011 р.] Завантаження призупиняються до подальшого повідомлення" з офіційного веб-сайту. http://bouml.free.fr/download.html - це тому, що мені потрібна була версія для Win7. Я думаю, він може бути доступний у сховищах Ubuntu - потрібно перевірити
Вал Редченко

4
Версія 6.1 випущена 23 вересня 2012 року . З'являється розвиток знову піднявся. Повідомлень про сповільнення, зупинку тощо bouml.fr/historic.html
Ендрю Енслі

24

КРЛ

phUML - це повністю автоматичний генератор діаграм класів UML, написаний на PHP, ліцензований за ліцензією BSD. Він здатний аналізувати будь-який об'єктно-орієнтований вихідний код PHP5 та створювати відповідне зображення зображення структури oo на основі специфікації UML.

Приклад UML

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

Покрокове керівництво


вимагає SVN / subversion для завантаження і насправді не говорить про те, що таке ліцензія вихідного коду, але це виглядає добре! Так, я б уважно дивився на вихідний код, на нього немає абсолютно ніякої ліцензії, і єдине readme знаходиться на сайті, я думаю

Ліцензія посилається прямо там, на бічній панелі веб-сайту проекту, під автором Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Ентоні Хацопулос,

ось ліцензія на вміст сайту, ЛІЦЕНЗІЯ на проект повинна бути включена до самого проекту.

3
Я надіслав електронному листу автору Якобу, і він відповів оновленням до сховища чіткою та скороченою ліцензією bsd 3-клауза
Ентоні Хацопулос

Я завантажив це і змусив його працювати після трохи повороту. Дійсно було дуже приємно, за винятком того, що я не можу змусити асоціацій працювати, але я впевнений, що зрозумію. Приємно, просто. Ні GUI, хоча, але не така велика угода.
Імпульс

19

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

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

не безкоштовно (199 доларів), але, безумовно, варто грошей.


1
Нічого собі, це дійсно корисна та професійна програма дійсно, дякую за пораду !! Я просто спробував діаграму класів UML, що генерується методом зворотної інженерії Sparx EA з вихідного коду PHP, і це спрацювало як шарм, я був вражений, наскільки це добре працює. : D Оскільки наші проекти зростають і збільшуються, і ми створюємо все більше і більше об'єктів, все складніше слідкувати за власним кодом, але це дуже допомагає в цьому, оскільки він генерує діаграми UML правильно ( Звичайно, можуть виникнути винятки) ПІСЛЯ ми закінчили код. Це навіть допомагає спростити відносини між об'єктами.
Sk8erPeter

@ax - я новачок, і я трохи втрачаюсь у їхньому списку функцій (у розділі "порівняти видання"). Як називатиметься функція, яка дозволяє мені ввести PHP-код (або посилання на PHP-файли) та отримати схему взамін? Намагаюся зрозуміти, яка версія мені може знадобитися.
JDelage

7

Ви вже пробували Autodia ? Минулого разу я спробував це не було ідеально, але це було досить добре.


Я спробував autodia, але я якось не можу генерувати точну діаграму класів (php5)
Jeffrey04

7

Також є php2xmi . Ви повинні зробити трохи ручної роботи, але це генерує всі класи, тому все, що вам потрібно зробити, це перетягнути їх у класдіаграму в Umbrello .

В іншому випадку створити діаграму з використанням відображення та графівізу досить просто. У мене є фрагмент коду тут , що ви можете використовувати в якості відправної точки.


7

Ось як я це зробив (безпосередньо від коду до малювання PDF без ручного малювання нічого):

  1. Використовуйте BOUML для "зворотного інженерного PHP-коду" [sic] для вилучення моделі класу (BOUML доступний з "Всесвітнього" сховища Ubuntu). Я серйозно рекомендую BOUML для цього кроку, оскільки він дійсно швидкий порівняно з багатьма іншими програмами, які я спробував. Крім того, здається, що BOUML, здається, витягує модель правильно (для частин, які BOUML навіть намагається витягти).
  2. Використовуйте BOUML для експорту моделі як файл XMI 1.4
  3. Використовуйте ArgoUML для імпорту згаданого файлу XMI (для цього кроку можна використовувати версію веб-запуску)
  4. Експортуйте XMI з ArgoUML (я не знаю, для якої версії / варіанту XMI є вихід, але це не такий самий результат, як вихід з BOUML. Аргумл-графвіз не може обробляти файл XMI безпосередньо з BOUML).
  5. Використовуйте argouml-graphviz для конвертування експортованого файлу XMI ArgoUML у крапковий формат (можливо, вам потрібно буде використовувати саксон замість xsltproc, щоб він працював завдяки використанню XSLT2)
  6. Використовуйте крапку або fdp або sfdp для візуалізації діаграми класів.

Ось приклад підходящого командного рядка для використання 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 допоможе в цьому випадку.



1

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


1

Теоретично ви можете використовувати PhpStorm для візуалізації своїх класів за допомогою UML. Покоління насправді не чудове, але ви можете ефективно рефакторні речі, і знову, принаймні, попередній перегляд батьків, реалізації, константи, атрибути, методи та їх видимість приємним чином.

Ситуація

Я хочу візуалізувати спілкування між вже наявними компонентами колезі.

Обробляти за допомогою PHPStorm

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

Переваги

  • Гарний інтерфейс користувача, підсумкова схема.
  • Здатний до рефакторного коду з діаграми.
  • Можливість додавати нотатки.
  • Діаграма класів прекрасно символізує приватні / публічні властивості, конструктори, методи.

Недоліки

  • Немає підтримки для PHP 7.
  • Болісно використовувати. Неможливо змінити розмір створених полів.
  • Додаючи нове відношення, попередні втрачаються випадковим чином: O wtf?
  • Перезапуск PhpStorm руйнує діаграми
  • Передумав, стосунки неможливо використовувати

Результат

У будь-якому разі, після якоїсь болісної години роботи, мені вдалося генерувати неспоріднені коробки, і мені довелося використовувати додаткову програму для зв’язку відносин. Справді погано. Але я вважаю, що коли вони змусять його працювати належним чином, це буде чудовою особливістю, оскільки, коли код змінюється, діаграми будуть автоматично оновлюватися!

Поки що не використовуйте PhpStorm для діаграм UML.


Я припускаю, що це нове (:
Jeffrey04

Правильно. В даний час я перебуваю в тій же ситуації. Я розробив складну частину системи і хочу її візуалізувати для свого колеги. Я спробував декілька інструментів, але вони лайно і некрасиво :) Я збираюся зробити це за допомогою PHPStorm та оновити свою відповідь, як це виглядає і наскільки він насправді потужний. Я повідомляю вам сьогодні про результат @ Jeffrey04
Лукаш Лукач

це нормально, я фактично не займаюся PHP
Jeffrey04

0

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

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

Якщо вам просто потрібно генерувати діаграми, напевно, добре запитати себе, чому саме? Хто призначена аудиторія і яка мета? Що може запропонувати автоматично створена діаграма, а який код - ні?

В основному я приймаю лише одну відповідь на це питання. Це просто стало занадто великим і незрозумілим.

Що знову ж таки є причиною починати з UML, в першу чергу, на відміну від початку кодування;) Це називається аналіз, і він занепадає, тому що кожен другий хлопець у бізнесі вважає, що це занадто дорого і не дуже потрібно.


7
Щоправда, але життя складніше, ніж деякі принципи, які мудро використовувати. Можливо, вам доведеться порівняти фактичний код з оригінальною діаграмою UML або проаналізувати код когось або якийсь код, який був реалізований без діаграм UML.
DAH

3
Не погоджуюсь. Велике значення, отримане від візуалізації бази / модуля коду з діаграмою. Код подібний до напрямків вулиці, але з занадто великою кількістю напрямків іноді карта може бути корисною.
Василь Муса

1
У більшості програм для малювання UML є такий поганий інтерфейс, що швидше писати код і генерувати діаграму UML автоматично, навіть якщо потім викинути код, який ви використовували для створення діаграми ...
Mikko Rantalainen,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.