Java 코드에서 UML 다이어그램 (특히 시퀀스 다이어그램)을 생성하는 방법은 무엇입니까?


434

기존 Java 코드에서 UML 다이어그램 (특히 시퀀스 다이어그램)을 어떻게 생성 할 수 있습니까?


3
그런 일은 일어나지 않을 것입니다. 실제 Java 코드는 UML 다이어그램처럼 보이도록 구성되지 않았습니다.
Stephan Eggermont 1

1
시퀀스 다이어그램을 다루지 않는 많은 답변. Hmph
Bill K

@ BillKy 대답은 시퀀스 다이어그램을 처리합니다. - 그것은의 플러그인 인 IntelliJ 아이디어입니다 stackoverflow.com/a/45239269/529187 .
Xiao Peng-ZenUML.com

1
이 질문은 자매 사이트 소프트웨어 권장 사항 스택 교환에 더 적합합니다 .
Basil Bourque

답변:


257

ObjectAid UML 탐색기

내가 사용한 것입니다. 저장소에서 쉽게 설치 됩니다.

Name:     ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current

그리고 꽤 멋진 UML 다이어그램을 생성합니다.

스크린 샷

웹 사이트 설명 :

ObjectAid UML 탐색기는 다른 UML 도구와 다릅니다. UML 표기법을 사용하여 텍스트 편집기만큼 정확하고 최신의 기존 코드를 그래픽으로 표시하고 사용하기가 매우 쉽습니다. 몇 가지 고유 한 기능으로이를 가능하게합니다.

  • 소스 코드와 라이브러리는 표시되는 모델이며 다른 형식으로 리버스 엔지니어링되지 않습니다.
  • Eclipse에서 코드를 업데이트하면 다이어그램도 업데이트됩니다. 소스 코드를 리버스 엔지니어링 할 필요가 없습니다.
  • 리팩토링은 다이어그램과 소스 코드를 업데이트합니다. 필드의 이름을 바꾸거나 클래스를 이동하면 다이어그램이 동기화되지 않고 변경 사항을 반영합니다.
  • Eclipse 작업 공간의 모든 다이어그램은 리팩토링 변경 사항으로 적절하게 업데이트됩니다. 필요한 경우 버전 관리 시스템에서 체크 아웃됩니다.
  • 다이어그램은 Eclipse IDE에 완전히 통합됩니다. Java 클래스를 다른보기에서 다이어그램으로 끌어 올 수 있으며 해당되는 경우 다이어그램 관련 정보가 다른보기에 표시됩니다.

파피루스보다 쉽지만 다이어그램을 만드는 옵션이 적습니다.
lcardosobr

ObjectAid에서 클래스 다이어그램을 자동 정렬하는 방법이 있습니까?
재사용 가능

4
HowTo >>> 여기에서 계정을 만드십시오 : objectaid.com/login (활성화 이메일은 10 분 안에 발송되었습니다), 다이어그램 애드온을 클릭하면 라이센스가 귀하의 이메일로 발송됩니다. 이 objectaid.com/installation 에 따라 ObjectAid 를 설치 한 다음 download.eclipse.org/tools/gef/updates/releases 에서 GEF를 설치하십시오. 이제 라이센스를 이메일에서 Window-> Preferences-> ObjectAid에 복사하여 붙여 넣기 다이어그램을 작성하는 방법은 무엇입니까? objectaid.com/class-diagram
rluks

일식 주노에 설치할 수 없습니다. An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
Gunaseelan

1
ObjectAid의 상용 버전은 시퀀스 다이어그램 생성과 관련하여 더 좋을 수 있습니다. vs 무료는 클래스 다이어그램을 생성하는 데만 사용할 수 있습니다!
whoami

63

편집 : 당신이 디자이너 인 경우 Papyrus 가 최고의 선택이며 매우 고급 스럽고 기능이 풍부합니다. 그러나 UML 다이어그램과 쉬운 설치를 스케치하고 싶다면 ObjectAid 가 매우 멋지고 플러그인이 필요하지 않습니다. Eclipse-Java EE에 설치하고 훌륭하게 작동합니다!.


