SideProject/개발일지

5. PlantUML로 ERD와 Sequence Diagram을 그린 학습내용 정리하기

박세류 2024. 10. 29. 10:41

사이드 프로젝트를 진행하며 말로만 설명하는것에 대해 한계를 느껴,

이런 설계문서를 작성해 두는것도 좋을것 같아서 학습한 내용을 정리해 본다.

PlantUML로 ERD와 시퀀스 다이어그램을 만들어보자.

 

 

ERD 기본 문법

plantUML은 @startuml@enduml 사이에 작성한다.

테이블은 entity “테이블명” { } 사이에 작성하면 된다.

 

연관관계 매핑은 다음과 같다.

무조건 하나 (1:1) ||
없거나 한개 o|
한개 또는 여러개 (1:N) |{
없거나 여러개 o{

 

 

관계선 종류는 다음과 같다.

실선 (식별관계) 
점선 (비식별관계) ..

 

따라서 우리 프로젝트에 대한 erd를 간단하게 만들어보았다.

 

@startuml

entity 유저{
  **user_entity**
  * id [PK] (integer) auto increment
  * couple_id [FK] (integer) 커플ID
  --
  email (varchar) 이메일
  nickname (varchar) 닉네임
  gender (tinyint) 성별
  platform (varchar) 가입플랫폼
  registerDate (datetime) 가입시간
}

entity 커플 {
  **couple_entity**
  * id [PK] (integer)
  --
  status (int) 커플 연결 상태
}

entity 디데이 {
  **Dday_entity"
  * id [PK] (integer)
  * couple_id [FK] (integer) 커플ID
  --
  title (varchar) 제목
  targetDate (datetime) 시작날짜
}

커플 ||..o{ 유저
커플 ||..|| 디데이

@enduml

 

이와 같이 작성하면, 다음과 같은 다이어그램을 얻을 수 있다.

 

 

 

시퀀스 다이어그램 기본 문법

마찬가지로 @startuml과 @enduml사이에 작성한다.

 

메시지 기호

실선은 요청(request)이고, 점선은 요청에 대한 반환(response)으로 사용된다.

실선 화살표 (동기) ->
점선 화살표 (동기) -->
실선 화살표 (비동기) ->>
점선 화살표 (비동기) —>>
뒤에 메시지를 입력하여 화살표 위에 내용을 작성한다. :

 

Activation

인스턴스가 다른 인스턴스와 상호 작용을 하며 활성화 되어 있다는 것을 나타낸다.

활성화  activate ‘인스턴스명’
비활성화 deactivate ‘인스턴스명’

 

인스턴스 종류

  • actor
  • boundary
  • control
  • entity
  • database
  • participant
  • collections

등등이 있다..

 

그룹화 관련

 

alternative

  • alt로 줄여서 사용하며 if / else 문과 같다.
alt 등록되어 있으면
  server -->> client : 4XX 반환, '이미 등록된 id'
else 정상이면
  server -->> client : 200 성공
end

option

  • opt로 줄여 사용하며, 조건에 따른 선택 사항이 단 한개일 경우 사용 ( 할인 쿠폰이 있으면 ~ 한다 )

loop

  • for, while과 같다.

parallel

  • par로 줄여 사용하며, 병렬 처리를 표현한다.

 

 

다음은 커플 요청에 대한 plantUML 예시이다.

@startuml
actor User
participant  client
participant  server

User -> client : 다른 user 아이디에 커플 요청
activate client
client ->> server : /api/v1/couples

activate server
server->>server : 이미 등록된 커플인지 확인

alt 등록되어 있으면
  server -->> client : 4XX 반환, '이미 등록된 id'
else 정상이면
  server -->> client : 200 성공
end

client -> User : 요청에 대한 응답 반환
deactivate client


@enduml

요래 작성하면..

 

다음과 같은 다이어그램을 얻을 수 있다!

728x90