why not
시스템 설계2 (14일차) 본문
1. 시퀀스 다이어그램(Sequence Diagram)이란?
- 객체 간의 상호 작용만으로 보여주는 아키텍처 다이어그램과는 달리, 시퀀스 다이어그램은 객체 간의 상호 작용을 시간 순으로 시각화 해 아키텍처 다이어그램보다 조금 더 구체적이다.
- behavior diagram: 시스템의 구조에 초점을 맞춘 것이 아니라, 시스템이 어떤 순서로 누구와 상호작용 하는지에 촛점을 맞춘 행동과 관련한 다이어그램
- 시퀀스 다이어그램 상호 작용 방법
- User가 그룹을 생성(group/new)하겠다는 요청을 보내면 Web Client가 활성화
- 일련의 과정 후에 Web Client가 DutchPay Server에 '그룹을 생성하라'라는 API콜을 보냄
- DutchPay Server에서 GUID생성
- 생성된 GUID와 그룹 이름을 Group DB에 요청보냄
- Success라는 응답이 오면 서버에서 일련의 과정 후에 Web Client에 guid를 리턴해줌
- Web Client가 User에게 Success 메세지를 보내줌
2. 시퀀스 다이어그램을 사용하는 이유?
- 코드만 보고 시스템의 흐름을 파악하기까지는 매우 오랜 시간이 걸리고 어렵다.
- 시스템이 어떤 순서로 요청을 처리하는지, 어떤 시스템과 어떤 메세지를 주고 받는지 쉽게 이해하기 위해 사용한다.
- 객체 들간의 상호 작용이 복잡하거나, 전달해야 하는 메세지의 순서가 중요해지는 경우에 시퀀스 다이어그램이 필요하다.
3. 언제 사용하나요?
- 요구사항이 수집되고, 각 시스템 혹은 객체 간의 메시징을 정의하는 설계 단계에서
- 요청을 처리하기 위해 여러 시스템과 외부 서비스 간의 상호 작용이 여러 차례 일어날 때, 이를 가시화/도식화할 때
- 요청을 처리하기 위해 하나의 시스탬 내에서 여러 객체 간의 메시지 전달이 여러 차례 순차적으로 일어날 때
- 팀원들과 요청의 흐름을 공유하거나 문서화 해야 할 때
- 새로운 시스템을 설계하거나 기존의 시스템을 확장할 때
4. 어떻게 사용하나요?
4-1. 구성 요소
4-1.1) 생명선 (Lifeline)
- 객체가 메모리 상에 얼마나 오래 살아있는지 나타내는 선. 아래로 내려갈 수록 시간이 경과됨을 의미한다.
4-1.2) 객체/참여자 (Participant)
- 일반 사용자
- 데이터베이스
- 시스템
- 클래스
4-1.3) 메시지 (Message)
- 객체 간이나 참여자 간의 주고 받는 메세지를 기술한다.
- 화살표로 나타낸다 ⬅️ ➡️
- 동기 (Synchronous): 꽉 채운 화살표
- 비동기 (Asynchronous): 비어있는 화살표
- 자체 (Self): 객체 간의 소통이 아닌, 자기 자신과의 소통
- 반환 (Return): 응답에 대한 요청
- 동기 반환 (Sync. return): 꽉 채운 화살표
- 비동기 반환 (Async. return): 비어있는 화살표
4-1.4) 활성 상자 (Activation box)
- Lifeline 위에 그려지는 네모 박스로, 이 시간 동안은 해당 객체가 활성화 되어 있는 것을 의미한다.
4-1.5) Guard
- 단일 메시지에 대해 조건을 명시하는 방법
[name.length > 0]create a group
-> e.g. name의 길이가 1 이상일 때, createGroup(name) 메시지를 전달
4-1.6) Sequence Fragments
- 특정 sequence 범위에 대해 조건을 명시하는 방법
- Alt. = If/else문
- Loop = While문
- Options = If문
그룹의 안에 있는 members의 프로퍼티가 1보다 크면 렌더 expense page를 자기 자신에게 전달해서 render하라
만약 이 조건에 해당하지 않는다면(그룹 안에 members가 없다면), 그냥 members page를 render해라
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
* 필수 삽입 링크 : http://bit.ly/3Y34pE0
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Today I Learn > 환급 챌린지' 카테고리의 다른 글
[실전] 시스템 설계1 (16일차) (0) | 2023.03.07 |
---|---|
시스템 설계3 (15일차) (0) | 2023.03.06 |
시스템 설계 1 (13일차) (1) | 2023.03.04 |
시스템 설계가 필요한 이유? (12일차) (0) | 2023.03.03 |
마무리 및 Recap (11일차) (0) | 2023.03.02 |