Автор Тема: Реверс-инжениринг с Python на UML  (Прочитано 1197 раз)

Humbert

  • Sr. Member
  • ****
  • Сообщений: 258
  • Рейтинг читателей: 29
    • Просмотр профиля
Реверс-инжениринг с Python на UML
« : 22 Июля 2016, 13:26:53 »
Добрый день!

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

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

Если кто сталкивался с такими системами, хотелось бы узнать об их возможностях 


Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6050
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Реверс-инжениринг с Python на UML
« Ответ #1 : 24 Июля 2016, 20:16:06 »
Enterprise Architect может делать реверс из файлов на питоне. Поведенческие диаграммы кажется возможны для диаграмм последовательности, но нужно подключаться к исполняемому коду (могу ошибаться). Могу сделать реверс для вас.

Humbert

  • Sr. Member
  • ****
  • Сообщений: 258
  • Рейтинг читателей: 29
    • Просмотр профиля
Re: Реверс-инжениринг с Python на UML
« Ответ #2 : 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 как то не очень похож на такой продукт...
« Последнее редактирование: 25 Июля 2016, 10:41:06 от Humbert »

Humbert

  • Sr. Member
  • ****
  • Сообщений: 258
  • Рейтинг читателей: 29
    • Просмотр профиля
Re: Реверс-инжениринг с Python на UML
« Ответ #3 : 25 Июля 2016, 11:54:20 »
Цитировать
EA как то не очень похож на такой продукт...

Виноват, у EA есть возможность вообще вести полностью разработку в его среде (раздел Analyser). Там и средства отдадки можно настроить. Так что потенциально у EA такая возможность может появится

Humbert

  • Sr. Member
  • ****
  • Сообщений: 258
  • Рейтинг читателей: 29
    • Просмотр профиля
Re: Реверс-инжениринг с Python на UML
« Ответ #4 : 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
« Последнее редактирование: 25 Июля 2016, 12:14:03 от Humbert »

Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6050
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Реверс-инжениринг с Python на UML
« Ответ #5 : 25 Июля 2016, 17:44:41 »
О! И генерация sequence в EA есть!
Большую работу вы проделали. Кстати с фирмой либерлибер у меня есть контакты, если что. Личные :)

Humbert

  • Sr. Member
  • ****
  • Сообщений: 258
  • Рейтинг читателей: 29
    • Просмотр профиля
Re: Реверс-инжениринг с Python на UML
« Ответ #6 : 26 Июля 2016, 10:49:47 »
Большую работу вы проделали.

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

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

Класс!

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

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

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

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


Humbert

  • Sr. Member
  • ****
  • Сообщений: 258
  • Рейтинг читателей: 29
    • Просмотр профиля
Re: Реверс-инжениринг с Python на UML
« Ответ #7 : 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 его только обрабатывать. А рекордер собирать для отдельный для каждой ОС, заодно можно избавиться от привязки к языку программирования.









Humbert

  • Sr. Member
  • ****
  • Сообщений: 258
  • Рейтинг читателей: 29
    • Просмотр профиля
Re: Реверс-инжениринг с Python на UML
« Ответ #8 : 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

Правда непонятно, какое приложение при этом можно отлаживать - виндовое или линуксовое . Вайн - это же эмулятор
« Последнее редактирование: 26 Июля 2016, 17:50:31 от Humbert »

Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6050
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Реверс-инжениринг с Python на UML
« Ответ #9 : 26 Июля 2016, 21:09:32 »
Я кстати не понял, либерлибер разработали эту функциональность под EA, или только активно используют?
Насколько реально получить в EA поддержку Python самостоятельно, через Sparx или LieberLieber?
ЕА построен так, что его можно легко расширять через автоматизацию и MDG технологию. Есть открытый API под разные платформы. Либерлибер по сути делают такую надстройку, которая использует ядро ЕА.

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