개발

[UML] Plant UML

TigerFish 2022. 5. 23. 10:49

글을 쓰는 목적

 

무료 UML 툴인 StartUML을 자주 사용했는데 몇가지 불편한 점이 있었다.

 

1. 새로 문서 만들기시 이전 문서가 열리는 버그가 있었어서 매번 열때마다 프로젝트 열기가 불편했다.

2. UML 작성 후 UML 구조를 고치려고 하면 그림을 그려서 움직이는 것이라 유지보수가 잘 안되는 문제가 있었다.

 

그래서 대체할 UML 툴을 찾던 도중 텍스트 편집기를 지원하는 PlantUML과 UMLet 을 찾았는데 그중에 UMLet 은 Visual stuido code를 통해 사용할 수 있기 때문에 제외했고 PlantUML은 웹 서버에서 테스트 할 수 있어서 Plant UML을 사용해 보기로 하였다.

 


작업 환경

 

Visual code Plant UML extension

https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml

 

PlantUML - Visual Studio Marketplace

Extension for Visual Studio Code - Rich PlantUML support for Visual Studio Code.

marketplace.visualstudio.com

PlantUML 서버 

https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000


사용 후기 

 

장점

 

1. 스크립트를 작성하면 자동으로 UML을 그려줘서 편하다

2. 텍스트 스크립트로 테스트하고 편집하기 때문에 유지보수 하기 편하다.

 

단점

 

1. Plant UML 스크립트 언어를 공부해야한다.

2. Editor를 지원하지 않아 저장과 로드하기가 불편하다. (서버 에디터와 텍스트 변환 툴 제공,Eclipse 지원 기능이 있는 것 같은데 테스트 해보지 않음)

3. Sequence Diagram 그리기가 불편하다. StartUML은 실행 기간이 자동으로 그려졌는데 PlantUML은 스크립트로 관리해야한다. 그리고 리턴문이 생각보다 잘 작동 안하는 것 같다. Sequence Diagram은 복잡도가 높아지면 StarUML보다 더 사용하기 불편할 수도 있을 것 같다. 


사용법 요약

 

Activity Diagram

 

Plant UML을 Flowchart를 제공하지 않는다. Activity Diagram으로 대체해서 작성해야할 듯 하다. 

Type 사용법 설명
start, stop  Start
Stop
시작, 종료
aciton :Hello World; aciton 
if if (condition) then (yes)
 : test
esle (no)
 : test2
endif
조건문
loop repeat
stop
루프
@startuml
start
:적에게 다가 간다;
if (적당한 거리에 있는가?) then (yes)
  : "공격";
else (no)
endif
stop
@enduml

 

Class Diagram

 

Type 사용법 설명
상속 <|-, -|> 상속
구성 *--, --* 구성
참조 <.., ..> 참조
Type 사용법 설명
Class class TestClass {} 클래스
Array Object[] elementData 배열
Function Size() 함수
Variable flightNumber : Integer 변수
@startuml
class Dummy {
	String data
    void methods()
}

class Flight {
	flightNumber : Integer
    departureTime : Date
}

Dummy ..> Flight

@enduml

 

Sequence Diagram

 

Type 사용법 설명
호출 Alice <- Bob : message 1
Bob -> Alice : message 1
호출
반환 Alice <-- Bob : message 1
Bob --> Alice : message 1
반환
Type 사용법 설명
조건 alt successful case
Bob -> Alice : Authentication Accepted
else somd kind of failure
else another type of failure
end
조건
@startuml
Alice -> Bob: Authentication Request

alt successful case

    Bob -> Alice: Authentication Accepted

else some kind of failure

    Bob -> Alice: Authentication Failure
    group My own label
    Alice -> Log : Log attack start
        loop 1000 times
            Alice -> Bob: DNS Attack
        end
    Alice -> Log : Log attack end
    end

else Another type of failure

   Bob -> Alice: Please repeat

end
@enduml

 

Plant UML 툴

 

Visual code 에서도 Plant UML 을 제공한다. Visual code는 자동으로 갱신해준다. uml.wsd로 저장하면 된다. 

https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml

 

PlantUML - Visual Studio Marketplace

Extension for Visual Studio Code - Rich PlantUML support for Visual Studio Code.

marketplace.visualstudio.com

 

NotePade도 Plant UML extension이 있지만 자동 갱신을 해주지 않는다. 취향에 맞게 사용하면 될 것 같다. 


참고

 

https://plantuml.com/ko/class-diagram

 

클래스 다이어그램 구문 및 기능

PlantUML 클래스 다이어그램 구문 : 당신은 정의 할 수 있습니다 인터페이스, 회원, 관계, 패키지, 제네릭, 음 ... 변경 글꼴과 색상도 가능하다.

plantuml.com

 

https://www.itworld.co.kr/news/130999

 

'MS 비주얼 스튜디오' vs. 'MS 비주얼 스튜디오 코드'··· 장·단점 비교와 선택 팁

필자는 지난 수십 년 동안 아침에 출근하면 먼저 마이크로소프트 비주얼 스튜디오(또는 그 전신인 비주얼 C++이나 비주얼 인터데브 중 하나)를 시작한 후 차를 내렸다.프로그램 시작 과정이 완료

www.itworld.co.kr