시스템의 서로 다른 측면을 시각적으로 표현하여 이해도를 높이고, 설계 과정에서 협업을 원활하게 만드는데 중요한 역할을 하는 수단
다양한 다이어그램이 존재하지만 자주 사용하는 다이어그램은 아래와 같다.
시스템 내에서 객체들이 시간에 따라 주고받는 메세지 흐름을 시각적으로 표현한 다이어그램
주로 요청과 응답을 포함한 상호작용 과정을 나타내는 경우에 자주 사용하며, 객체 간 통신 순서에 대한 명확성을 확보할 수 있다.
언제 사용하는가?
특정 기능의 상호작용을 설계할 때 사용하며, 특히 API 호출, 오픈API 사용, 결제 과정 등 여러 시스템 구성 요소가 관련된 기능을 시각적으로 표현할 때 사용한다.
작성 시 포인트는?
시스템의 워크 플로우를 단계별로 설명하며, 주로 조건문과 루프 등을 포함한 흐름 제어를 표현하는 다이어그램
주로 비즈니스 프로세스나 알고리즘과 같은 로직을 시각화하는데 효과적이며, 필요 시 업무 프로세스에 대한 흐름을 표현할 때 사용하기도 한다.
언제 사용하는가?
복잡한 로직이나 프로세스를 설명하는 경우에 사용되며, 특히 상태 변화와 조건에 따라 다른 결과가 나오는 상황에서 사용된다. 예를 들어 주문 처리 과정, 사용자 승인 흐름 등이 있다.
작성 시 포인트는?
객체 지향 설계의 구조를 시각화하여 클래스들 간의 상관 관계와 각 클래스의 속성 및 메서드를 표현하는 다이어그램
테이블 정의서와 ER 다이어그램을 통해 데이터 정의가 완료된 후 이를 토대로 데이터를 객체화 할때 사용하며, 엔터티 관계를 표현하거나 데이터 모델을 설계하는 단계에서도 사용된다.
언제 사용하는가?
객체 지향 프로그램 설계를 할 때 사용되며, 특히 클래스 간의 관계(상속, 구현 등)를 명확히 정의하고 설계를 최적화할 때 사용한다.
작성 시 포인트는?
시스템이 사용자에게 제공하는 기능을 사용자와의 상호 작용을 통해 표현한 다이어그램
주로 시스템이 어떤 기능을 제공하며, 사용자가 어떤 기능을 사용할 수 있는지를 시각적으로 표현하여 필요한 기능들을 유추하기 위해서 사용한다.
언제 사용하는가?
시스템 요구사항을 정의할 때 사용하며, 특히 사용자와의 상호작용 중심으로 기능을 설명할 때 사용된다. 예를 들어 로그인 시스템 설계, 쇼핑 사이트 기능 정의와 같이 요구사항에 대한 목록을 뽑아내거나 기능을 권한별로 구분할 때 효과적으로 사용이 가능하다.
작성 시 포인트는?
데이터베이스의 설계와 구조를 시각적으로 표현한 다이어그램
엔터티, 관계, 속성 간의 구조를 통해 데이터베이스 시스템의 논리적 구조를 설명하기 위해 사용된다. ER 다이어그램을 활용하면 데이터베이스 모델링을 시각화하여 이해하기 쉽게 표현이 가능하다.
언제 사용하는가?
데이터베이스 설계 및 모델링을 수행하는 단계에서 사용하며, 데이터 구조를 이해하고 관리하기 쉽게 하기 위하여 사용한다.
새로운 시스템을 설계하는 단계에서도 사용하지만 기존의 시스템을 분석하고, 문제점을 보완하기 위해서도 데이터 모델링에 대한 시각적 분석을 위해 사용된다.
작성 시 포인트는?
Server URL : https://plantuml.com/ko/activity-diagram-beta
Guide : https://docs.erd-editor.io/docs/category/guides/
위에서 제시한 Server 및 Guide 링크를 이용하여 어떻게 사용하는지 확인할 수 있다.
UML 다이어그램을 텍스트 기반으로 생성할 수 있도록 도와주는 도구로서 텍스트로 정해진 형식의 코드를 작성하면 자동으로 시각화해서 다이어그램을 생성해준다.
*.wsd
*.pu
*.puml
*.plantuml
*.iuml
Press Alt + D to start PlantUML preview (option + D on MacOS).
시퀀스 다이어그램
@startuml
title User Login Process
hide footbox
actor User #Blue
' 참여자 선언
participant "Web Browser" as Browser #Yellow
participant "Auth Server" as Auth #Green
participant "Database" as DB #Orange
' 시퀀스 번호 자동부여
autonumber
User -> Browser : Open Login Page
activate Browser
Browser -> Auth : HTTP POST /login
' 노트 입력
' right, left, over
note right : note test
activate Auth
Auth -> DB : Validate Credentials
activate DB
DB -[#Blue]-> Auth : Result (Success/Fail)
deactivate DB
Auth -[#Indigo]-> Browser : Authentication Token
deactivate Auth
Browser --> User : Display Login Result
deactivate Browser
' 구분선 추가
== Error Scenario ==
User -> Browser : Invalid Password
@enduml
활동 다이어그램
@startuml
start
:개발환경 구축;
#SkyBlue:설계;
fork
:요구사항 분석;
:요구사항 분석서 작성;
:화면정의서 작성;
fork again
:시스템 아키텍처 설계
:데이터 흐름 설계;
:아키텍처 다이어그램;
fork again
:소프트웨어 설계;
:테이블정의서 작성;
:API 정의;
:ERD 설계;
:데이터베이스 구조 설계;
:UI/UX 설계;
fork again
:AI 모델 설계;
:원천데이터 분석;
:데이터 정리 및 수집;
:모델 선택;
end merge
repeat :개발;
if (데이터 파이프라인 구축) then (SW)
:쿼리 작성;
:API 개발;
:UI 개발;
:RESTful API 연동;
else (AI)
:데이터 통계적 분석;
:모델 학습 및 튜닝;
:모델 평가 및 검증;
:모델 결과 확인;
endif
repeat while (테스트) is (no) not (pass)
:개발완료;
:산출물 검토;
stop
@enduml
클래스 다이어그램
@startuml
title E-commerce System Class Diagram
interface Object {
+ getName() : String
}
class User {
- String name
- String email
+ login() : void
+ logout() : void
}
class Product {
- String name
- float price
- String description
+ displayDetails() : void
}
class Order {
- int orderID
- String date
+ placeOrder() : void
}
class ShoppingCart {
- List<Product> items
+ addItem(p: Product) : void
+ removeItem(p: Product) : void
+ calculateTotal() : float
}
' 구현 및 상속을 의미
Object <|-- User
User "1" -- "*" Order : places
Order "1" -- "*" Product : contains
User "1" -- "1" ShoppingCart : owns
ShoppingCart "*" -- "*" Product : holds
' 메모 연결
note left of User : Handles user data and actions
note top of Order : Represents purchase transactions
@enduml
유스케이스 다이어그램
@startuml
title Online Shopping System Use Case
left to right direction
actor Customer #Green
actor Admin #Orange
actor "Guest User" as Guest #Gray
rectangle "Online Shopping System" {
(Browse Products) as b #lightblue
(Place Order) as o #lightgreen
(Track Order) as t #lightyellow
(Manage Inventory) as m #lightcoral
(Process Orders) as p #lightpink
(Sign In) as s #lightgrey
Guest --> b
Guest --> s
Customer ..> b
Customer -- (o) #line:red;line.bold;text:red; : red
Customer -- t
Admin -- m
Admin -- p
}
@enduml
데이터베이스의 테이블 간 관계를 시각화하고 설계하는데 유용한 도구로서 import와 export를 통해 ER 다이어그램 시각화를 지원하는 도구이다.
.erd
.erd.json
테이블 생성
빈 캔버스에 마우스 우 클릭 후 New Table
또는 Alt + N
을 통해 테이블 생성
테이블 정의
각 항목별 정확한 명칭과 데이터 유형을 입력하며, 마우스 우 클릭을 통해 Primary Key
설정 가능
관계 설정
캔버스에 마우스 우 클릭 후 Relationship
에서 원하는 관계를 설정
외래키 매핑
관계를 설정해주면 기준이 되는 테이블의 Primary Key
가 대상 테이블의 Foreign Key
로 지정되며 색상으로 구분
코드 Generator
Code Generator
탭을 클릭하여 화면 전환 후 마우스 우 클릭으로 원하는 언어를 선택하여 데이터 코드 생성 가능
다이어그램은 설계 단계에서 주로 많이 사용하지만 나의 경우에는 프로젝트 중간에 제대로 진행되고 있는지 확인하는 용도로도 많이 사용한다.
코드를 직접 읽거나 DB를 직접 들여다보면서 다이어그램으로 로직의 흐름과 데이터 모델링 등의 정보를 시각화된 정보로서 확인하는 것이 굉장히 도움이 많이 되기 때문이다.
이번에 소개한 확장 프로그램들을 이용해서 다이어그램을 통해 조금 더 간결하고, 이해하기 쉬운 설계를 진행해보고 프로젝트 중간중간 잘 진행되고 있는지 확인하기 위해 사용해보자.
그럼 이만.🫡