PHP UML 생성기 [닫힘]


110

PHP의 기존 클래스를 기반으로 UML 다이어그램을 어떻게 생성합니까?


2
더 이상 PHP로 작업하지 않기 때문에 실제로 테스트 할 코드가 없습니다. 내가 이것을 게시했을 때 초기 답변 중 어느 것도 충분하지 않았지만 그 이후로 많은 것이 변경되었습니다. 저는 PHP 5.2로 작업하고 있었는데 요즘은 PHP7입니다.
Jeffrey04

답변:


42

pear 에서 사용할 수있는 PHP UML 도구도 있습니다 .

PHP_UML :

  • 버전 1.4 또는 버전 2.1 (논리, ​​구성 요소 및 배포보기)에서 UML / XMI 파일을 생성 할 수 있습니다.
  • HTML 형식으로 API 문서 생성 가능
  • 주어진 XMI 파일에서 PHP 코드 (코드 스켈레톤)를 생성 할 수 있습니다.
  • UML / XMI 콘텐츠를 버전 1.4에서 버전 2.1로 변환 할 수 있습니다.

다음을 통해 명령 줄에 설치합니다.

$ pear install pear/php_uml

(이전 $ pear install pear/php_uml-alpha에는 그랬지만 패키지가 안정되었습니다.)

xmi 생성 :

$ phpuml -o project.xmi


2
어떤 이유로 pear.com은 뒤에 슬래시가없는 링크를 좋아하지 않습니다. pear.php.net/package/PHP_UML
Stephen Fuhry

1
@Stephen, 그래 나도 알아 차렸다! 링크를 클릭하면 404가 표시되지만 주소 표시 줄을 선택하고 Enter 키를 누르면 작동합니다.
nickf

1
몇 년 후 명령은 이제 pear install PHP_UML-1.6.1( pear.php.net/package/PHP_UML/download/All 또는 pear.php.net/package/PHP_UML 참조 )
Ben

1
이것은 받아 들여진 대답이어야합니다. 이 도구는 훌륭합니다.
Xofo

3
PHP 7에서 작동하지 않음
DevWL

41

다음과 같은 BOUML 을 강력히 권장합니다 .

  • 매우 빠릅니다 (지금까지 만들어진 것 중 가장 빠른 UML 도구, 벤치 마크 확인 ).
  • 견고한 PHP 가져 오기 및 내보내기 지원 (C ++, Java, Python도 지원)
  • 다중 플랫폼 (Linux, Windows, 기타 OS)입니다.
  • 모든 기능을 갖추고 인상적으로 집중적으로 개발되었습니다 ( 개발 역사를 살펴보면 이러한 빠른 진행이 가능하다고 믿기 어렵습니다).
  • 플러그인 지원, 모듈 식 아키텍처 (이는 사용자 기여를 허용 하고 BOUML 커뮤니티가 형성되는 것처럼 보임)

벤치 마크는 정말 인상적입니다. 저는 엔터프라이즈 아키텍트를 좋아하지만 PHP를 지원하지 않습니다. 이 도구를 전달하겠습니다. 감사합니다.
Paul Dragoonis 2010 년

1
@Paul Dragoonis Sparx Systems Enterprise Architect PHP를 지원 하지만 최악은 아닙니다 .
도끼.

5
BOUML의 웹 페이지에는 "주의 : 위키피디아 사람들의 지속적인 라이센스 위반, 공격 및 모욕 [...]으로 인해 버그 수정을 제외하고는 Bouml 작업을 중단하기로 결정했습니다."
MPV '2011

1
공식 웹 사이트에서 "[2011 년 12 월 18 일] 다운로드는 추후 공지가있을 때까지 중단됩니다." http://bouml.free.fr/download.html-Win7 용 버전이 필요했기 때문입니다. 우분투 저장소에서 여전히 사용할 수 있다고 생각합니다-확인해야합니다
Val Redchenko

