LostCatBox

Sequence-Diagram

Word count: 401Reading time: 2 min
2022/12/24 Share

시퀀스 다이어그램

Created Time: September 5, 2022 2:16 PM
Last Edited Time: September 16, 2022 2:43 PM
References: https://thinking-jmini.tistory.com/29
Tags: Java, Spring, Computer

왜?

택배 프로젝트를 구현하는데 시퀀스 다이어그램 필요했음

특정 행동이 어떠한 순서로 어떤 객체와 어떻게 상호작용을 하는 지 시간의 흐름에 따라 표현하는 행위 다이어그램이다.

구성 요소

활성 객체

시스템의 행위자 혹은 시스템 내의 유효한 객체. 라이프라인을 가진다.

1

Lifeline

상호작용에 참여하는 오브젝트를 의미

2

메세지

3

서로 다른 객체간의 상호작용 혹은 의사소통 통신읠 정의하는 요소

하나의 객체 라이프라인으로부터 다른 객체 라이프라인으로 선+화살표로 표시되며, 메세지는 그 선위에 표시

메세지 종류

4

5

활성 박스

객체 라이프 라인 위에 그려지는 박스로 이 박스위에서 객체의 호출이 이루어진다. 객체의 특정 메소드 실행 혹은 정보 처리가 실행되고 있거나 다른 객체의 메소드가 종료되기를 기다린다는 것을 나타낸다.

6

7

추가적인 흐름 제어

로직에서는 우리가 if, for, while을 쓰면서 흐름을 제어하는 표현식을 사용한다. 시퀀스 다이어그램은 시간 순으로 인스턴스 간 상호작용을 표현하기 때문에 흐름을 제어하는 표현이 필요하다. Guard, Sequence Fragment 가있다.

Guard

Guard는 단일 메시지에 대해 조건을 명시할 수 있는 방법입니다. 메세지 앞 쪽에 [ ] 대괄호로 감싼 후 조건을 명시한다. 해당조건이 만족할때만 요청 일어남

8

Sequence Fragment

Sequence Fragment는 범위로 조건을 명시할수있다. 특정 부분에 메세지를 반복하거나 조건을 명시할때 사용한다.

alternative

alt로 줄여사용한다. alt는 조건문인 if/else문을 Guard를 사용해 표현할 수 있습니다. 즉, 조건에 따라 선택 사항이 여러 개일 경우 사용됩니다. 아래는 가격이 10000원 이상이면 배송비를 무료로 처리하고 그렇지 않으면 배송비를 유료로 사용하는 것을 표현한 예시입니다.

9

option

opt로 줄여서 사용한다. opt는 조건문인 if문을 guard를 사용해 표현할수있다. opt는 조건문인 if문을 Guard를 사용해 표현할 수 있습니다.

즉, 조건에 따라 선택 사항이 단 한 개일 경우에 사용됩니다. 아래는 가격이 10000원 이상이라면 배송비를 무료로 처리하고 고객이 추가 할인 쿠폰을 요청한 다음 쿠폰을 제공하는 예시입니다. 만약 가격이 10000원 미만이라면 해당 블록의 로직을 타지 않습니다.

10

opt를 보면 Guard만 사용한 것과 유사해 보입니다.

opt를 사용했는데 처리하는 내용이 1개라면 Guard와 동일한 효과를 나타냅니다.

두 개의 차이는 Guard는 ‘A라면 B한다.’ 와 같이 1개에 대해 1가지의 결과를 보여주는 반면, opt는 ‘A라면 B도 하고 C도 하고 D도 하고 등등을 한다.’ 와 같이 1개에 대해 여러 결과를 나타낼 수 있습니다.

loop

loop은 단어 의미 그대로 for, while과 같은 반복문을 표현합니다. 아래는 입력된 시간이 2020-08-01보다 작을때 반복문을 실행하고 그 하위 조건으로 처리를 하는 예시입니다.

11

parallel

병렬 처리를 의미하며 par로 줄여서 사용합니다. 아래는 상품 주문이 들어왔을 때, 상품 확인과 배송 여부 확인을 병렬로 진행하는 것을 표현한 예시입니다.

12

CATALOG
  1. 1. 시퀀스 다이어그램
  2. 2. 왜?
  3. 3. 구성 요소
    1. 3.1. 활성 객체
      1. 3.1.1. Lifeline
    2. 3.2. 메세지
      1. 3.2.1. 메세지 종류
    3. 3.3. 활성 박스
  4. 4. 추가적인 흐름 제어
    1. 4.1. Guard
    2. 4.2. Sequence Fragment
      1. 4.2.1. alternative
      2. 4.2.2. option
      3. 4.2.3. loop
      4. 4.2.4. parallel