본문 바로가기
Concepts/UML

UML - 시퀀스 다이어그램 - loop, if

by ocwokocw 2021. 2. 10.

- 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다.

- 루프, 조건문

시퀀스 다이어그램에서는 루프와 조건문을 표현하기가 좋지 않다. 이런 제어구조는 액티비티 다이어그램이나 코드로 표현하는것이 더 좋고 간결하다. 시퀀스 다이어그램은 제어로직보다는 객체들의 상호교류 표현을 훨씬 잘 나타낸다.

시퀀스 다이어그램에서 제어를 표현하기 위해 용어를 몇 가지 알아보자. 1: dispatch 아래에 loop 로 둘러쌓인 큰 사각형이 있는데 이를 프레임이라 부른다. 그 안에 [모든 line item] 라는 Text를 가드라고 한다. 그리고 loop 를 둘러싼 작은 사각형을 연산자 라고 한다. 모든 프레임에는 연산자가 있고, 해당 연산자 조건을 가드에 적는다.

 

UML 프레임에서 자주 사용하는 연산자들은 아래와 같다.

  • alt: 다수의 조건 중 조건에 만족하는 단 한개만 실행된다.
  • opt: 주어진 조건이 참일 때만 실행된다.
  • par: 각 부분이 병렬실행된다.
  • loop: 반복문을 나타내며 가드에 조건을 명시한다.
  • sd: 원할 경우 시퀀스 다이어그램 전체를 감쌀 때 사용된다.

위의 연산자들 이외에도 region, neg, ref 가 있으며 일반적으로 사용할법한 연산자들만 명시하였다.

위 다이어그램을 의사 코드(pseudo code)로 나타내면 아래와 같다.

 

procedure dispatch
  foreach(lineitem)
    if (product.value > 10000)
      careful.dispatch
    else
      regular.dispatch
    end if
  end for
  if (needsConfirmation) messenger.confirm
end procedure

 

도입부에서도 말했듯이 제어로직과 관련해서는 시퀀스 다이어그램을 보는 것 보다 의사 코드 형태가 훨씬 가독성이 좋다. 불가피한 상황이 아니라면 꼭 시퀀스 다이어그램으로 제어로직을 표현해야겠다는 강박을 갖지 말자.

댓글