티스토리 뷰

728x90

시퀀스 다이어그램

정의

  • 메시지 교환을 시간적 관계로 나타낸 것이다.

특징

  • 수직 축은 시간을 나타내며 시간은 위에서 아래로 흐른다.
  • 상호 작용에 관여된 객체는 수평 축을 따라 상단에 나열된다.
  • 가독성을 높이기 위해 일반적으로 메시지가 왼쪽에서 오른쪽으로 흐르도록 배치되지만 수평 축에서의 순서는 아무런 의미가 없다.
  • 클래스 다이어그램이 시스템의 정적 구조를 나타내는 대표적인 모델이라면, 시퀀스 다이어그램은 시스템의 동적 흐름을 나타내는 대표적인 모델이다.

객체 표현

  • 객체이름: 클래스 이름 (예시 : blog001:Blog )
  • 반드시 두 가지를 명시해야하는 것은 아니고, (:클래스 이름), (객체이름:) 과 같이 하나씩만 명시해서 사용해도 무방하다.
  • <<type>> 과 같은 표현을 통해 스테레오 타입을 명시할 수 있다.
    • 클래스의 종류를 구분하기 위하여 사용하는 것이다.
    • ToDo : 해당 부분은 조금 더 공부가 필요하다.

라이프 라인

  • 객체에 연결된 수직 점선을 의미한다.
  • 객체가 존재하는 기간을 나타낸다.

활성 박스(활성 구간)

  • 메서드가 활성되는 기간을 나타낸다.
  • 활성이 끝나면 제어 흐름이 메서드를 호출한 메인으로 되돌아간다.
  • 동일한 객체에 대한 메서드의 호출은 중첩된 활성 박스가 표시된다.
  • 활성 박스은 반드시 표시할 필요는 없다.

메시지 및 화살표

  • 화살표의 시작 부분은 메시지를 송신하는 객체를 나타낸다.
  • 화살표의 끝 부분은 메시지의 수신 객체를 나타낸다.
  • 화살표의 머리 부분이 채워져있다면 동기 메시지를 나타낸다.
    • 동기 메시지의 경우, 메시지의 실행을 요청하는 객체가 메시지의 실행이 종료될 때까지 다음 작업을 수행 할 수 없다.
  • 화살표의 머리 부분이 비워져있다면 비동기 메시지를 나타낸다.
    • 비동기 메시지의 경우, 메시지를 송신하고 나서 메시지의 실행이 끝나기를 기다리지 않고 다음 작업을 바로 수행할 수 있다.
  • 상호 작용 중에 생성된 객체는 스테레오 타입의 메시지 <<create>>을 사용하여 생성 시점을 표시한다.
  • <<destory>> 스테레오 타입 메시지는 객체를 소멸시키는 소멸 메시지를 나타낸다.
  • 메시지에는 매개 변수가 포함될 수 있다. 매개 변수에는 전달된 실제 값 또는 전달한 값의 타입을 넣을 수 있다.
  • 메시지를 기술할 때 보통은 다음과 같은 형식을 따른다.
    • [시퀀스 번호] [가드] : 리턴 값 : = 메시지이름([인자 리스트])
      • 메시지 이름을 제외하고 모두 생략 가능하다.
      • 시퀀스 번호는 굳이 기술할 필요가 없다.
      • 가드는 메시지가 송신되기 위해 만족해야하는 조건이다.
  • 점선 화살표는 리턴 메시지를 표현하고, 반드시 표시할 필요는 없다. 다만 반드시 활성 박스의 마지믹 부분에서 나오게 표시힌다.

프레임

  • 다이어그램을 에워싸는 박스로 표시한다.
  • 박스 안 왼쪽 모서리에 다이어그램 타입과 이름을 넣을 수 있다.
    • 시퀀스 다이어그램의 경우 키워드는 sd이다.
    • 유즈케이스 다이어그램의 경우 키워드는 ud이다.
    • 액티비티 다이어그램의 경우 키워드는 ad이다.
    • 클래스 다이어그램의 경우 키워드는 cd이다.
  • 프레임을 사용하여 다이어그램 외부에서 특정 다이어그램을 참조하는 것이 가능해졌다.
    • 그런 경우 ref를 사용한다.

기타 특징

  • 시퀀스 다이어그램 맨 위에 나열된 객체는 상호작용을 시작할 때 존재하는 객체이다.
  • 상호 작용이 끝나기 전에 객체가 삭제되면 삭제 시점의 생명선을 끝내고 생명선 끝 부분에 X를 써넣는다.

작성 과정

시퀀스 다이어그램은 여러 객체의 사이의 상호 작용을 표시한다.

특히 시퀀스 다이어그램은 유스케이스의 이벤트 흐름을 나타내는데 사용되며 유스케이스에 참여하는 객체를 찾아내고 유스케이스 명세에 표현된 동작을 시스템 내부에 존재하는 객체의 메시지 교환 형태로 표현하는데 사용된다.

이러한 과정에서 유스케이스가 더 상세화 된다.

과정을 살펴보자.

  1. 참여하는 객체를 파악한다.
  2. 파악한 객체를 X축에 나열하고 라이프라인을 긋는다.
  3. 유스케이스에 기술된 이벤트 순서에 따라 객체의 메시지 호출을 화살표로 나타낸다.

참고

  • 오픈소스 소프트웨어로 실습하는 소프트웨어 공학 (생능출판, 정인상 지음)
  • 소프트웨어 공학의 모든 것 (생능출판, 최은만 지음)
댓글
최근에 올라온 글
최근에 달린 댓글
링크