Pull to refresh

Создание UML по существующему PHP коду

UML Design *
Когда большинство проектов давно находятся на стадии поддержки, а не разработки, то поддержание документации в актуальном виде зачастую не проводится. Тогда довольно полезно будет получить диаграмму UML по существующему коду. Это также необходимо в случае, если предпроектная документация велась не полностью или проектированию подвергались не все части системы. Вопрос особенно актуален, когда появляется новый разработчик.

В этой статье я рассмотрю 2 скрипта, реализованных на PHP:
  • Консольный скрипт php2xmi
  • Библиотека PHP_UML

Консольный скрипт php2xmi


Интересной, на мой взгляд, реализацией механизма создания UML модели является консольный скрипт php2xmi, подробнее про который написано здесь.

Чем интересен этот вариант:
  • Написан на PHP. Мы можем изменять его алгоритмы как захотим
  • Заявленная поддержка PHP Doc
Основные недостатки:
  • Требует от наших проектов определённого правила подключения файлов
  • Не добавляет в модель исходный код для методов
  • Отсутствие постоянных обновлений
Пример файла для генерации модели класса Zend_Config:
<?php
require_once 'Zend/config.php';
require_once 'Zend/Config/ini.php';
require_once 'Zend/Config/xml.php';
require_once 'Zend/exception.php';
require_once 'Zend/Config/exception.php';

* This source code was highlighted with Source Code Highlighter & me.

Для генерации моделей существующих проектов целиком можно добавить поддержку __autoload в этот скрипт.

Вывод: данный скприпт позволяет получить диаграмму существующих классов без дополнительных усилий. То, что он написан на PHP позволяет редактировать его любому разработчику по своему усмотрению.

Библиотека PHP_UML


Другой вариант создания UML диаграмм по существующему коду. Это также реализованный средствами PHP инструмент, но в отличие от предыдущего это уже библиотека для создания моделей. Ознакомление можно начать с просмотра примеров, которые входят в архив.

Там же находится и основная документация с описанием возможностей. Выделю основные и на мой наиболее важные и интересные:
  • Поддержка XMI 2.1 – последняя версия данного стандарта. Одна из самых распространённых и качественных сред UML моделирования Umbrello также поддерживает эту версию.
  • Написан на PHP.
  • Удобная классовая структура.
  • Запускается как обычное web приложение
  • Читает PHP Doc
Основные недостатки:
  • Не добавляет в модель исходный код методов
По дате последнего обновления – август этого года – можно сказать, что проект продолжает развиваться и является более перспективным. В плюс данному варианту можно также занести то, что он покрыт Unit тестами, что облегчит понимание принципов его работы и возможной последующего девелопмента. Также он включён в библиотеку пакетов PEAR, которая с течением времени сохраняет только качественные решения.

Вывод: по сравнению со скриптом php2xmi данный проект выглядит более профессионально выполненным, поэтому следует более пристальное внимание уделить его изучению.
Tags: umlphpгенерация кодапроектирование
Hubs: UML Design
Total votes 17: ↑15 and ↓2 +13
Comments 5
Comments Comments 5

Popular right now