[기획] 시퀀스 다이어그램

sonhm·2022년 5월 17일
0
post-custom-banner

말 많은 기획서보다 시퀀스

시퀀스 다이어그램(Sequence Diagram)은 어떠한 순서로 어떤 객체들과 어떻게 생호작용했는지를 표현하는 다이어그램임.

시퀀스 다이어그램을 이용하면 API 등의 유즈케이스를 디테일하게 알 수 있음. 또한 메서드 콜, DB 조회, 타 시스템의 API 호출등 로직을 모델링할 수 있음. 그렇기 때문에 시나리오를 파악하기 좋음.

유지보수 측면이나 커뮤니케이션 측면에서 잘 작성한 시퀀스 다이어그램 하나가 수많은 기획서보다 나음.

구조

Life line

모델링 되는 개개의 인스턴스임.
LifeLine은 네모박스와 점선으로 이루어져 있으며 네모박스는 Object 관점이라면 Class, Service 관점이라면 Component가 됨. 그리고 점선은 위에 아래로 내려올수록 시간이 경과됨을 의미.

Activations

Activations는 LifeLine의 인스턴스가 실제로 다른 인스턴스와 상호작용을 하며 활성화되어있는 것을 나타냄.

call message

call message는 요청을 하는 메시지임.
메시지에 대해서 받은 인스턴스는 특정 작업을 진행함. 그리고 작업을 마무리하고 return message를 돌려줌. call message를 통해 호출할 때 호출이름(파라미터)의 형식을 가짐. 그리고 response에 대해서는 반환되는 값을 명시해주시면 됨. 아래 이미지는 DB 서비스에 selectPhoto를 실행시키며 파라미터로 id를 전달함. 그리고 DB의 작업 후 photo를 Batch 인스턴스에 return하는 모습을 나타낸 것임.

async

sync 메시지가 가득차있는 삼각형 화살표라면 async 메시지는 골격만 가지고 있는 화살표로 표시.

self & recursive

인스턴스간의 상호작용 뿐만 아니라 하나의 인스턴스에서 처리를 하는 방법도 종종있음. 이럴때는 self 메시지를 사용할 수 있음. self message는 본인의 lifeline으로 재귀 하는 화살표를 가지고 있음.

흐름제어

프로그램 로직을 구성하다 보면 반드시 작성하게 되는것이 if, for, while 등과 같은 흐름 제어 표현임.
Sequence Diagram은 시간 순의 인스턴스간의 상호작용을 표현하기 때문에 흐름 제어 표현들이 필요 할 수 있음. 이때 사용하는 요소가 guard와 Sequence Fragments임.

guard

단일 메시지에 대해서 조건을 명시할 수 있는 방법.
guard는 메시지의 Text의 앞쪽에 []로 감싼 후 조건을 명시.
만약 a라는 값이 0보다 커야한다고 한다면 [a>0]으로 명시하면 좋음. 아래 이미지는 photo의 갯수를 불러오고 photo.size의 값이 0보다 크다면 putPhoto(photo)로 호출한다는 의미임. 만약 size가 0이라면 해당 메시지는 발생하지 않음.

Sequence Fragments

guard가 한 메시지에 대해서 조건을 명시했다면, sequnce fragments는 범위로 조건을 명시할 수 있음. 즉, 특정 부분에 대해서 일정 부분의 메시지를 반복하던지 조건을 명시하던지 할때는 sequence fragments가 명확할 수 있음.

Alt

alternatives는 줄여서 alt.
이 타입은 if / else 구문을 나타낼 수 있음.
아래는 alt를 이용한 if / else 구문임. 여기서도 if에 대해서 guard를 사용할 수 있음. guard를 보시면 id값이 짝수일 경우임. 즉 이 시퀀스 다이어그램은 id가 짝수이면 insertOdd 메시지를 보내고 그렇지 않다면 logging이라는 메시지를 보내는것을 알 수 있음.

Opt

options는 opt로 표기.
이 타입은 if 구문을 나타낼 수 있음. 아래는 opt를 이용한 if 구문임. guard는 sequence fragments에서도 적용할 수 있으며 이는 opt에서도 마찬가지임. 아래 예제에서는 guard로 photo.resolution이 1280이라면 Pixel을 조절한다고 되어있음.

Loop

loop는 우리가 일반적으로 아는 for 또는 while과 같은 loop 구문을 나타낸 seqence fragments.
사용법은 guard로 condition을 작성하며 seqnece fgragments 안에서 로직을 작성하면 됨.

출처 : https://sabarada.tistory.com/84

profile
기발한 기발자
post-custom-banner

0개의 댓글