업데이트 2013 년 10 월 11 일

내 원래 게시물은 2012 년 6 월에 많은 도구가 커지고 다른 도구는 바뀌지 않은 많은 것들이 바뀌 었습니다. 다시 모델링을하고 포스트에 대한 응답을 받기 때문에 파피루스를 다시 설치하기로 결정하고 가능한 다른 UML 모델링 솔루션을 다시 조사 할 것입니다. UML 생성 (동기화 기능 포함)은 소프트웨어 디자이너가 아니라 일반 개발자에게 매우 중요합니다.

파피루스가 리버스 엔지니어 클래스를 UML 클래스 다이어그램으로 간단하게 전환하기를 바랐으며 리버스 엔지니어링에 동기화 기능이 있으면 매우 멋지지만 파피루스 프로젝트에는 기능이 풍부하고 많은 개발자가 이미 많은 손을 잡고 있다고 생각합니다. 파피루스에 대한 행동은 당신에게 아무런 반응을주지 않으며 아무 일도 일어나지 않지만 어쨌든이 질문 범위를 벗어납니다.

답변서 (10 월 11 일, 2013)

도구

  1. 파피루스 다운로드
  2. 도움말-> 새 소프트웨어 설치 ...로 이동하십시오.
  3. 에서 와 협력 : 드롭 다운 선택 --all 가능한 Sites--을
  4. 필터에 Papyrus를 입력하십시오.
  5. 설치가 완료된 후 Eclipse를 다시 시작하십시오.
  6. 1-3 단계를 반복하고 이번에는 Modisco를 설치 하십시오.

단계

  1. 자바 프로젝트 (MyProject라고 가정)에서 UML과 같은 폴더를 만듭니다.
  2. 프로젝트 이름-> 발견-> 발견 자-> Java 프로젝트에서 Java 및 재고 모델 발견을 마우스 오른쪽 단추로 클릭하면 MyProject_kdm.xmi라는 파일이 생성됩니다. 여기에 이미지 설명을 입력하십시오
  3. 프로젝트 이름 파일-> 새로 만들기-> 파피루스 모델->을 마우스 오른쪽 버튼으로 클릭하고 MyProject라고합니다.
  4. 생성 된 세 개의 파일 MyProject.di, MyProject.notation, MyProject.uml을 UML 폴더로 이동하십시오.
  5. KDM 코드에서 MyProject_kdm.xmi-> 발견-> 발견 자-> UML 모델 발견을 다시 마우스 오른쪽 버튼으로 클릭하면 MyProject.uml이라는 파일을 생성하기 위해 직렬화 소품을 TRUE로 설정하는 속성 대화 상자가 나타납니다. 여기에 이미지 설명을 입력하십시오

  6. 루트에서 생성 된 생성 된 MyProject.uml을 UML 폴더로 이동하면 Eclipse에서이를 바꾸려면 예를 클릭하십시오. 여기서 우리가 한 것은 빈 모델을 생성 된 모델로 교체 한 것입니다.

  7. Alt + W->보기 표시-> 파피루스-> 모델 탐색기

  8. 그 관점에서 그림과 같은 수업을 찾을 수 있습니다. 여기에 이미지 설명을 입력하십시오

  9. 보기에서 루트 모델을 마우스 오른쪽 단추로 클릭-> 새 다이어그램 여기에 이미지 설명을 입력하십시오

  10. 그런 다음 뷰에서 다이어그램으로 클래스를 가져 오기 시작하십시오.

일부 기능

  • 클래스 요소 (변수, 함수 등)를 표시하려면 클래스-> 필터-> 내용 표시 / 숨기기 Voila !!

  • Window-> pereferences-> papyrus-> class diagram에서 기본 색상 설정을 할 수 있습니다

  • 매우 중요한 설정 중 하나 는 클래스를 놓을 때 정렬입니다 . 클래스 다이어그램에서 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 정렬을 클릭하십시오.

  • 모델 탐색기보기의 화살표를 다이어그램으로 가져와 일반화, 실현 등을 표시 할 수 있습니다.

  • 모든 설정 후에는 다음과 같은 다이어그램이 표시됩니다 여기에 이미지 설명을 입력하십시오

  • 새 클래스를 수동으로 가져와야한다는 것을 알기 만하면 동기화를 사용할 수 없습니다.

