PlantUML 시퀀스 다이어그램 그리기

Developer💻·2025년 8월 19일

Android

목록 보기
9/10
post-thumbnail

PlantUML 시퀀스 다이어그램

PlantUML을 사용하면 복잡한 UML 다이어그램을 간단한 텍스트 기반 문법으로 작성할 수 있어 유용함




PlantUML 환경 준비

1. Plugins 진입

AndroidStudio 최상단 메뉴 바(Menu Bar)
File - Settings - Plugins - PlantUml 검색

Plugins

플러그인 이름주요 기능
PlantUML Integration (PlantUML4Idea)PlantUML 코드 실시간 다이어그램 렌더링, 탐색, 내보내기
PlantUML ParserJava/Kotlin 소스 → PlantUML (.puml) 자동 생성
PlantUML2DDLPlantUML ↔ SQL DDL 자동 변환
PlantUML Diagram Generator코드 기반 2D 다이어그램 생성
PlantUML Syntax Check (기타 커뮤니티 플러그인)PlantUML 문법 검사 기능 (기본 내장 혹은 외부 연동)

2. 필요한 Plugins 설치

시퀀스 다이어그램을 그리기 위해 PlantUML4Idea, lantUML Parser 설치


3. 파일 생성


참고자료

종류설명
Sequence객체나 컴포넌트 간의 메시지 교환 순서를 나타내는 시퀀스 다이어그램
Use Case시스템과 외부 행위자 간의 기능/행위 관계를 나타내는 유스케이스 다이어그램
Class클래스, 인터페이스와 그 관계(상속, 구현 등)를 나타내는 클래스 다이어그램
Activity프로세스나 워크플로우를 흐름으로 표현하는 액티비티 다이어그램
Component시스템의 컴포넌트와 의존성을 나타내는 컴포넌트 다이어그램
State객체나 시스템 상태 변화와 상태 전이를 나타내는 상태 다이어그램
Object객체 간의 관계와 인스턴스 상태를 나타내는 오브젝트 다이어그램
Deployment시스템의 하드웨어, 소프트웨어 배포 구조를 나타내는 배포 다이어그램
Gantt프로젝트 일정과 작업 계획을 시각화하는 간트 차트
MindMap아이디어, 개념, 구조를 트리 형태로 시각화
WireframeUI 구조와 레이아웃 설계
Work Breakdown Structure프로젝트를 계층 구조로 나누어 관리
YAML DataYAML 형식의 데이터를 시각화
EBNF문법 규칙을 표현



작성 방법

기본 문법

@startuml@enduml 사이에 작성

@startuml
Alice -> Bob: Hello
Bob --> Alice: Hi
@enduml

기본 설정

skinparam 전체 스타일 설정
skinparam sequence {...} : 시퀀스 다이어그램 전용 스타일

MaxMessageSize : 대신 자동 줄바꿈 간격 설정(최대 글자 수)
shadowing: false = 그림자 효과 끄기
lifelineStrategy : 생명선 스타일 지정 - 기본값 = 점선(dashed), 실선(solid)으로 표시
ArrowColor : 화살표 색
ActorBorderColor : 액터 테두리 색
ActorBackgroundColor : 액터 배경색
LifeLineBorderColor : 생명선 테두리 색
LifeLineBackgroundColor : 생명선 배경색
ParticipantBorderColor : 참여자(객체/액터) 박스 테두리 색
ParticipantBackgroundColor : 참여자 박스 배경색 (거의 흰색)
responseMessageBelowArrow : true = 응답 메시지 화살표 아래 배치
ParticipantPadding : 참여자 사이 간격
ParticipantFontSize : 참여자 폰트 사이즈

이외에도 원하는 설정 가능

예시 : 전체적으로 흑백 톤의 미니멀 스타일을 만드는 설정

skinparam shadowing false
skinparam lifelineStrategy solid
skinparam MaxMessageSize 200
skinparam sequence {
  ArrowColor #333333
  LifeLineBorderColor #333333
  LifeLineBackgroundColor #EEEEEE
  ParticipantBorderColor #333333
  ParticipantBackgroundColor #FAFAFA
  BoxPadding 10
}

참여자 정의

actor : 외부 사용자나 시스템
participant : 내부 객체/모듈, 참여자 선언 - 기타 키워드
control : 프로세스, 제어 객체, 비즈니스 로직 수행 객체로 앱 내부 로직을 실행하는 모듈 강조(Worker, Service, Module 등)
boundary : 시스템 경계 또는 외부 인터페이스로 외부 시스템과의 통신/인터페이스 역할 강조(외부 API, 모델, 웹 서비스 등)
entity : 데이터 저장/엔티티 객체(DB 테이블, 설정 객체, 상태를 가진 데이터 등)
database : DB 시스템/저장소
collections : 데이터 모음, 컬렉션(List, Map, 캐시 등 여러 객체를 담고 있는 단위 강조)

참여자 표시 설정
as : 키워드를 이용하여 참여자의 이름을 변경 가능
#Color : 배경색 변경
order : 키워드를 이용하여, 참여자의 출력 순서를 지정 - 클수록 무거움(defualt 0, 작성순서대로 표시)

actor Actor as User
participant Participant #Red
control Control order 10
boundary Boundary order 20
entity Entity order 30
database Database
collections Collections
queue Queue

표시 방법

여러줄에서 참여자 선언하기

participant Participant [
    =Title
    ----
    ""SubTitle""
]

페이지 제목, 머리말, 꼬리말

title Title
header Page Header
footer Page %page% of %lastpage%

화살표 종류

메시지를 주고받는 행위를 화살표(Arrow) 로 표현
양쪽으로 표시 가능
화살표 다음에 o 추가도 가능

