Средство проектирования с поддержкой реверса кода

mexer

Новичок
Приветствую!

Столкнулся с проблемой, с которой, наверное, рано или поздно приходится иметь дело каждому разработчику. Работаю над проектом, детализованная архитектура которого достаточно сложна для того, чтобы постоянно держать её в голове. Необходима визуализация хотя бы на уровне диаграмм классов. Средств моделирования сейчас, конечно, масса - от бесплатных типа StarUML и до Enterprise Architect. Проблема в поддержании диаграмм в актуальном состоянии на протяжении всего жизненного цикла системы. Заниматься этим вручную - много лишней работы. На практике получается, что после стадии активного проектирования модели рано или поздно забрасываются, а к тому моменту, когда они снова нужны, в системе накапливается масса мелких изменений. Как я понимаю, именно на этот случай в средствах проектирования предусматривается фича по реверсу кода в модели... Но вот попытки воспользоваться ими на деле оказались обескураживающе неудачными.

С Pear пакетами типа PHP_UML и php2xmi связываться не стал из-за возможных проблем совместимости. Система "с хвостами" и требует для работы довольно старой версии PHP. А возиться с разными версиями PHP в среде разработки не очень хочется. Соответствующих плагинов под новую версию NetBeans, которую я использую, тоже не нашлось (гуглится только что-то ~10 летней давности). Переходить на незнакомый мне Eclipse (гугль сказал, что там могут быть нужные плагины) прямо посреди процесса разработки боязно. Что же до специализированных десктопных приложений... ArgoUML, в котором заявлена эта фича, кажется, перестал быть бесплатным, а леченая версия как-то не нагуглилась. Enterprise Architect уж слишком слонообразен и опять-таки варез. Кое-как раздобыл "на попробывать" Visual Paradigm 12, но там обновление моделей при реверсе организовано как-то странно. Если выбрать опцию "обновить дублирующиеся классы", то удаленные в коде методы все равно остаются в списке операций в модели (хотя новые и добавляются). А если выбрать опцию "заменять", то накрываются тазом все диаграммы, построенные на основе этих классов. И в неприлично конских размеров мануале я про это ничего не нашел.

В общем, получилась неожиданная проблема с решением, казалось бы, совершенно типовой задачи. Поэтому прошу совета у людей, уже сталкивавшихся с ней на практике. Хотелось бы, чтобы рабочий процесс выглядел как-то так: отреверсил необходимые классы, построил связи. Покурил над диаграммой, придумал как изменить дизайн, внес изменения в код, обновил из кода классы в средстве моделирования, поправил вручную связи - готово.

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

Заранее благодарен!
 

mexer

Новичок
Большое спасибо за ответ и за совет. Поставил, посмотрел. Редактор диаграмм там какой-то чересчур аскетичный и не совсем понятный. Из связей у меня получилось построить только обобщение. Те же ассоциации то ли нельзя, то ли я не разобрался как делать (в хелпе тоже не нашел). Причем изменения связей сразу отражаются на коде, что не для всякого случая хорошо. Я пока разбирался, сбил иерархию наследования нескольких классов.

ArgoUML, в котором заявлена эта фича, кажется, перестал быть бесплатным, а леченая версия как-то не нагуглилась.
Ошибочка, я имел в виду BOUML.

А с Эклипсом, похоже, тоже все непросто. Большинство плагинов, умеющих реверсить код, там под Java/Cpp. Может, что-то и есть под PHP, но я не натыкался.

До конца не уверен, но есть надежда, что нашлось решение. Наткнулся на леченую портабл версию Enterprise Architect 12 в варезнике руборда. Первые эксперименты показали, что он помнит файлы исходников для каждого элемента модели и синхронизирует модель с кодом через пункт в контекстном меню. Пока что довольно удобно.

P.S. но это не значит, что тема закрыта. Пожалуйста, делитесь, какими решениями пользуетесь вы.
 
Последнее редактирование:
Сверху