그게 전부입니다. 그리고 정말로 필요한 경우가 아니라면 상용 제품을 사지 마십시오. 파피루스는 실제로 기부금이나 무언가 대신 위대하고 정교합니다.

면책 조항 : 나는 파피루스 사람들과 아무런 관련이 없습니다. 사실, 많은 연구를하고 인내심으로 경험할 때까지 처음에는 파피루스를 좋아하지 않았습니다. 다른 무료 도구를 사용하면이 게시물로 다시 돌아갑니다.


나는 일식에서 Modisco를 검색했습니다. 그것은 0으로 표시되었습니다. 이 프로젝트는 살아 있습니까? 유료 도구가 되었습니까? 파피루스가 이것 없이는 뛰지 ​​않습니까?
R-JANA

STS를 사용하고 실패했습니다.
R-JANA

@ R-JANA Modisco의 현재 상태를 모르지만이 게시물로 돌아가서 곧 파피루스를 설치하려고하고 업데이트해야합니다. 필자는 현재 게시물을 염두에두고 파피루스를 직접 설치해 보라고 조언한다. 이 답변을 게시 한 이후 많은 변화가 발생했다고 생각합니다.
Ismail Marmoush

Papyrus 용 플러그인 (선택 사항)은 Java 리버스 엔지니어링 기능을 추가합니다 ( wiki.eclipse.org/Java_reverse_engineering) . 이를 통해 소스에서 다이어그램 요소를 쉽게 추가 할 수 있으며 클래스를 다이어그램으로 끌어 올 수도 있습니다.
Markus Ende

42

코드베이스는 무엇입니까? 자바 또는 C ++?

대체 텍스트

eUML2 for Java는 Eclipse의 Java 개발자를 위해 설계된 강력한 UML 모델러입니다. 무료 버전은 상업용으로 사용할 수 있습니다. 다음과 같은 기능을 지원합니다.

  • CVS 및 팀 지원
  • 여러 개의 사용자 정의 가능한 모델 뷰가있는 대규모 프로젝트를 위해 설계
  • 헬리오스 준수
  • 실시간 코드 / 모델 동기화
  • UML2.1 호환 및 OMG XMI 지원
  • JDK 1.4 및 1.5 지원
  • 상용판은 다음을 제공합니다.

  • 고급 리버스 엔지니어링

  • 강력한 진정한 의존성 분석 도구
  • UML 프로파일 및 MDD
  • 데이터베이스 도구
  • 사용자 정의 가능한 템플릿 지원

20
이것은 설치하기 매우 어려운 도구입니다. 나는 약 반 시간 동안 성공하지 못했습니다. 다른 제안?
Jonathan

2
cant find eUML2가 내 업데이트 관리 도구이며이 기능으로 새로운 Eclipse 설정을 포장하고 싶지 않습니다. Eclipse "Helios"를 사용하고 있으며 다음과 같이 진행하십시오. 도움말-새 소프트웨어 설치-Helios download.eclipse.org/releases/helios- 모델링
OneWorld

3
나는 이것이 오래된 게시물이라는 것을 알고 있지만 eUML2 설치와 관련된 대부분의 문제는 해결 된 것으로 보입니다.
Andy

7
eUML은 진짜 쓰레기입니다. 내 코드 형식을 변경하고 모든 곳에서 태그를 추가했습니다. 내 코드가 너무 더러워 변경 사항을 취소하는 것을 선호합니다. 문제는 실행 취소가 없으며 코드가 영원히 변경된다는 것입니다. 나는 :-) eUML 변기를 사용하기 전에 백업 프로젝트에 추천 할 것입니다
UML GURU에게