화살표의미 / 사용 목적
->동기 메시지 호출. 일반적인 함수 호출, 요청(request) 같은 경우. 호출자가 응답을 기다리는 상황에 사용.
-->응답 메시지. 호출에 대한 결과를 반환할 때 표현. 주로 -> 와 세트로 사용.
->>비동기 메시지 호출. 호출자가 응답을 기다리지 않는 상황 (이벤트 전송, 큐에 메시지 넣기, 다른 스레드/프로세스 실행).
-x전달 실패 / 취소. 메시지가 도중에 끊기거나 실패했음을 표현. 예: 네트워크 에러, 예외 발생.
-\상향 메시지(굵은 선). 흐름을 위로 강조할 때 사용. 보통 아래 객체가 상위 객체로 신호를 보낼 때.
-/하향 메시지(굵은 선). 흐름을 아래로 강조할 때 사용. 특정 시각적 강조가 필요할 때.
-\\상향 메시지(얇은 선). 비동기성이나 덜 중요한 위쪽 호출 표현.
-//하향 메시지(얇은 선). 비동기성이나 덜 중요한 아래쪽 호출 표현.
->o신호/이벤트 전송. 객체에 직접적인 호출이 아니라, 이벤트를 날리거나 브로드캐스트하는 의미로 사용.
: (콜론 뒤 텍스트)메시지 이름, 설명, 요청 내용을 작성. 화살표가 단순히 "호출"이 아니라 무엇을 전달하는지 표현할 때 사용.

Start -> End : 실선
Start --> End : 점선
Start -x End : 메시지가 전달되지 않았음
Start -> End : 진한 화살표
Start ->> End : 얇은 화살표
Start -\ End : 진한 상향 화살표
Start -/ End : 진한 하향 화살표
Start -\\ End : 얇은 상향 화살표
Start -// End : 얇은 하향 화살표
Start ->o End : 화살표 + o

Start -> End : 실선 끝 막대
activate End
Start <-- End : 막대에서 도출
deactivate End

Start -> End
activate End
Start <-- End : 생명선이 끝났음 표시
destroy End

skinparam responseMessageBelowArrow true
Start -> End : 요청 메시지
End <- Start : 응답 메시지 - 텍스트 화살표 아래 배치

/'화살표 색상 변경 - 화살표 표시 사이에 []Color] 추가'/
Start -[#0000FF]> End : 화살표 색상

활성화 (Activation Bar)

activate / deactivate : 객체의 실행 구간 강조

Alice -> Bob: 작업 요청
activate Bob
Bob -> Bob: 내부 처리
Bob --> Alice: 결과 반환
deactivate Bob

조건 및 반복 표현

alt ... else ... end : 조건 분기
loop : 반복 구조

Alice -> Bob: 데이터 요청
alt 정상 처리
Bob -> Alice: 결과 반환
else 오류 발생
Bob -> Alice: 에러 메시지
end

loop 3회 반복
Alice -> Bob: Ping
Bob --> Alice: Pong
end

참조 표시

ref over 참여자 : init 등 참조 표시에 사용

ref over Start, End : message

조건

alt ... else ... end

alt successful case /'[설명 부분]'/
	Bob -> Start: Authentication Accepted
else some kind of failure /'[설명 부분]'/
	Bob -> End: Authentication Failure
end 

그룹화

group ... else ... end : 논리적으로 단계 구분

group group 만들기 [설명 부분 추가 필요시 작성]
	Start -> End : Log attack start
else fail 등 다른상황 구분시 사용
	Start -> Bob : Log end
end 

노트 작성

note : 기본 노트, 우측 상단 접힌 모양
rnote : 접힌 모양 없이 직사각형
hnote : 양쪽<> 모양으로 육각형
note over 범위 : 감쌀 구간을 정해준 노트
note across : 전체를 감싸는 노트

note right
    노트 오른쪽에 작성
end note

rnote left
    노트 왼쪽에 작성
end note

hnote over End
    노트 중앙에 작성
end note

노트 색 다르게 지정

note left of Start #yellow
  노트 작성 :
  컬러 지정
end note

나란히 작성하고 싶다면 with / 사용

note over End : 나란히 한줄로 작성1
/ note over Alice : 나란히 한줄로 작성2

문자 표시 설정

굵기 : **Bold**
기울기 : //italics//
연하게 : ""monospaced""
가운데줄긋기 : --stroked--
밑줄 : __underlined__
물결 : ~~waved~~


html 사용하여 설정가능

Start -> End : his is <back:cadetblue><size:18>displayed</size></back> __left of__ Alice.
Start -> End : <u:red>This</u> is <color #118888>displayed</color> **<color purple>left of</color> <s:red>Alice</strike> Bob**.
Start -> End : <w:#FF33FF>This is hosted</w> by <img sourceforge.jpg>

페이지 분리

newpage A title for the last page


구분자 사용

== 구분자 사용 ==
Start -> End: Authentication Request

지연 표시

...지연된 이유 작성...


공백 표시

공백 ||| 표시 : 픽셀로 원하는 만큼 명시 가능 ||픽셀||

Start -> End
|||
Start -> End: Authentication Request
||10||
Start -> End: Authentication Request

리턴 표시

return

Start -> End
return

로직 중간에 잠깐 필요한 참여자 추가

Start -> End
Start -> DONE ** : create 참여자 생성
Start -> DONE !! : delete 참여자 삭제


마치며

PlantUML의 시퀀스 다이어그램은 단순한 텍스트로 작성할 수 있어 Git버전, Flow 관리에도 유리하고, 협업 시에도 빠르게 공유할 수 있다. 반복적이고 복잡한 시스템 동작도 손쉽게 시각화할 수 있는 부분이 큰 장점으로, 프로젝트 설계 문서에 적극 활용 가능하다.

profile
숲을 그리는 개발자

0개의 댓글