
PlantUML을 사용하면 복잡한 UML 다이어그램을 간단한 텍스트 기반 문법으로 작성할 수 있어 유용함
AndroidStudio 최상단 메뉴 바(Menu Bar)
File-Settings-Plugins-PlantUml검색

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


| 종류 | 설명 |
|---|---|
| Sequence | 객체나 컴포넌트 간의 메시지 교환 순서를 나타내는 시퀀스 다이어그램 |
| Use Case | 시스템과 외부 행위자 간의 기능/행위 관계를 나타내는 유스케이스 다이어그램 |
| Class | 클래스, 인터페이스와 그 관계(상속, 구현 등)를 나타내는 클래스 다이어그램 |
| Activity | 프로세스나 워크플로우를 흐름으로 표현하는 액티비티 다이어그램 |
| Component | 시스템의 컴포넌트와 의존성을 나타내는 컴포넌트 다이어그램 |
| State | 객체나 시스템 상태 변화와 상태 전이를 나타내는 상태 다이어그램 |
| Object | 객체 간의 관계와 인스턴스 상태를 나타내는 오브젝트 다이어그램 |
| Deployment | 시스템의 하드웨어, 소프트웨어 배포 구조를 나타내는 배포 다이어그램 |
| Gantt | 프로젝트 일정과 작업 계획을 시각화하는 간트 차트 |
| MindMap | 아이디어, 개념, 구조를 트리 형태로 시각화 |
| Wireframe | UI 구조와 레이아웃 설계 |
| Work Breakdown Structure | 프로젝트를 계층 구조로 나누어 관리 |
| YAML Data | YAML 형식의 데이터를 시각화 |
| 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 : 화살표 색상
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 관리에도 유리하고, 협업 시에도 빠르게 공유할 수 있다. 반복적이고 복잡한 시스템 동작도 손쉽게 시각화할 수 있는 부분이 큰 장점으로, 프로젝트 설계 문서에 적극 활용 가능하다.