31
버전 관리에 대해 들어 본 적이 있습니까?
삼켜 버린 엘리시움

9

나는 저자 중 한 사람이므로 답이 편향 될 수 있습니다. 오픈 소스 (Apache 2.0)이지만 플러그인은 무료가 아닙니다. 복제하고 로컬로 빌드하는 경우 (분명히) 지불 할 필요가 없습니다.

Intellij IDEA에서 ZenUML은 Java 코드에서 시퀀스 다이어그램을 생성 할 수 있습니다. 여기에 이미지 설명을 입력하십시오

https://plugins.jetbrains.com/plugin/12437-zenuml-support 에서 확인 하십시오.

소스 코드 : https://github.com/ZenUml/jetbrains-zenuml


1
@hc_dev, 알림 주셔서 감사합니다. 그 메모를 추가했습니다.
Xiao Peng-ZenUML.com

7

PlantUML어떻 습니까? 리버스 엔지니어링이 아닙니다 !!! 코딩하기 전에 엔지니어링을위한 것입니다.


4
리버스 엔지니어링 도구를 분명히 요구하는 질문에 대답하지 않습니다.
jmite

1
나는 그것이 정확하다는 것을 확신하지 못한다. PlantUML은 다이어그램으로 코드를 설명 할 수도 있습니다. 클래스 파일에서 관련보기를 열어보십시오
Erez A. Korn

1
예, Eclipse 플러그인의 Java 파일에서 클래스 다이어그램이 자동으로 생성되는지 확인할 수 있습니다.
HRJ

1
나는 이것을 시도했지만 PlantUML 코드가 너무 복잡해지면 그림이 올바르게 렌더링되지 않고 글리치가있는 이유를 알아 내려는 데 모든 시간을 소비합니다. 작은 다이어그램에만 좋습니다.
trusktr

Intellij에서 PlantUML과 Sketch It! graphviz는 코드에서 클래스 다이어그램을 생성 할 수 있습니다. 작은 패키지에 가장 적합하며 다이어그램이 너무 커지면 png가 완전히 생성되지 않는 것 같습니다.
Melissa Loos 2016 년

6

CLI에서 플러그인 목표로 실행하거나 종속성으로 가져 와서 프로그래밍 방식으로 파서를 사용하여 방법에 대한 아이디어를 얻을 있는 maven 플러그인을 개발했습니다 @see Main#main().

그것은 렌더링 PlantUML 반복적으로 원하는 패키지의 SRC 코드를 (희망 당신은하지 않습니다) 필요한 경우 수동으로 편집 할 수 있습니다. 그런 다음 plantUML 페이지에 코드를 붙여 넣거나 식물 병을 다운로드하여 UML 다이어그램을 png 이미지로 렌더링 할 수 있습니다.

https://github.com/juanmf/Java2PlantUML에서 확인 하십시오.

예제 출력 다이어그램 : 여기에 이미지 설명을 입력하십시오

모든 기여는 환영 이상입니다. 출력을 사용자 정의하는 필터 세트가 있지만 플러그인 CLI 매개 변수에는 아직 노출시키지 않았습니다.

* .java 파일에만 국한되지 않으며 UML 다이어그램을 src에서 maven 종속성으로 렌더링 할 수 있습니다. 이것은 당신이 의존하는 라이브러리를 이해하는 데 매우 편리합니다. 실제로 리플렉션으로 컴파일 된 클래스를 검사하므로 소스가 필요하지 않습니다.

GitHub에서 처음으로 별표 표시 : P


4

웹 프로젝트에서 몇 달 전에 문제가 있었지만 Omondo의 EclipseUML 을 일반적인 용도로 사용하는 것이 좋습니다 . 그들은 한 시점에 무료 버전을 가지고 있었지만 더 이상 홍보되지는 않을 것입니다.

소스 코드의 리버스 엔지니어링 시퀀스 다이어그램에 정말로 관심이 있다면 jTracert를 권장 합니다 .

Eclipse 프로젝트 자체에 관한 한, Eclipse UML2 Tools 프로젝트는 리버스 엔지니어링을 지원할 수 있지만 실제로는 그 용도를 본 적이 없습니다.