4
버전 6.1은 2012 년 9 월 23 일에 출시되었습니다 . 개발이 다시 시작된 것으로 보입니다. 감속, 정지 등에 대한 통지가 없습니다. bouml.fr/historic.html
Andrew Ensley

24

phUML

phUML은 BSD 라이선스에 따라 사용이 허가 된 PHP로 작성된 완전 자동 UML 클래스 다이어그램 생성기입니다. 모든 PHP5 객체 지향 소스 코드를 구문 분석하고 UML 사양을 기반으로 oo 구조의 적절한 이미지 표현을 생성 할 수 있습니다.

UML 예

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

단계별 가이드


다운로드하려면 SVN / subversion이 필요하며 소스 코드의 라이센스가 실제로 무엇인지 말하지 않지만 괜찮아 보입니다! yah 나는 소스 코드를 살펴 보는 데주의 할 것입니다. 라이센스가 전혀없고 유일한 readme 사이트는 제 생각에

: 라이센스는 크리에이티브 커먼즈 저작자 아래 프로젝트의 웹 사이트 사이드 바에서 바로 연결되어 creativecommons.org/licenses/by-nc-sa/3.0
안토니 Hatzopoulos

그것이 사이트의 콘텐츠에 대한 라이선스이고, 프로젝트에 대한 라이선스 는 프로젝트 자체에 포함 되어야 합니다.

3
나는 저자, 야콥에게 이메일을 보낸 그는 명확한와 저장소에 대한 업데이트로 응답 절단 3 절 BSD 라이선스
안토니 Hatzopoulos

나는 이것을 다운로드하고 약간의 땜질 후에 작동하도록했습니다. 정말 멋 졌어요. 제가 협회를 작동시킬 수 없다는 점을 제외 하고는 요.하지만 제가 알아낼 거라고 확신 해요. 멋지고 간단합니다. 그래도 GUI는 없지만 그렇게 큰 문제는 아닙니다.
Impulss 2014

19

내가 찾은 최고의 (Windows) 소프트웨어는 PHP 및 UML을 수행하는 Sparx Systems Enterprise Architect 입니다. 다양한 기능 외에도 PHP에 대해 다음 을 지원합니다 .

  • 객체 지향 PHP를 UML 클래스 다이어그램으로 리버스 엔지니어링
  • UML 클래스 다이어그램에서 PHP 클래스 정의 생성
  • UML 클래스의 변경 사항을 해당 PHP 클래스 정의에 동기화
  • PHP 클래스 정의의 변경 사항을 해당 UML 클래스로 동기화
  • UML 시퀀스 다이어그램을 만들어 PHP 클래스가 사용하는 것과 사용 방법을 보여줍니다.
  • 표준 RTF 및 HTML 형식으로 PHP 코드에 대한 자세한 문서 생성
  • 모델에서 코드 엔지니어링을 수행하여 기본 PHP 페이지를 생성합니다.

공짜는 아니지만 ($ 199) 확실히 그만한 가치가 있습니다.


1
와우, 정말 유용하고 전문적인 프로그램입니다. 팁 감사합니다 !! 방금 PHP 소스 코드에서 Sparx EA의 리버스 엔지니어링 방법으로 생성 한 UML 클래스 다이어그램을 시도해 보았는데, 이것이 매력처럼 작동했습니다. 얼마나 잘 작동하는지 놀랐습니다. : D 프로젝트가 점점 더 커지고 더 많은 객체를 생성함에 따라 자체 코드를 주시하는 것이 점점 어려워 지지만 UML 다이어그램을 올바른 방식으로 생성하므로 큰 도움이됩니다. 물론 예외가 발생할 수도 있습니다) 코드를 완성한 후. 이는 객체 간의 관계를 단순화하는데도 도움이됩니다.
Sk8erPeter 2011 년

@ax-저는 초보자이고 기능 목록 ( "버전 비교"아래)에서 약간의 길을 잃었습니다. PHP 코드 (또는 PHP 파일에 대한 링크)를 입력하고 그 대가로 다이어그램을 얻을 수있는 기능의 이름은 무엇입니까? 어떤 버전이 필요한지 알아 내려고합니다.
JDelage



