Sequence Diagram

문상우·2024년 6월 23일
0

UML

목록 보기
1/1
post-thumbnail

Sequence Diagram

시퀀스 다이어그램이란 특정 행동이 어떤 순서로 어떤 객체와 어떻게 상호작용 하는지를 나타냅니다.
UseCase Diagram이 특정 Actor가 동작하는 행위를 정의하는 것이라고 한다면, Sequcence는 각 Object 별로 어떤 상호작용이 일어나고 해당 상호작용이 어떤 순서를 갖는지를 나타냅니다.

이는 개발시에 매우 유용하게 참고될 수 있습니다. 보통 개발에서는 로직의 순서, 데이터 교환을 파악하는 것이 매우 중요합니다. 이를 도식화 시켜 하나의 그림으로 확인할 수 있는게 Sequcence Diagram의 큰 장점이라고 생각됩니다.

여기서 말하는 객체는 실제 코드 수준에서의 객체일 수도 있고, 서비스 관점에서 표현했다면 컴포넌트라고 볼 수 있습니다. 상황에 따라 데이터 베이스의 Table(Entity) 단위가 될 수도 있습니다.

장점

  • 실시간 명세를 표현하는데 적합
  • 시스템 흐름을 시각화하여 절차, 기능, 작업 로직을 모델링
  • 개체와 구성 요소가 서로 어떻게 상호 작용하고 프로세스를 완료하는지 확인 가능
  • 기존 혹은 새로운 시스템의 복잡한 시나리오를 기획하고 이해하기 쉬움

Object

메세지를 주고 받는 주체이며 유효한 객체는 라이프라인을 가지게 됩니다. 객체의 관점으로 표현한 경우 클래스가 되며, 서비스 관점으로 표현한 경우 컴포넌트가 됩니다.

Lifeline

모델링 되는 인스턴스 입니다. Object에 점선을 이어 표현합니다. 여기서 점선은 아래로 갈 수록 더 이후의 시간을 의미합니다.

Activation

Lifeline 위에서 다른 인스턴스와 상호 작용을 하며 활성화 되어 있는 것을 나타냅니다. 직사각형의 모양으로 포함하고 특정 동작의 시작과 끝을 표현하기 위해 사용됩니다.

Message

메세지는 인스턴스 간 주고 받은 데이터를 나타냅니다. 메세지를 통해 각 인스턴스 간에 어떤 상호작용이 있는지를 알 수 있습니다.

동기 메세지

동기 메세지는 실선이며 꽉 찬 화살표로 표현합니다. 해당 작업이 끝나는 동안에 다른 작업을 진행할 수 없음을 나타낼 때 사용합니다.

비동기 메세지

비동기 메세지는 실선과 선으로 된 화살표로 표현합니다. 요청을 보낸 후 다른 동작을 할 수 있음을 의미합니다(결과를 기다리지 않습니다).

자체 메세지

자체 메세지는 본인의 Lifeline으로 회귀하는 화살표로 표현합니다. 다른 인스턴스와의 상호작용 말고 해당 인스턴스가 자체적으로 작업하는 것을 나타냅니다.

반환 메세지

요청에 대한 결과를 반환합니다. 점선과 선으로 된 화살표로 표현합니다.

흐름 제어

로직에서는 if, for 등 조건문과 반복문을 표현해야 하는 경우가 있습니다. Sequence Diagram은 시간 순으로 인스턴스 간 상호작용을 표현하기 때문에 흐름을 제어하는 표현이 필요할 수 있습니다.

Guard

단일 메세지에 대해 조건을 명시하는 방법입니다. 메세지의 앞쪽에 [] 대괄호로 감싼 후 조건을 명시하면 됩니다. 아래는 price가 2000 이상일 때만 메세지가 전송되는 예시입니다.

Fragment

Fragment란 범위로 조건을 명시하는 것을 말합니다. 특정 부분에 대해 메세지를 반복하거나 조건을 명시할 때 사용됩니다.

Option

조건문인 if를 Guard를 사용하여 표현할 수 있습니다. opt로 줄여서 사용합니다. 옵션인 만큼 조건에 해당하는 경우에만 opt fragment 안에 있는 로직을 진행하고, 조건에 해당하지 않는다면 로직을 진행하지 않습니다.

Guard와의 차이점

  • Guard의 경우 한 조건에 대한 한 개의 메세지 처리를 위함
  • Option의 경우 한 조건에 대해 여러 개의 메세지 처리를 위함

Alternative

조건문인 if, else if, else or switch 를 Guard를 사용해 표현할 수 있습니다. alt로 줄여서 사용합니다. 조건에 따라 처리되는 로직이 다른 경우에 사용하게 됩니다. 아래는 결제 금액에 따라 스탬프 적립 양이 달라지는 것을 표현한 예시입니다.

Loop

반복문인 for, while 과 같은 반복문을 표현합니다. 아래는 만료된 스탬프 카운트의 수 만큼 스탬프를 만료하는 것을 표현한 예시입니다.

Parallel

병렬 처리를 의미합니다. par로 줄여서 사용합니다.

다음 글에서는 실제로 제가 작업하면서 어떤 식으로 Sequence Diagram을 이용했는지 작성해보겠습니다.

참고

https://brownbears.tistory.com/511
https://boardmix.com/kr/skills/what-is-a-sequence-diagram/

profile
평범한 대학생의 코딩일기

0개의 댓글

관련 채용 정보