ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • UML 작성법 교육 후기 #plantUML #plantraft.com
    IT knowledge 2026. 7. 2. 22:19

     

    개발 문서를 작성하다 보면 프로세스 정리를 위해 시퀀스 다이어그램이나 플로우 차트를 사용해서 정리를 많이 했다. 

    여러번 반복하다보니 자연스레 나만의 작성법(?)으로 그리기게 되었는데, 이번에 사내 교육으로 UML(Unified Modeling Language) 교육을 다녀와서 간단하게 내용을 정리 해본다.


    1. 유스케이스(Use Case) 다이어그램

    시스템이 무엇을 하는가를 사용자 관점에서 표현하는 다이어그램.

    - 액터(Actor): 서비스를 요청하는 주체 (사용자, 외부 시스템 등)
    - 유스케이스(Use Case): 시스템이 제공하는 기능
    - 액터와 유스케이스 사이의 관계를 선으로 표시

    즉, "누가(액터) → 무엇을 할 수 있는가(기능)"를 한눈에 보여주는 그림이다.



     

    2. 클래스(Class) 다이어그램

    객체 유형과 객체 간의 관계를 설명하는, UML의 핵심 다이어그램. 하나의 클래스는 보통 클래스명 / 필드 / 메서드 3칸으로 그린다.

    2.1 접근 제어자(가시성) 표시 + / -

    + public (외부 공개)

    • - private (내부 전용)
    • # protected (상속 관계까지 공개)
    • ~ package (같은 패키지 내 공개)

    2.2 객체 유형을 규정하는 일

    클래스는 사실상 "객체 유형"과 같은 의미로 이해해도 된다. 다만 객체 유형을 규정하는 일은 생각보다 어렵다. 정답이 하나로 딱 떨어지지 않고, 설계자의 관점에 따라 달라질 수 있다.

    2.3. 클래스 간의 관계

    가장 많은 시간을 들여 배운 부분. 관계의 종류는 다음과 같다.

    - 일반화 (상속, Generalization)
    - 실체화 (Realization)
    - 의존 (Dependency)
    - 연관 (Association) / 직접 연관
    - 집합 (Aggregation)
    - 합성 (Composition)

    2.4 의존(Dependency) 관계



    사람이 출근을 위해 이동수단을 사용한다. 코드에서 new로 객체를 생성해 잠깐 쓰는 것처럼, 일시적으로 다른 객체에 기대는 관계가 의존이다. 점선 화살표( - - ->)로 표현한다. 

     

    의존 관계는 추상화 수준에서 관계를 정의하는게 좋다.

    이동수단에는 지하철, 버스, 택시 등이 있다. 이때 사람과 지하철·버스·택시를 각각 연결하는 게 아니라, 상위 개념인 이동수단과의 관계로 정의해야 한다. 지하철·버스·택시는 이동수단을 상속(일반화)받아 구체화하면 된다. 관계는 추상적인 레벨에서 잡는 것이 핵심!



    2.5 집합(Aggregation) vs 합성(Composition)

    집합과 합성의 차이에 대한 예시이다.
    휴대폰과 보조배터리는 분리 가능하니 집합(o--, ◇)관계로 표현하고, 휴대폰과 내장 배터리는 생명주기를 공유하니 합성(*--, ◆)으로 표현한다.



    2.6 상속 관계로 묶는 프레임워크
    흩어져 있던 요소들이 상속 관계로 하나로 묶이면, 그것이 곧 프레임워크(framework)가 된다.



    3. 시퀀스(Sequence) 다이어그램
    객체들이 시간 순서대로 주고받는 메시지를 표현하는 다이어그램이다. 클래스 다이어그램이 "정적인 구조"를 보여준다면, 시퀀스 다이어그램은 "동적인 흐름"을 보여준다. 실무에서 프로세스 흐름을 정의할 때 가장 유용하게 사용할 것 같다.



    4. 객체(Object) 다이어그램
    클래스 다이어그램이 틀(유형)이라면, 객체 다이어그램은 그 틀에서 찍어낸 실제 인스턴스의 한 순간을 보여주는 그림이다. (음.. 잘 모르겠다.)



    5. 이벤트 기반(Event-Driven) 개념
    마지막으로 이벤트 기반 아키텍처의 기본 개념도 짚었다.
    - Event Loop: 이벤트를 계속 감시하며 처리하는 반복 구조
    - Queue: 발생한 이벤트를 순서대로 쌓아 두는 대기열

    이벤트가 큐에 들어오면, 이벤트 루프가 하나씩 꺼내 처리하는 것을 표현한다.



    마치며

    UML은 생각을 정리하고 공유하기 위한 언어라는 점이 가장 크게 와닿았다. 특히 관계는 구체적인 객체가 아니라 추상화된 수준에서 정의해야 한다는 원칙은 실제 코드 설계에도 바로 적용해 볼 만하다.

     

     

     

     

     

    PlantUML 사용법 완벽 입문 — 텍스트로 다이어그램 그리기 (+ 온라인 에디터 추천)
      
    처음 실습을 할 때는 draw.io 에서 손수 UML을 그렸다. 그렇다 보니.. 생각보다 시간이 많이 들었다. 코드로 UML 작성을 할 수 있는데, 바로 PlantUML입니다. 글(텍스트)로 쓰면 다이어그램이 자동으로 그려지는 도구이다. (위에 그림은 모두 plantUML을 사용해서 그렸다.)

     

    PlantUML이란?

    PlantUML은 텍스트 기반으로 UML 다이어그램을 생성하는 오픈소스 도구입니다. 아래처럼 몇 줄만 쓰면 그림이 나옵니다.

    @startuml
    Alice -> Bob: 안녕하세요
    Bob --> Alice: 네, 반갑습니다
    @enduml


    위 코드가 화살표 두 개짜리 깔끔한 시퀀스 다이어그램으로 변환됩니다.




    코드로 다이어그램을 그리면 장점이 많다.

    • 빠르다 — 박스 정렬, 선 맞추기에 시간 안 쓴다. 내용에만 집중.
    • 버전 관리가 된다 — 코드라서 Git으로 변경 이력 추적이 가능하다.
    • 복사·재사용이 쉽다 — 문서, 위키, README 어디든 붙여넣기.
    • 일관성 — 도구가 알아서 배치하니 다이어그램 스타일이 통일된다.


    PlantUML은 로컬에 설치하거나 IDE 플러그인을 깔아서도 쓸 수 있지만, 처음 배우거나 가볍게 쓸 거라면 온라인 에디터가 가장 편하다. 코드를 입력하면 바로 그림을 볼 수 있다.

     

    강사님이 가장 많이 쓰는 사이트를 추천해주셨는데, https://www.planttext.com/가 있다. 그런데 UI가 좀 오래됐다. 사용성도 살짝 불편함)

     

     

    그래서 좀 더 나은 사이트를 찾아보니 https://plantraft.com/ 라는 사이트가 있었는데, 좀 더 모던한 느낌이라 사용하기 편했다. 그림도 크게 잘 나오니 좋다.

     

     

    plantUML 문법도 정리할까 했는데,  AI로 원하는대로 작성해주니 넘어가겠다. 그동안 손으로 한땀 한땀 플로우를 그리곤 했는데, plantUML을 적극 활용해야겠다.

     

    'IT knowledge' 카테고리의 다른 글

    [IT] 캐시란? Cache is Cash  (0) 2021.07.22

    댓글