728x90
프로젝트 설계할 때 그동안은 Draw.io를 이용하여서 시퀀스 다이어그램을 그렸었습니다.
그러던 중, 텍스트로 UML을 만들 수 있는 PlantUML을 알게되었고, 무척 편리했습니다.
시퀀스 다이어그램 그릴 때 필요한 PlantUML 문법을 간단하게 정리해보려고 합니다!
PlantUML
PlantUML 은 다이어그램을 빠르게 작성하기 위한 오픈 소스 프로젝트입니다.
공식 사이트 : https://plantuml.com/ko/
다음과 같은 다이어그램을 지원합니다.
- 시퀀스 다이어그램
- 유스케이스 다이어그램
- 클래스 다이어그램
- 객체 다이어그램
- 액티비티 다이어그램 (예전 문법은 여기에)
- 컴포넌트 다이어그램
- 배치 다이어그램
- 상태 다이어그램
- 타이밍 다이어그램
기본 예제

@StartUML
' 작성본문입력
A -> B : This is a request
B --> A : This is a response
' 한줄 주석
/'
여러줄 주석 사용방법
'/
@EndUML
- @StartUML / @EndUML : 작성할 UML의 시작과 끝을 의미합니다.
- -> : 실선 화살표
- --> : 점선 화살표
- 뒤에 메시지를 입력하여 화살표 위에 내용을 작성합니다.
- ' : 한 줄 주석
- /' '/ : 여러 줄 주석
참여자 선언
PlantUML에서는 다음과 같은 참여자를 선언하여 사용할 수 있습니다.
- actor
- boundary
- control
- entity
- database
- collections

@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections
@enduml
기본적으로 입력한 순서대로 참여자가 선언되기 때문에, 참여자의 순서 위치를 변경하고 싶으면 다음과 같이 순서를 지정할 수 있습니다.
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml
메시지에 순서 번호 출력하기
autonumber 키워드를 사용하여 메시지에 자동으로 번호를 출력하게 할 수 있습니다.

@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml
다이어그램 그룹화
다음과 같은 키워드를 사용하여 다이어그램 그룹화를 할 수 있습니다.
- alt/else : if/else와 같은 분기 처리 표현(조건이 여러 개일 때 표현)
- opt : option의 약자, 조건에 선택사항이 단 1개인 경우를 표현
- loop : for, while 같은 반복 표현
- par : parallel의 약자로 병렬 처리 표현
- break
- critical

@startuml
A -> B : 나 화났어
B --> A : 미안해
loop
A -> B : 뭐가 미안한데?
loop xxx times
alt case1
B --> A : 몰라
A -> B : 모르면서 미안해?
else case2
B --> A : 알아
A -> B : 알면서 그래?
end
end
B --> A :잘못했어
end
@enduml
메시지에 노트 추가하기
note left , note right 키워드를 사용하여 메시지에 노트를 추가할 수 있습니다.
end note를 사용하여 여러 줄의 노트를 추가할 수 있습니다.

@startuml
Alice->Bob : hello
note left: this is a first note
Bob->Alice : ok
note right: this is another note
Bob->Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
@enduml
구분자 추가하기
== 를 사용하여 다이어그램을 논리적인 단계로 구분하여 나눌 수 있습니다.

@startuml
== Initialization ==
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
출처