2008-11-03 5 views
177

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

소스 코드는 매우 단순하고 대단히 악마가 아닙니다. 예를 들어, 멋진 메타 크래스 마술은하지 않습니다. (대부분 파이썬 1.5.2부터 "현대적인"2.3ish 자료를 뿌렸습니다.)

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

+14

개조자는이 질문을 건설적으로 찾지 못했습니다. 나는 (그리고 많은 사람들이 이것을 좋아했다) 유용하다는 것을 알았다. 그래서? _that_는 건설적인 것이 아니라는 것보다 더 큰 거래는 아닙니다! –

+9

토론, 논쟁, 토론을 요구하기 때문에 건설적이지 않음 ?????? 그게 우리가 원하는 것 아닌가요? 이것은 매우 관련있는 질문입니다. – Bhushan

+2

@yatisagade 그것이 닫혔다는 사실을 잊어 버리면 삭제되지 않습니다.이 많은 upvotes는 사실상 결코 삭제 될 수 없습니다. 다만 새로운 결론을 내릴 수는 없습니다. – tacaswell

답변

7

이클립스를 사용하는 경우 PyUML 일 수 있습니다. , 그것을 사용하지 않았습니다.

+1

정말 좋은 제안입니다. 그러나 FWIW는 Eclipse 3.4 (Ganymede)를 아직 지원하지 않는다는 PyUML 프로젝트 사이트를 주목합니다. 그들이 그것을 해결할 때 시험해보기를 기대합니다. –

+0

3.4로 PyUML 작업을 한 적이 있습니까? – anijhaw

+0

이 프로젝트의 마지막 커밋은 2009 년으로 거슬러 올라갑니다. 마켓 플레이스에는 나타나지 않으며 Eclipse는'.zip' 아카이브에서 Eclipse를 설치할 수 없습니다. –

8

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

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

이러한 것들이 불가능하다는 것을 증명하기 위해 UML 다이어그램이 존재한다면 임의의 프로그램을 사용하여 "halt"문을 UML 다이어그램에 영향을주는 문으로 변환하고 UML 다이어그램을 사용하여 해결할 수 있다고 주장 할 수 있습니다 우리가 알다시피 불가능한 정지 문제.

+3

몇 가지 좋은 일들이 있지만, 손을 버림으로 해결하는 것은 그걸 폐허로 만듭니다. 병리학 적 사례는 여기서 문제가되지 않습니다. 잘 행동하면 충분합니다. – ddaa

+0

"손동작"이란 무엇을 의미합니까? 나는 완전한 증거를 쓰지는 않았지만 유사한 증거를 본 사람이라면 누구나 구성을 만들 수 있고 상속을 위해서 하나의 정보를 얻을 수있었습니다. – Glomek

+9

여기에 비유가 있습니다. diff/patch는 여러 가지 방법으로 실패 할 수 있습니다. 그 중 일부는 간단합니다. 그것은 많은 실제 사례에서 여전히 매우 유용합니다. 합리적인 경우 다이어그램 상속은 간단합니다. 위임은 좀 더 까다 롭지 만 패키지의 경계 내에서 유형 유추에 의해 가능합니다. – ddaa

78

Epydoc은 Python 소스 코드에서 API 문서를 생성하는 도구입니다. 또한 팬시 방식으로 Graphviz을 사용하여 UML 클래스 다이어그램을 생성합니다. Epydoc 자체 소스 코드에서 생성 된 an example of diagram입니다.

Epydoc은 객체 내성 검사와 소스 파싱을 모두 수행하기 때문에 Doxygen과 같은 정적 코드 분석기와 관련하여 더 많은 정보를 수집 할 수 있습니다. 즉, 동적으로 생성되는 상당량의 클래스 및 함수를 검사 할 수 있지만 주석 또는 할당되지 않은 문자열을 문서 소스, 예. 변수 및 클래스 공용 속성의 경우

+0

gif 대신 벡터 그래픽을 출력 할 수있는 방법이 있습니까? 나는 그 문서를 찾지 못했고 그래프는 html 문서가 아닌 다른 것에는 쓸모가 없다. – oarfish

+3

현재, 'epydoc'은 그래프를 생성 할 수없는 것 같습니다. 이 [버그 리포트] (https://sourceforge.net/p/epydoc/bugs/372/)를 확인하십시오. –

+1

은 파이썬 3에서 작동하지 않습니다. – tomsv

3

SPE IDE에는 UML 작성자가 내장되어 있습니다. SPE에서 파일을 열고 UML 탭을 클릭하기 만하면됩니다.

귀하의 필요에 얼마나 적합한 지 모르지만 사용하려면 추가로 다운로드하거나 구성 할 필요가 없습니다.

+0

슬프게도 developping이 중지되었지만 여전히 여기서 작동합니다! (2013) – Abdelouahab

6

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

3

Sparx의 Enterprise Architect은 파이썬 소스의 라운드 트립을 수행합니다. 그들은 자유 시간 제한 시험판을 가지고 있습니다.

3

Umbrello도 그렇게합니다. 메뉴에서 코드 -> 프로젝트 가져 오기로 이동 한 다음 프로젝트의 루트 디렉토리를 가리 킵니다. 그것은 나중에에 대한 코드 ...

+0

Umbrello가 완전한 클래스 다이어그램을 생성하도록 만드는 방법을 알고 있습니까? (그리고 클래스 자체 만이 아니라 클래스 간의 관계 - 다이어그램이 어떻게 호출되는지 기억하지 마십시오.) –

+1

AAhh, 파일을 선택한 다음 클래스를 도면 영역으로 드래그 앤 드롭하면 연결이 자동으로 추가됩니다. – Hosane

68

의 목록을 반전시킵니다. 사람들은 Pyreverse이라는 도구를 사용하여 읽는 파이썬 코드에서 UML 다이어그램을 그립니다. Pyreverse는 graphviz를 백엔드로 사용합니다.

+0

Pyreverse는 잘 작동합니다. – Quanlong

3

vipera는 작은 응용 프로그램 디자이너이고 uml이 포함되어 있습니다. 당신은 그것을 볼 수 있습니다

vipera

안부를.

관련 문제