[SW Engineering] 5. Sequence Diagram

이상윤·2024년 4월 21일
0

소프트웨어공학

목록 보기
9/11

특정 행동이 어떠한 순서로, 어떤 객체와, 어떻게 상호작용을 하는지 표현

특징

  • 2차원 다이어그램
    • 수평축: 포함된 상호작용 파트너 (객체)
    • 수직축: 상호작용의 시간적 순서

Lifeline

위에서 수평축에 제시되는 "상호작용 파트너"를 lifeline이라고 한다.

  • 구성
    • Head
      • roleName:Class 을 포함하는 사각형
        (role은 object보다 general한 개념이다)
      • 객체의 lifetime 동안 다른 role을 가질 수 있다.
    • Body
      • 세로선, (보통 점선)
      • 객체가 언제까지 살아있는지 나타냄
  • 종류

    a) Role만 / b) Class만 / c) Role+Class
    d) Loop를 돌면서 나타내는 다중값 Role
    e) 독립적인 Tread를 가지고 있어 Active하게 동작할 수 있는 경우. 다른 프로세스와 상관 없이 독립적으로 작동.
    f) 특정 System Operation을 모델링할 때 모델링의 당사자가 되는 Operation을 가지고 있는 경우.

Message

인스턴스간 주고받은 데이터

  • 종류
이름Synchronous Message
(동기 메세지)
Asynchronous message
(비동기 메세지)
Response message
(반환 메세지)
Object creation
(객체 생성)
표기법
특징전송자는 메세지의 응답을 받을때까지 기다린다.전송자는 메세지의 응답을 기다리지 않는다.동기 메세지 요청에 대해 응답한다.많은 경우에 생략될 수 있다.객체 생성이 필요할 때, 다른 객체가 call. new 키워드를 사용한다.
Syntaxmsg(par1,par2)
(msg: 메세지명, par, 파라미터)
msg(par1,par2)att=msg(par1,par2):val
(att: 반환값 저장 변수, val: 반환값 타입)
이름Object destruction
(객체 삭제)
Found messageLost messageTime-consuming message
표기법
특징객체를 삭제한다.누가 보냈는지 알기 어렵거나, 알 필요 없을 때 사용한다.브로드캐스트 등 메세지 수신자를 알 수 없거나, 중요하지 않을 때 사용한다.기간을 가진 메세지에 대해 사용한다.

Frame

Compartment(왼쪽 위 구석에 오각형 (모서리 잘린 사각형))을 포함한 시퀀스를 둘러싼 사각형
간단한 이름이나 연산을 포함하는 interactionIdentifier을 오각형 안에 명시해서 어떤 일이 일어나는지 시각화 할 수 있다.

Self

어떤 interaction이 상호 작용하는 객체 중 하나에 소유될 때

위 경우에 Order이 delete를 own하고 있기 때문에, self:Order로 표시한다.

Local Attribute & Parameter

void func(int par1, int par2){
	int x = 0;
    String y = "Test";
    ...
}


Frame의 Compartment에 파라미터를 넣고, 박스에 지역 attribute를 넣거나, 귀가 접힌 메모를 따로 추가하는 방식으로 구현한다.

Combined Fragements

Concrete 시나리오에서 다양한 variation을 나타내기 위해 사용한다.
반목, 조건 등의 상황을 범위로 나타낸다.

종류

  • 브랜치& 반복
    • alt
      조건에 따라 선택이 여러가지인 경우: if else 문
      다중 operand를 가진다.
    • opt
      조건이 하나인 경우: if 문 -> operand는 하나다
    • loop

      반복문
      operand는 하나이다.
      loop(min..max) 혹은 loop(min,max) 형태로 최소 최대 수행 횟수를 정할 수 있다.
      *는 no limit을 의미한다. ( loop = loop(*) = loop(0,*)
      min보다 적게 수행했으면 guard(조건)를 확인하지 않는다.
      min~max번의 반복동안, guard가 true면 실행하고, 아니면 빠져나온다.
    • break

      예외 처리, guard를 가지고 하나의 operand만 가진다.
      guard가 true이면 operand 안의 interaction을 실행하고, 바깥부분 fragment는 무시한다.
      바깥에 fragment가 없으면, 전체를 바깥 fragment로 생각하고 즉시 종료한다.
      위 그림에서 a<1가 true이면 b, c, e 순으로 실행하고 d는 실행하지 않는다.
  • 동시성& 순서
    • seq

      기본 fragment이다.
      Weak Sequencing:
      1. 각 Operand 내에서 벌어지는 event의 순서는 결과에서 그대로 유지된다.
      2. 서로 다른 lifeline에서의 Operand는 무작위 순서로 발생할 수 있다.
      3. 같은 lifeline 내의 다른 Operand는 순서대로 발생한다.
      Break문의 범위를 제한하는데 많이 쓰인다.
      예를들어, 위 그림에서 break문에 진입한 후 no free place가 참이라면 reserve(exam)을 실행하고, examine()은 무시하고 info()를 실행하게 된다.
    • strict

      strict fragement 내의 Operand들은 무조건 위에서 아래의 순서로 실행하게 된다.
      Operand 내부는 seq 취급이기때문에, 안에서는 무작위 순서가 발생할 수 있다.
      위 그림의 경우, 무조건 a b c d e 순서로 실행된다.
    • par

      strict 반대로 동작한다.
      주어진 Operand들은 무작위 순서로 실행될 수 있다.
      같은 예제에서, par의 경우, operand 내부에서는, 위에서 seq를 따라 a보다 b가 빨리 나오기만 하면 되고, 아래는 c d e 순서로 나오기만 하면 되는데, 배치는 상관없다.
      따라서 a b c d e, a c b d e, a c d b e, a c d e b, c a b d e, c a d b e, c a d e b, c d a b e, c d a e b, c d e a b 모두 가능하다.
    • critical

      하나의 operand만 가지며, operand 내부의 interaction들은 하나의 interaction처럼, 실행되는 동안 다른 interaction의 개입이 있어서는 안된다.
      operand 내부는 seq 순서를 따른다.
      위 그림에서, c d는 순서대로(같은 lifeline이니깐), 사이에 아무것도 없이 실행되어야 한다. 아래쪽 operand는 seq 방식을 따라, (c d) e 순서로 나와야 함을 알 수 있다.
      따라서 가능한 순서는 a b c d e, a c d b e, a c d e b, c d a b e, c d a e b, c d e a b 6가지 경우밖에 없다.
  • 필터와 Assertion(검증)
    • ignore

      현 시나리오에 {}안의 부분이 큰 관계성이 없다고 표시한다.
      위 경우 status가 발생할 수는 있지만, 시나리오에 큰 관계성은 없음을 표시한다.
    • consider

      주어진 부분에서 중요한 부분을 표시한다.
      위 그림에서 login, register에만 집중하면 됨을 표현할 수 있다.
    • assert

      주어진 시나리오 이외의 시나리오는 허용되지 않음을 명시한다.
    • neg

      주어진 메세지가 발생되어선 안된다고 표시한다.
  • 이외
    • ref

      다른 시퀀스 다이어그램을 현재 시퀀스 다이어그램에 병합한다.

Time Constraints

  • 종류
    • 특정 시간
      • 상대적: after(), before() 등
      • 절대적: at(12.00) 등
    • 두 이벤트 사이의 시간
      • {lower ... upper} e.g. (12.00 ... 13.00)
    • 사전 정의됨
      • now: 현재 시간

State Invariant


특정한 객체가 특정한 상태일 때만 lifeline 아래를 실행하게 함.

0개의 댓글

관련 채용 정보