PlanutUML 작성 툴PlantUML을 작성하기 위한 툴은 여러가지가 있다. Boost Note를 쓰면 별도의 설정을 하지 않아도 곧바로 문서를 작성하면서 코드로 시퀀스다이어그램을 그릴 수 있다. 만약, VS Code를 사용한다면 다음의 포스트를 참고하여 설정하면 된다. Show 기본 문법PlantUML을 사용하여 시퀀스다이어그램을 작성하기 위한 주요 규칙을 살펴본다. 문서 작성 규칙@startuml 작성본문 @enduml의 형식으로 작성하면 된다. 만약, VS Code에 extension을 사용하여, Markdown Preview Extended까지 사용했다면, 과 같이 바깥에 한번 더 감싸줘야 한다. 혹은, @startuml ~ @enduml 부분은 생략 가능하다. 그러나, VS Code로부터 다른 에디터로 이관할 가능성도 있으므로, 개인적으로는 해당 애노테이션은 유지하는 것이 낫지 않을까 생각한다. 기본 표현작성 본문에 들어가는 표현은 기본적으로 다음과 같이 작성한다.
이렇게만 작성하면, A에서 B로 이어지는 실선 화살표와, B에서 A로 이어지는 점선 화살표를 확인할 수 있을 것이다. 콜론(:) 뒤에 기록한 글씨는 화살표 위에 출력할 메시지의 내용이다. 참여자(participant)화살표를 보내거나 받는 요소를 참여자(participant)라고 한다. 별다른 설정을 하지 않는다면, 위의 문서에 작성한 순서대로 좌에서 우로 참여자들이 배치가 될 것이다. 그러나, 막상 그림을 그려놓고 보면, 노출되는 순서를 강제로 제어하고 싶을 수 있다. 참여자와 관련된 설정은 다음과 같다.
```plantuml participant participant order 50 actor actor order 30 boundary boundary order 20 control control order 15 entity entity order 45 database db order 5 collections collections order 70 queue queue order 35 ```
<별칭 지정 전> ```plantuml participant "have a space" participant "have_special_chars()" "have a space" -> "have_special_chars()": too long to type ``` <별칭 지정 후> ```plantuml participant "have a space" as A participant "have_special_chars()" as B A -> B: it's much better ``` 번호매기기autonumber라고 써주면, 그 지점부터 기본적으로 1씩 증가하면서 숫자가 메시지 앞에 표시된다. 사실 시퀀스다이어그램에서의 순서는 위에서 아래로 흐른다고 암묵적으로 알고 있기에 이 순서가 뭐가 의미가 있겠냐 싶겠지만, 발표를 해보면 알게된다. 숫자의 중요성은 다른 사람앞에서 설명하는 순간 깨닫게 될 것이다. autonumber X Y라고 표시하면, 시작 번호와 증가값을 줄 수도 있다. autonumber를 다시 쓰면, 그 시점부터 번호가 다시 매겨지는 효과가 있다. 숫자를 임의의 숫자부터 다시 시작하고 싶은 부분에 다시 autonumber를 표기하면 된다. ```plantuml autonumber 10 10 A -> B: request A->B B -> C: request B->C B <-- C: response B<-C ... do something ... autonumber 100 10 B -> C: request B->C B <-- C: response B<-C A <-- B: response A<-B ```위의 예에서는, 10부터 시작하고 10씩 크기를 증가시켰다. 이후 중간에 do something이라고 표현된 부분을 기점으로 번호를 점프시켜서 다시 증가시키도록 작성하였다. 그룹으로 묶기
위와 같이, alt/else와 group, loop 등을 활용하여, 논리적인 그룹을 적절하게 표현할 수 있다. 노트 추가하기사실 그림만으로 다른 사람들을 이해시킬 수 있어야 하는데, 어쩔 수 없이 설명을 남겨야 하거나 간소화 해야 한다면 노트를 활용하자.
노트를 적을 때는,
구분자/지연을 통한 분리 표시==메시지==를 사용하여 논리적인 구분을 할 수 있고, ...메시지... 형태로 일정 시간이 경과했음을 나타내는 표시도 가능하다. ```plantuml == Initialization == A -> B: request A->B B -> C: request B->C B <-- C: response B<-C ... do something ... B -> C: request B->C B <-- C: response B<-C == Wrap up == A <-- B: response A<-B ```life cycle 표시activate A ~ deactivate A 명령어로 life cycle을 표시할 수 있다. ```plantuml A -> B: request A->B activate B B -> C: request B->C B <-- C: response B<-C deactivate B B -> C: request B->C activate C C -> C: process B <-- C: response B<-C deactivate A <-- B: response A<-B ```참고
|