7

내가 한 방법은 다음과 같습니다 (수동 그리기없이 코드에서 PDF 그리기로 직접).

  1. 클래스 모델을 추출하려면 "리버스 엔지니어링 PHP 코드"에 BOUML 을 사용하십시오 (BOUML은 Ubuntu의 "유니버스"저장소에서 사용할 수 있음). 내가 시도한 다른 많은 프로그램에 비해 정말 빠르기 때문에이 단계에 BOUML을 진지하게 추천합니다. 또한 BOUML이 모델을 올바르게 추출하는 것 같습니다 (BOUML이 추출하려고하는 부분에 대해).
  2. BOUML을 사용하여 모델을 XMI 1.4 파일로 내보내기
  3. ArgoUML 을 사용 하여 해당 XMI 파일 가져 오기 (이 단계에서는 웹 시작 버전을 사용할 수 있음)
  4. ArgoUML에서 XMI 내보내기 (출력이 어떤 XMI 버전 / 변형인지 모르겠지만 BOUML의 출력과 동일한 결과가 아닙니다. argouml-graphviz는 BOUML에서 직접 XMI 파일을 처리 할 수 ​​없습니다).
  5. argouml-graphviz 를 사용 하여 ArgoUML에서 내 보낸 XMI 파일을 도트 형식으로 변환합니다 ( XSLT2 사용으로 인해 작동하려면 xsltproc 대신 saxon 을 사용해야 할 수 있음)
  6. 클래스 다이어그램을 렌더링 하려면 dot 또는 fdp 또는 sfdp 를 사용하십시오 .

다음은 fdp를 사용하여 PDF 다이어그램을 출력하는 데 적합한 명령 줄의 예입니다 (arguml-graphviz XLST 처리에 의해 생성 된 도트 파일이 xmi-model.dot로 저장되었다고 가정).

fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
  -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
  -Goverlap=false xmi-model.dot -oxmi-model.pdf

대안으로 "역 공학"부분을 수행하기 위해 BOUML 대신 PHP_UML 또는 php2xmi 를 사용해 볼 수 있습니다. 나는 아직 그것을 시도하지 않았습니다.

(저는 UML 사람들이 소스 코드 에서 클래스 및 메서드 정보를 추출하는 것을 의미 할 때 이러한 단어를 사용하는 것처럼 보이기 때문에 "역 엔지니어링"이라는 문구를 사용하고 있습니다 . 개인적으로이 단어를 실행 가능한 바이너리 파일에서 정보를 추출하거나 원시적으로 캡처 한 것으로 해석 합니다 . 와이어 데이터.)

모든 그림을 그리기 위해 컴퓨터를 사용하는 대신 클래스 다이어그램을 손으로 그리는 것을 선호하는 경우 그림에 BOUML 또는 ArgoUML을 사용할 수 있습니다. BOUML을 통해 "리버스 엔지니어링"데이터를 사용하면이 경우에 도움이됩니다.



1

UML에 Visual Paradigm을 사용할 수 있습니다. 이것은 누군가가 시도하고 싶은 경우 옵션으로 가장 좋은 유료 (미화 699 달러) 제품이 아닐 수도 있습니다. PHP에서 클래스 다이어그램을 만들 수 있으며 그 반대도 가능합니다. PHP뿐만 아니라 C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl 등과 같은 언어를 선택할 수 있습니다. 당신이 확인할 수있는 재판.


1

이론적으로는 PhpStorm을 사용하여 UML을 사용하여 클래스를 시각화 할 수 있습니다. 세대가별로 좋지는 않지만 효과적으로 리팩토링 할 수 있으며 최소한 부모, 구현, 상수, 속성, 메서드 및 가시성을 좋은 방식으로 미리 볼 수 있습니다.

상태

기존 구성 요소 간의 의사 소통을 동료에게 시각화하고 싶습니다.

PHPStorm을 사용한 처리

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

