본문 바로가기

: Architecture

[UML] Sequence Diagrams

반응형

우선 Interaction Diagram에 대해서 알아보자.

Interaction Diagram은 objects간 상호작용을 메세지로 표현한 것이다. 이것은 추상화 개념 중 하나이고, 이것을 그릴 수 있는 다이어그램으로는 4가지가 있다.

  • Sequence Diagram
    • 모델 간 상호작용을 시간순서대로 그린 다이어그램
    • 아키텍쳐 구성할 때, 가장 자주 사용
  • Communication Diagram
    • 효율적으로 그리기 위해, 모델간 상호작용에만 집중해서 그린 다이어그램(보기에는 Sequence Diagram보다 어렵다)
    • 화살표의 번호로 시간 순서를 나타냄
    • 문제 설명을 위해 그릴 때 주로 사용
  • Timing Diagram
    • 정확한 시간를 나타내기 위한 다이어그램
    • Sequence Diagram과 개념상 유사하지만, 좀 더 정확한 타이밍을 그리기 위한 것.
    • 물리적,논리적 처리 시간으로 타이밍에 따라 오동작할 수 있음을 나타내기 위함
    • 비동기적으로 작동하는 경우, 타이밍에 따라 달라질 수 있으므로 유의
  • Itnteraction Overview Diagram
    • Activity Diagram 과 같이 Sequence Diagram을 그려 전반적인 흐름을 표현하기 위한 것이다. 여러개의 Sequence Diagram을 그릴 수도 있다.

 

가장 기본이자, 가장 중요한 Sequence Diagram에만 집중하도록 하자

 

Sequence Diagram

 

Terminology

용어정리를 위한 이미지

  • Message: 화살표와 함께, 어떤 메세지를 전달하는지 표시한 것
  • Lifeline: 객체가 얼마나 오래 살아 있는지 표시한 선
  • Lifeline Box: 객체를 나타냄 (ex. instanceName : ClassName)

 

Message

3 Types of Message

  • Synchronous message
    • 검은색 세모 화살표와 실선으로 표기 -|>
    • 응답메세지가 올때까지 기다린다.
  • Asynchronous message
    • 화살표와 실선으로 표시 ->
    • 전송자는 응답메세지를 기다리지 않고 계속 일을 진행한다.
  • Response message
    • 화살표와 점선으로 표시 -->
    • 동기 메세지에서 응답값이 명확할 경우 생락하기도 한다.

 

Order of Messages

  • 상관관계가 없는 라이프라인들 간에는 순서가 존재하지 않는다.

 

Message Syntax

  • return = message(parameter: parameterType): returnType

 

Other features

  • Found message
    • 송신자가 누군지 모르거나 상관없을 때
  • Lost message
    • 수신자가 누군지 모르거나 상관없을 때
  • Time-consuming message
    • 메세지에 동작 시간 명시가 필요할 때
  • Singleton Objects
    • Lifeline Box에 1을 적어서 싱글톤이라 표시하는 것
  • Instance Creation
    • 클래스 인스턴스 생성할 때, 점선으로 그린다.
    • 주로 create 라고 관용적 메세지를 적는다. (필수는 아니다.)
  • Object Destruction
    • X로 표시한다. 
    • 명시적으로 오브젝트가 파괴되어질때 적는다. <<destroy>> sterotyped message

 

4  Type of Fragments & Operators

하나의 박스를 Fragment라 하고, 그 Fragment의 이름을 operator라 한다.

actually, there are 12 predefined types of operators.
but, focused on 4 type of operators.

  • alt: Alternative interaction
    • switch와 흡사하다.
    • 네모박스에 점선으로 구분한다.
    • 여러 옵션 중 하나를 선택적 진행이 필요할 때 발생할 때 사용한다.
    • Guards
      • square brackets으로 감싸져있다. [example == true]
  • opt: optional interaction
    • else 가 없는 if와 흡사하다.
    • guard를 만족하면 동작
  • loop: Repeated interaction
    • 반복문
    • syntax
      • (min .. max) or (min, max)
      • default: (*)
    • Guard 조건을 불만족하면 루프는 종료된다.
  • break: Exception interaction
    • guard를 만족하면, 박스내용을 실행하고, 박스보다 아래에 있는 것은 무시하고 상위레벨 박스를 종료한다.
  • seq: 기본적 순서, 약한 관계
  • strict: 고정된 순서, 분리선 기준으로, 상관없는 오브젝트 간에도 시작 분리시킨다.
  • par: 병렬실행, 분리선 기준으로 실행순서가 상관이 없어진다.
  • critical: 고착화시킨다. 동작과정에서 다른 이벤트는 들어올 수 없다.
  • ignore
  • consider
  • assert
  • neg

 

참고)

https://itwiki.kr/w/%EC%8B%9C%ED%80%80%EC%8A%A4_%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8#.ED.94.84.EB.9E.98.EA.B7.B8.EB.A8.BC.ED.8A.B8.28Fragment.29

반응형

': Architecture' 카테고리의 다른 글

[OOAD] SOLID  (0) 2022.06.23
[OOAD] GRASP  (0) 2022.06.22
[UML] Class Diagram  (0) 2022.06.17
[UML] Use Case Diagram  (0) 2022.06.17