диаграмма классов без отношений после реверс-инжиниринга python

Я пытаюсь работать над проектом Python, который не задокументирован.

Я сделал обратный инжиниринг, чтобы получить диаграмму классов 2 раза в среде Windows: с помощью sparx EA и с визуальной парадигмой.

Но в обоих случаях я получил диаграмму классов с классами без отношений (даже если я настроил процесс для их создания). это возможно или есть проблема?




Ответы (2)


Почти все инструменты (для себя у меня есть опыт в EA и задним числом в RSA) имеют трудности с отображением отношений между классами. В основном они восстанавливают структуру (файлы/пакеты) и операции/свойства отдельных классов. В некоторых случаях вы также получите отношения, но, как сказано: это ограничено.

В любом случае, если вы собираетесь понять код, хорошей практикой будет дополнить/исправить недостающие отношения между классами и тем самым также добавить комментарии.

person qwerty_so    schedule 28.08.2015
comment
да, понимание и сканирование кода - это решение, о котором я тоже думал, просто я не привык к python, и, поскольку у меня мало времени, я ищу другое более быстрое решение. как инструмент, который предназначен для этого или что-то .. - person quvine; 28.08.2015

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

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

В EA есть несколько опций, с которыми вы можете поиграться в меню «Инструменты» — «Параметры» — «Разработка исходного кода». На этой странице есть «Создать зависимости для возвратов операций и типов параметров», которые, как я полагаю, отключены по умолчанию. Но поскольку EA рассматривает все типы Python как var, я не думаю, что это будет иметь большой эффект.

Для каждого языка есть дополнительные параметры, но я не думаю, что в разделе Python есть что-то, что влияет на отношения.

person Uffe    schedule 28.08.2015
comment
да, это именно то, о чем я думал. uml - это ООП, как и python, и когда я мошенничаю с классами, между некоторыми из них определенно есть отношения. но, поскольку я не привык к python, и у меня нет достаточно времени, чтобы изучить его, я не могу сам отсканировать код и попытаться их идентифицировать. - person quvine; 28.08.2015