Форум Сообщества Аналитиков

Общий раздел => ПО Аналитика => Тема начата: Humbert от 22 Июля 2016, 13:26:53

Название: Реверс-инжениринг с Python на UML
Отправлено: Humbert от 22 Июля 2016, 13:26:53
Добрый день!

Есть система , написанная на Python более-менее документированная для целей разработки - то есть комментарии есть, есть текстовые описания. Но есть необходимость сделать документацию для передачи, то есть для внешней организации. Очень не хотелось бы такую документацию писать совсем с нуля, а хочется попытаться вытащить все что можно из кода - как минимум диаграммы классов, в идеале еще бы какие - нибудь еще поведенческие диаграммы.

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

Если кто сталкивался с такими системами, хотелось бы узнать об их возможностях 
Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Galogen от 24 Июля 2016, 20:16:06
Enterprise Architect может делать реверс из файлов на питоне. Поведенческие диаграммы кажется возможны для диаграмм последовательности, но нужно подключаться к исполняемому коду (могу ошибаться). Могу сделать реверс для вас.
Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Humbert от 25 Июля 2016, 10:36:06
Спасибо !

В результате исследований обнаружил, что диаграммы классов по коду (в том числе и питоновскому) строят почти все - и среды разработчика, и средства аналитика (в том числе и EA).

Visual Paradigm умеет строить sequence  diagramm , но почему-то только по java

https://www.visual-paradigm.com/support/documents/vpuserguide/276/277/39788_javatosequen.html

В EA диаграмму классов построить удалось (довольно неплохую), а вот признаков построения sequence  diagramm не обнаружено.

IMHO, для построения  поведенческих диаграмм по ОО коду исходников недостаточно (тем более для интерпретаторов типа Python или Perl). Скорее нужно средство типа debugger, который имея исходники может при исполнении программы фиксировать последовательность вызовов, а потом их обрабатывать и строить UML.

EA как то не очень похож на такой продукт...
Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Humbert от 25 Июля 2016, 11:54:20
Цитировать
EA как то не очень похож на такой продукт...

Виноват, у EA есть возможность вообще вести полностью разработку в его среде (раздел Analyser). Там и средства отдадки можно настроить. Так что потенциально у EA такая возможность может появится
Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Humbert от 25 Июля 2016, 11:58:45
О! И генерация sequence в EA есть!

http://blog.lieberlieber.com/2010/09/22/enterprise-architect-auto-generating-a-sequence-diagram-from-code/

Но питона в списке поддерживаемых языков нет :(

Цитировать
Record executing programs and represent the behavior as a UML Sequence diagram; recording is supported for:

    Microsoft Windows Native C
    Microsoft Windows Native C++
    Microsoft Windows Visual Basic
    Microsoft .NET Family (C#, J#, VB)
    Sun Microsystems Java
    PHP

http://www.sparxsystems.com/enterprise_architect_user_guide/9.0/visual_execution_analyzer/using_the_execution_analyzer.html
Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Galogen от 25 Июля 2016, 17:44:41
О! И генерация sequence в EA есть!
Большую работу вы проделали. Кстати с фирмой либерлибер у меня есть контакты, если что. Личные :)
Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Humbert от 26 Июля 2016, 10:49:47
Большую работу вы проделали.

Гуглить не мешки ворочать :)

Цитировать
Кстати с фирмой либерлибер у меня есть контакты, если что. Личные :)

Класс!

Я кстати не понял, либерлибер разработали эту функциональность под EA, или только активно используют?
Насколько реально получить в EA поддержку Python самостоятельно, через Sparx или LieberLieber?

С точки зрения спаркса было бы разумно исходники адаптеров на каждую платформу выложить в открытый доступ. Разработчик , попробовав документирование на EA крепко задумается о переходе на кодогенерацию из под EA. Отличный способ расширения клиентской базы.

Вообще идея замечательная - строить sequence по отладочным логам. Документировать тогда можно таким образом - построить  ДВИ , расписать основные сценарии, а потом включать рекордер под каждым сценарием, чтобы диаграммы последовательности или диаграммы состояний связывались с пользовательскими сценариями.

Хорошая альтернатива перелопачиванию исходников и расстановке тегов в DOXYGEN . Причем регулируя глубину проработки сценариев и их охват можно получать как документацию для галочки, так и качественную РД для реального последующего использования.

Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Humbert от 26 Июля 2016, 12:50:27
При ближайшем рассмотрении идея получать диаграммы последовательности и диаграммы состояний по стеку оказались не лишены недостатков - похоже такая технология применима  только для desctop приложений под windows. Под линукс EA ставится только под Wine

http://www.sparxsystems.com/support/faq/enterprise-architect-WINE.html

что вызывает большие сомнения в том, что отладчик и рекордер из под него заработает. А ведь эта идея подразумевает исполнение программы в той же среде, что и сам EA.

А уж если брать варианты со всякими специфические диалекты Linux (типа Astra Linux), то там  вообще проблемы гарантированы.

Еще более серьезные проблемы будут в том случае, если приложение серверное. Особенно в архитектуре с тонким клиентом. Его вообще по кнопочке RUN не запустишь.

В идеале было бы сделать рекордер вообще автономным. Чтобы он мог самостоятельно писать в некоторую базу или файл, а в EA его только обрабатывать. А рекордер собирать для отдельный для каждой ОС, заодно можно избавиться от привязки к языку программирования.








Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Humbert от 26 Июля 2016, 17:25:09
При ближайшем рассмотрении идея получать диаграммы последовательности и диаграммы состояний по стеку оказались не лишены недостатков - похоже такая технология применима  только для desctop приложений под windows. Под линукс EA ставится только под Wine

Под убунтой вроде можно отлаживаться

http://www.sparxsystems.com/support/faq/enterprise-architect-WINE.html

Цитировать
Issue: Debugging fails when using Ubuntu 12.04.
Issue: Source control fails when using Ubuntu 12.04.
Solution: Upgrade to WINE 1.5.7 or greater
Solution: Run the following command "echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope"
Note: This appears to be a bug in the linux kernel that is shipped with Ubuntu. See Ubuntu Bug Reference for more information. Appears to be fixed in Ubuntu 12.04.1

Правда непонятно, какое приложение при этом можно отлаживать - виндовое или линуксовое . Вайн - это же эмулятор
Название: Re: Реверс-инжениринг с Python на UML
Отправлено: Galogen от 26 Июля 2016, 21:09:32
Я кстати не понял, либерлибер разработали эту функциональность под EA, или только активно используют?
Насколько реально получить в EA поддержку Python самостоятельно, через Sparx или LieberLieber?
ЕА построен так, что его можно легко расширять через автоматизацию и MDG технологию. Есть открытый API под разные платформы. Либерлибер по сути делают такую надстройку, которая использует ядро ЕА.

Насколько я понимаю, при желании можно самому такую поддержку организовать. В принципе ЕА открыты для новшеств, но у них работает  кумулятивная система. Если наберете как говорится подписей - сделают. Возможно нужно кинуть клич на форуме (http://sparxsystems.com/forums/smf/index.php?action=search2)