MoDisco (모델 디스커버리) 프로젝트를 이클립스 GMT 프로젝트는 당신의 목표를 달성 명확하게 보인다. 기술 특정 도구의 목록을 시작하기에 좋은 장소가 될 것입니다.


UML2 도구에서 리버스 엔지니어링 기능을 발견하지 않은 (
월드

2
jTracert가 중단되었습니다. jSonde라는 새로운 도구 인 jTracert의 후속 버전이 GPL v3에 따라 라이센스가 부여되었습니다. jsonde.com
Alpine

Omondo는 Java에 가장 적합합니다. 모델과 코드를 혼용하지 않고 깔끔하게 통합됩니다. 훌륭하지만 너무 비싸다. 하나의 라이센스 만 구매할 수 있지만 보안은 사용자 이름 로그인을 기반으로하기 때문에 20 개 이상의 모델러가 라이센스를 사용하고 있습니다. 즉, 10 명의 사용자가 동일한 로그인을 사용하는 경우 모든 사용자가 사용할 수 있습니다. 우리는 :-) 관리자 사용자 이름으로 라이센스를 가지고
UML GURU에게

jSonde위의 URL에서 사용할 수 없습니다. 당신은 찾을 수있는 웹 사이트 와 Github에서의 소스 코드 : github.com/bedrin/jsonde을 .
Jaime

3

Green 플러그인을 사용하고 소스 코드에서 클래스 다이어그램을 생성하는 것이 매우 간단 하다는 것을 알았습니다 . 시도 해봐 :). 플러그인을 플러그인 디렉토리에 복사하십시오.


2
녹색은 잠재력이있는 것 같습니다. 그러나 제 작품에는 ~ 700 클래스의 프로젝트가 있으며 조금씩 쇠약합니다.
Appak

3

netbeans UML 모델러를 사용해 볼 수도 있습니다. 나는 이클립스 프로젝트에서 사용한 자바 코드를 생성하는 데 사용했다. 넷빈에서 이클립스 프로젝트를 가져오고 이클립스 설정을 넷빈 프로젝트 설정과 동기화 된 상태로 유지할 수도 있습니다.

나는 일식에 대해 여러 UML 모델러를 시도했지만 만족하지 못했습니다. 그들은 불안정하거나 복잡하거나 평범했습니다. ;-)


Netbeans UML 모델러를 사용했으며 비교적 간단한 경우에도 문제가 발생하지 않았다고 언급하고 싶었습니다. UI가 너무 직관적이지는 않지만 완전히 괜찮습니다. 모델러에는 올바르게 기억하면 모델에서 JPA 엔터티 코드를 만드는 것과 같은 고급 기능이 있습니다.
Tuukka Mustonen 2016 년

1
불행히도 UML 플러그인은 더 이상 지원되지 않는 것 같습니다. 플러그인의 재 작성은 분명히 진행되고 있지만 재 작성이 완료되기 전에 그들이 오래된 플러그인을 감소하기 때문에 그 도움 누구를하지 않습니다.
Appak

:-( 재 작성이 너무 오래 걸리지 않기를 바랍니다 :-)
Patrick Cornelissen

1
NetBeans 용 UML은 VP에 의해 작성되었습니다. 그들은 더 이상 그것을하지 않을 것입니다. 약간의 무료 버전으로 VP UML 만 사용할 수 있습니다.
Gangnus

2

IntelliJ IDEA 사용 클래스 다이어그램을 생성하려면 패키지를 선택하고 Ctrl+ Alt+를 누르십시오 U.여기에 이미지 설명을 입력하십시오

기본적으로 모든 종속성이 아닌 클래스 이름 만 표시합니다. 이를 변경하려면 마우스 오른쪽 단추로-> 카테고리 표시 ... 및 종속성 표시를 누르십시오. 여기에 이미지 설명을 입력하십시오

