
이번엔 ERD Editor에 이어, VSCode에서 UML을 그리는 Extension인 PlantUML을 사용해보자
UML : Unified Modeling Language, 소프트웨어 시스템을 시각적으로 모델링하기 위해 표준화된 언어Class, Object, Usecase, Sequence, Activity Diagram 등이 있다.
PlantUML은 이러한 UML을 별도의 툴 없이 VSCode 상에서 편리하게 그리기 위한 Extension으로, 별도의 문법을 가지고 있으며
문법에 맞추어 작성하면 Alt+D로 여는 Viewer에서 실시간으로 작업 과정을 확인할 수 있다.
PlantUML은 Java 기반으로 동작하기 때문에, Java설치가 필수적이다.
Java를 설치했다면, Graphviz를 별도로 설치해야한다.실시간으로 ERD를 보여주는 Viewer의 역할을 한다.


VSCode에서 PlantUML을 검색해 Extension을 설치한다.VScode 설정 > Plant을 검색해 설정을 확인한다.Plantuml : Render 설정을 Local 혹은 PlantUMLServer로 설정한다.
Graphviz를 통해 직접 렌더링
filename.puml 혹은 filename.plantuml로 지정해 파일을 생성한다.UML 작성기본적으로 @startuml으로 시작해 @enduml로 끝난다.
' 주석내용title 다이어그램 제목caption 다이어그램 설명left to right directionskinparam backgroundColor #EEEBDC, skinparam handwritten truenewpage (긴 다이어그램을 여러 이미지로 분리)@startuml
/' (주석)
여기에 코드 작성
'/
@enduml
Ctrl + Shift + P를 통해 Command Palette를 열고,

Export Current Diagram을 눌러 png, svg, pdf 등 다양한 형식으로 해당 파일을 내보낼 수 있다.
@startuml
actor User
participant "Web Server" as WS
database Database
User -> WS: 로그인 요청 (ID, PW)
activate WS
WS -> Database: 사용자 정보 조회
activate Database
Database --> WS: 사용자 정보
deactivate Database
alt 인증 성공
WS --> User: 로그인 성공
else 인증 실패
WS --> User: 로그인 실패
end
deactivate WS
@enduml

@startuml
abstract class Vehicle {
# String model
+ {abstract} start(): void
+ stop(): void
}
class Car extends Vehicle {
- int numberOfDoors
+ start(): void
+ openTrunk(): void
}
class Engine {
+ ignite(): void
}
interface Drivable {
+ drive(): void
}
Car "1" -- "1" Engine : has a >
Car ..|> Drivable
note right of Car::start
엔진을 시동합니다.
end note
@enduml

Git과 연동해서 사용하는 경우가 대부분이라, 형상관리 및 팀원 간 공유가 편하다.File Export가 상당히 괜찮다. 빠르고, 직관적이면서 다양한 형식을 지원한다.draw.io와 같은 기존 툴들과 달리 내가 원하는 위치에 배치하기가 좀 어렵다.정말 하루가 멀다하고 다양한 툴들이 튀어나온다.
당연하게도 모든 툴을 열심히 써볼 필요는 없다고 생각한다.
내 입맛에 맞는 툴을 쓰고, 결과물에 만족한다면 빠르게 배워나가는 것이 더 중요할 것이다.
툴이 좋아질 수록, 사용하는 당사자가 멍청해지는 역설에 빠질 수 있다.
당연하게도, LLM을 통해 만들어 낸 PlantUML을 단순히 사용하는 것이 아닌,
해당 내용을 확인하고 이상 내역을 찾아가는 것이 더 안정된 시스템을 설계하는 첫번째 방법일 것이다.