파이썬 소스 코드에서 UML 다이어그램을 생성하는 가장 좋은 방법은 무엇입니까? [닫은] Q & A 형식에 적합하지 않습니다. 답변,

동료가 파이썬 소스 코드의 힙에서 UML 클래스 다이어그램을 생성하려고합니다. 그는 주로 상속 관계에 관심이 있고 구성 관계에 약간 관심이 있으며 Python 기본 요소 인 클래스 속성에 대해서는 크게 신경 쓰지 않습니다.

소스 코드는 매우 간단하고 사악하지는 않습니다. 예를 들어 멋진 메타 클래스 마술은하지 않습니다. (이것은 대부분 파이썬 1.5.2 시절에 ​​시작되었으며, “현대”2.3ish 것들이 뿌려졌습니다.

권장하는 가장 좋은 기존 솔루션은 무엇입니까?



답변

파이썬 코드를 정적으로 검사하는 데 도움 이되는 Pylint에 대해 들어 보셨을 것입니다 . 파이썬 코드에서 UML 다이어그램을 그리는 Pyreverse 라는 도구가 포함되어 있다는 것을 아는 사람은 거의 없습니다 . Pyreverse는 graphviz를 백엔드로 사용합니다.


답변

Epydoc 은 Python 소스 코드에서 API 문서를 생성하는 도구입니다. 또한 멋진 방법으로 Graphviz 를 사용하여 UML 클래스 다이어그램을 생성 합니다. 다음은 Epydoc 자체의 소스 코드에서 생성 된 다이어그램의 예입니다 .

Epydoc은 객체 검사와 소스 파싱을 모두 수행하기 때문에 Doxygen과 같은 정적 코드 분석기와 관련하여 더 많은 정보를 수집 할 수 있습니다. 변수 및 클래스 공용 속성


답변

파이썬을위한 7 가지 uml 도구 목록을 확인하십시오.


답변

올바르게 작동하는 특정 클래스의 클래스는 다이어그램으로 표시 할 수 있지만 일반적인 경우에는 수행 할 수 없습니다. Python 객체는 런타임에 확장 할 수 있으며 모든 유형의 객체를 모든 인스턴스 변수에 할당 할 수 있습니다. 객체가 (컴포지션)에 대한 포인터를 포함 할 수있는 클래스를 파악하려면 프로그램의 런타임 동작을 완전히 이해해야합니다.

파이썬의 메타 클래스 기능은 상속 구조에 대한 추론이 프로그램의 런타임 동작을 완전히 이해해야한다는 것을 의미합니다.

이것이 불가능하다는 것을 증명하기 위해, 그러한 UML 다이어그램 머가 존재한다면, 임의의 프로그램을 가지고 “halt”문장을 UML 다이어그램에 영향을 줄 문장으로 변환하고 UML 다이어그램 머를 사용하여 정지 문제를 해결할 수 있다고 주장합니다. 아시다시피 불가능합니다.


답변

이클립스를 사용한다면 아마도 PyUML 일 것 입니다 . 그래도 사용하지 않았습니다.


답변

Gaphor를 언급 할 가치가 있습니다. 파이썬 모델링 / UML 도구.


답변

우산도 그렇게합니다. 메뉴에서 코드-> 프로젝트 가져 오기로 이동 한 다음 프로젝트의 루트 deirectory를 가리 킵니다. 그런 다음 나중에 코드를 뒤집습니다 …