의존성 다이어그램 (UML 배포 다이어그램)을 생성하고 maven을 사용하려면보기-> 도구 창-> Maven 프로젝트를 이동하고 Ctrl+ Alt+를 누르십시오 U. 여기에 이미지 설명을 입력하십시오

결과: 여기에 이미지 설명을 입력하십시오

또한 더 많은 다른 다이어그램을 생성 할 수 있습니다. 설명서를 참조하십시오 .


2

당신은 이클립스 3.5 EclipseUML의 30 일 평가 빌드를 사용할 수 있습니다 http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip 이 최신 3.6 빌드 아니지만, 꽤 좋은 테스트 및 리버스 엔지니어링을 위해 구매할 필요가 없습니다.

리버스 엔지니어링 : http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

라이브 플래시 데모 : http://www.ejb3.org/reverse.swf

EclipseUML Omondo는 세계 최고의 Java 툴입니다. 이 라이브 자바 동기화 시장에서는 eUML만이 경쟁하는 것처럼 보이지만 eUML은 코드에 모델 태그를 추가하여 실제로 매우 나쁘고 결정적인 것은 아닙니다.



0

나는 PlantUML을 제안한다. 이 도구는 매우 유용하고 사용하기 쉽습니다. PlantUML에는 Java 코드에서 UML 다이어그램을 작성할 수있는 Netbeans 용 플러그인이 있습니다.

다음 방법으로 netbeans에 PlantUML 플러그인을 설치할 수 있습니다.

Netbeans 메뉴-> 도구-> 플러그인

사용 가능한 플러그인을 선택한 다음 PlantUML을 찾아 설치하십시오.

자세한 정보는 웹 사이트 www.plantuml.com을 참조하십시오.


0

Intellij 용 SequenceDiagram 플러그인도 좋은 옵션임을 알았습니다.


1
생성을 위해 이것을 확인하십시오 : -quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/… (역 공학) & & 스케치 : : guru99.com/ best-uml-tools.html (모든 무료 도구가 시퀀스 다이어그램을 생성하는 것은 아니며 클래스 다이어그램 만 지원할 수 있음을 기억하십시오. UML 다이어그램을 수동으로 생성하기 위해 SequenceDiagram을 생성 및 draw.io로 사용했습니다)
whoami

0

Java의 또 다른 모델링 도구는 (my) 웹 사이트 GitUML 입니다. GitHub 리포지토리에 저장된 Java 또는 Python 코드에서 UML 다이어그램을 생성하십시오.

GitUML의 핵심 아이디어 중 하나는 "문서"와 관련된 문제 중 하나를 해결하는 것입니다. 다이어그램은 항상 오래된 것입니다. GitUML을 사용하면 git을 사용하여 코드를 푸시하면 다이어그램이 자동으로 업데이트됩니다.

커뮤니티 UML 다이어그램을 탐색하면 Java 디자인 패턴이 있습니다. 인기있는 GitHub 리포지토리를 살펴보고 아키텍처와 패턴을 시각화하십시오.

다이어그램 브라우저

포인트 앤 클릭을 사용하여 다이어그램을 작성하십시오. 끌어다 놓기 편집기가 없습니다. 리포지토리 트리에서 시각화하려는 클래스를 클릭하십시오.

시각화하려는 Java 클래스를 선택하십시오.

기본 기술은 PlantUML 기반이므로 추가 PlantUML 마크 업으로 다이어그램을 세분화 할 수 있습니다.


0

무료 도구라는 binarydoc 생성 할 수 있습니다 UML Sequence Diagram, 또는 Control Flow Graph( CFG로부터) bytecode자바 방법 (대신 소스 코드).

다음은 java 메소드 java.net.AbstractPlainSocketImpl.getInputStream에 대해 생성 된 샘플 다이어그램 binarydoc입니다 .

  • 방법의 제어 흐름 그래프java.net.AbstractPlainSocketImpl.getInputStream :

제어 흐름 그래프

  • 방법의 UML 시퀀스 다이어그램java.net.AbstractPlainSocketImpl.getInputStream :

UML 시퀀스 다이어그램

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.