장점

  • 멋진 UI, 최종 다이어그램.
  • 다이어그램에서 코드를 리팩터링 할 수 있습니다.
  • 메모를 추가 할 수 있습니다.
  • 클래스 다이어그램은 private / public 속성, 생성자, 메서드를 멋지게 상징합니다.

단점

  • PHP 7은 지원하지 않습니다.
  • 사용하기가 고통 스럽습니다. 생성 된 상자의 크기를 조정할 수 없습니다.
  • 새로운 관계를 추가 할 때 이전 관계는 무작위로 손실됩니다. : O wtf?
  • PhpStorm을 다시 시작하면 다이어그램이 삭제됩니다.
  • 내 마음을 바꾸고 관계를 사용할 수 없습니다.

결과

어쨌든 고통스러운 시간을 보낸 후에는 관련없는 상자 만 생성 할 수 있었고 관계를 연결하기 위해 추가 프로그램을 사용해야했습니다. 정말 나쁘다. 그러나 일단 제대로 작동하게되면 코드가 변경되면 다이어그램이 자동으로 업데이트되기 때문에 훌륭한 기능이 될 것이라고 생각합니다!

지금은 UML 다이어그램에 PhpStorm을 사용하지 마십시오.


나는이 새로운 가정 (:
Jeffrey04

옳은. 현재 나는 같은 상황에 처해 있습니다. 시스템의 복잡한 부분을 개발했으며 동료를 위해이를 시각화하고 싶습니다. 나는 여러 도구를 시도했지만 그들은 엉망이고 못 생겼습니다. :) PHPStorm으로 그것을하고 그것이 어떻게 생겼는지 그리고 얼마나 강력한 지 내 대답을 업데이트 할 것입니다. 오늘은 당신이 알고있는 결과를 드릴 것입니다 @ Jeffrey04
루카스 Lukac

괜찮아, 사실은 꽤 많은 시간 동안 PHP를하지 않는다
Jeffrey04

0

솔직히 말해서 무엇보다도 코드에서 UML 모델을 생성하지 말고 UML 모델에서 코드를 생성해야합니다.).

드문 상황이더라도 리버스 엔지니어링을해야 할 때 자동 생성 된 UML은 시각적 (= 정보)이 정말 좋지 않기 때문에 일반적으로 직접 또는 최소한 다이어그램을 정리하는 것이 좋습니다. 대부분의 시간을 소중하게 생각합니다.

다이어그램을 생성하기 만하면 그 이유가 정확히 무엇인지 자문 해 보는 것이 좋습니다. 대상 청중은 누구이며 목표는 무엇입니까? 자동 생성 된 다이어그램이 제공해야하는 것은 무엇이며, 제공하지 않는 코드는 무엇입니까?

기본적으로 나는 그 질문에 대한 답을 하나만 받아들입니다. 너무 크고 이해하기 힘들어졌습니다.

이것은 코딩을 시작하는 것과는 반대로 UML로 시작해야하는 이유입니다.) 분석이라고 불리며 쇠퇴하고 있습니다. 왜냐하면 비즈니스의 모든 두 번째 사람은 그것이 너무 비싸고 실제로 필요하지 않다고 생각하기 때문입니다.


7
사실이지만 인생은 사용하는 것이 현명한 일부 원칙보다 더 복잡합니다. 실제 코드를 원래 UML 다이어그램과 비교하거나 UML 다이어그램없이 구현 된 일부 코드 또는 일부 코드를 분석해야 할 수 있습니다.
DAH

3
동의하지 않는다. 다이어그램으로 코드베이스 / 모듈을 시각화하여 얻을 수있는 큰 가치. 코드는 거리 길 찾기와 비슷하지만 길 찾기가 너무 많으면지도가 유용 할 수 있습니다.
Basil Musa

1
대부분의 UML 그리기 프로그램에는 너무 나쁜 UI가 있어서 다이어그램을 생성하는 데 사용한 코드를 버리더라도 코드를 작성하고 자동으로 UML 다이어그램을 생성 하는 것이 더 빠릅니다 ...
Mikko Rantalainen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.