HOME > etc > tools

코드로 UML을 작성하는 방법, PlantUML을 소개합니다

JSFollow14 May 2019

PlantUML은 UML 작성을 도와주는 오픈소스 툴입니다. StarUML, Eclipse의 AmaterasUML 등의 무료 UML도 있는데요. PlantUML은 GUI로 UML을 작성하지 않고, 간단한 언어로 객체간의 관계를 정의해주면 PlantUML이 UML을 생성합니다.

평소에 UML을 작성하지 않지만, 간단히 구조를 PT로 발표할 때 UML이 필요할 때가 있습니다. PlantUML은 웹에서도 UML을 작성할 수 있도록 지원하며, 로컬 프로그램도 매우 작아 설치가 쉽고 빠릅니다. 그렇기 때문에 간단한 작성방법만 숙지하면 빠르게 UML을 만들 수 있습니다. 또한, 마우스보다 키보드로만 UML을 작성하는 것이 편하다면 PlantUML을 한번 사용해보시길 권장합니다.

설치 방법

먼저, PlantUML은 PlantUML Online Server를 제공하며, 웹에서 UML을 만들 수 있습니다.

로컬에 설치하려면, 우분투에서는 아래와 같은 명령어로 간단히 설치할 수 있습니다.

$ sudo apt-get install plantuml

Windows 등에서는 jar 파일을 직접 받아서 사용할 수 있습니다. PlantUML Download페이지에서 plantuml.jar를 다운받아 아래와 같은 명령어로 사용할 수 있습니다.

$ java -jar plantuml.jar sequenceDiagram.txt

또한, 이클립스에서 플러그인처럼 설치할 수도 있습니다. 자세한 방법은 사이트를 참고해주세요.

지원하는 다이어그램 종류

지원하는 UML 다이어그램은 아래와 같습니다.

  • 시퀀스 다이어그램
  • 유즈케이스 다이어그램
  • 클래스 다이어그램
  • 액티비티 다이어그램
  • 컴포넌트 다이어그램
  • 상태 다이어그램
  • 객체 다이어그램
  • Deployment diagram
  • Timing diagram

UML 작성 예제

간단한 UML들을 만들어보겠습니다.

시퀀스 다이어그램

uml.txt라는 파일을 만들고 아래와 같은 코드를 입력합니다. 모든 UML 코드는 @startuml로 시작하고, @enduml로 끝납니다.

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml

웹에서 입력하셨다면 submit버튼을 눌르시면 UML이 생성됩니다. 로컬에 설치하셨다면 쉘에서 아래와 같은 명령어를 입력하면 텍스트 파일과 동일한 이름의 png 이미지가 생성됩니다.

$ plantuml uml.txt

# jar을 다운받으셨다면 아래처럼 입력하시면 됩니다
$ java -jar plantuml.jar uml.txt

생성된 이미지를 열어보면 아래처럼 보입니다. 위의 코드와 아래 UML을 비교해보면 코드가 UML로 어떻게 표현되는지 쉽게 알 수 있습니다.

seqeunce diagram

더 많은 예제들은 PlantUML에서 확인할 수 있습니다.

언어에 대한 상세한 설명은 PlanUML에서 제공하는 PlantUML 한국어 가이드를 참고해주세요.

클래스 다이어그램

아래 코드는 클래스 다이어그램에 대한 예제입니다.

@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml

class diagram

클래스 간의 관계 외에, 클래스 내부의 필드와 메소드도 모두 정의해줄 수 있습니다.

@startuml
class Student {
  Name
}
Student "0..*" -- "1..*" Course
(Student, Course) . Enrollment

class Enrollment {
  drop()
  cancel()
}
@enduml

class diagram

더 많은 예제들은 PlantUML에서 확인할 수 있습니다.

상태 다이어그램

상태 다이어그램에 대한 예제입니다.

@startuml
hide empty description
[*] --> State1
State1 --> [*]
State1 : this is a string
State1 : this is another string

State1 -> State2
State2 --> [*]
@enduml

state diagram

더 많은 예제들은 PlantUML에서 확인할 수 있습니다.

정리

코드로 UML 생성을 도와주는 PlantUML에 대해서 알아보았습니다. 예제로 사용한 것보다 더 많은 다이어그램을 표현할 수 있습니다. 사용 방법이 간단하기 때문에 빠르고 쉽게 UML을 만들 수 있습니다. 또한 이클립스, Notepad++ 등 매우 많은 어플리케이션의 플러그인이 있습니다. 이런 플러그인을 이용하면 자신이 사용하는 툴에서도 쉽게 PlantUML을 사용할 수 있습니다. 이클립스의 경우 코드를 클래스 다이어그램으로 변경해주는 기능도 있습니다. 플러그인 종류들은 PlantUML Running에서 확인할 수 있습니다. 언어에 대한 자세한 설명은 PlantUML의 가이드 및 사이트를 확인해주세요.

참고