사이드 프로젝트를 진행하며 말로만 설명하는것에 대해 한계를 느껴,
이런 설계문서를 작성해 두는것도 좋을것 같아서 학습한 내용을 정리해 본다.
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
'SideProject > 개발일지' 카테고리의 다른 글
4. React + Spring Boot 이용해서 카카오 로그인 구현기 (공식문서 참조) (0) | 2024.08.15 |
---|---|
3. 내가 @Setter 어노테이션을 싫어하는 이유 (0) | 2024.07.15 |