본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

결합 프래그먼트(Combined Fragment)는 UML 시퀀스 다이어그램에서 메시지 묶음을 사각형 틀로 감싸고 상호작용 연산자(alt, opt, loop, break, par, seq, strict 등)를 붙여 선택·반복·중단·병렬 같은 흐름 제어를 나타내는 표기이다.

시퀀스 다이어그램은 원래 위에서 아래로 한 줄기의 메시지 순서만 보여 준다. UML 2 는 여기에 결합 프래그먼트를 들여와 조건에 따라 갈라지거나 되풀이되는 여러 실행 흐름(trace)을 그림 하나에 담을 수 있게 했다. 틀의 왼쪽 위 이름표(pentagon)에 연산자를 적고, 틀 안을 점선으로 나눈 각 칸을 피연산자(operand)라 한다. 피연산자 위에 대괄호로 쓴 불린 식이 가드(interaction constraint)이며, 가드가 참일 때만 그 피연산자가 실행된다.[1]

상호작용 연산자

편집 원본 편집
연산자 뜻 읽는 법
alt 대안 가드가 참인 피연산자 하나만 실행한다. if-else 에 해당한다
opt 선택 피연산자가 하나뿐인 alt. 가드가 거짓이면 통째로 건너뛴다
loop 반복 loop(최소, 최대)[가드] 형식. 가드가 거짓이 되면 끝난다
break 중단 가드가 참이면 안의 메시지를 실행하고, 바로 감싸고 있는 프래그먼트의 나머지를 실행하지 않는다
par 병렬 피연산자들이 서로 끼어들며(interleave) 실행될 수 있다
seq 약한 순서 같은 생명선 위의 사건만 피연산자 순서를 지킨다. 서로 다른 생명선의 사건은 순서가 바뀔 수 있다
strict 엄격한 순서 생명선과 상관없이 피연산자를 위에서 아래로 차례대로 실행한다
critical 임계 구역 안의 메시지가 다른 메시지에 끼어들림 없이 한 덩어리로 실행된다
neg 부정 일어나서는 안 되는(무효한) 흐름을 표시한다
assert 단언 이 흐름만이 유효하다고 못 박는다
ignore / consider 무시·고려 특정 메시지를 무시하거나 고려 대상으로 지정한다

alt·opt·loop 가 가장 많이 쓰이고, 그다음이 break 와 par 이다.[2]

break 는 opt 와 모양이 같지만 뜻이 다르다. 가드가 참이어서 break 안의 메시지가 실행되면, 그 break 를 바로 감싸고 있는 상호작용 프래그먼트의 남은 부분은 건너뛴다. 프로그래밍 언어의 break 문이 반복문을 빠져나오는 것과 같다. 가드가 거짓이면 break 안의 메시지는 실행되지 않고 감싸는 프래그먼트의 나머지가 그대로 이어진다.[3][2]

어디까지 건너뛰는지는 break 가 어디에 들어 있느냐로 정해진다.

  • break 가 seq·loop 같은 다른 결합 프래그먼트 안에 있으면 그 프래그먼트의 나머지만 건너뛰고, 그 프래그먼트 다음 메시지부터 이어서 실행한다
  • break 가 다이어그램 맨 바깥(상호작용 전체)에 바로 놓여 있으면 그 뒤의 메시지는 하나도 실행되지 않는다

흐름 읽기 예

편집 원본 편집

메시지 a 다음에 seq 틀이 있고, 그 안에 [z > 3] break(b, c)와 메시지 d 가 차례로 있다. seq 틀 다음에는 바깥에 [w == 2] break(e)가 있고 마지막에 메시지 f 가 있다고 하자.

  • z > 3 이 거짓이면 b, c 는 실행되지 않고 d 가 실행된다. z > 3 이 참이면 b, c 를 실행하고 seq 안의 나머지인 d 를 건너뛴다. 따라서 seq 구간은 'd' 또는 'b → c' 둘 중 하나이고 'b → c → d' 는 나올 수 없다
  • w == 2 가 참이면 e 를 실행하고 상호작용 전체의 나머지인 f 를 건너뛴다. 거짓이면 e 없이 f 가 실행된다. 따라서 'e → f' 는 나올 수 없다
  • 그러므로 적법한 흐름은 a → d → f, a → d → e, a → b → c → f, a → b → c → e 네 가지이다. d 와 b 가 모두 빠진 a → f 는 나올 수 없다

opt·alt 와 구별하기

편집 원본 편집
구분 opt alt break
피연산자 수 하나 둘 이상 하나
가드가 참일 때 안을 실행하고 이어서 진행 참인 칸 하나를 실행하고 이어서 진행 안을 실행하고 감싸는 프래그먼트의 나머지를 건너뜀
가드가 거짓일 때 건너뛰고 이어서 진행 else 칸이 있으면 그것을 실행 건너뛰고 이어서 진행
비슷한 코드 if if-else, switch if (...) { ...; break; }
  1. ↑ 「UML Sequence Diagrams - Combined Fragment」, uml-diagrams.org(Kirill Fakhroutdinov), https://www.uml-diagrams.org/sequence-diagrams-combined-fragment.html, 확인일: 2026-11-04.
  2. ↑ 2.0 2.1 Donald Bell, 「UML basics: The sequence diagram」, IBM Developer, https://developer.ibm.com/articles/the-sequence-diagram/, 확인일: 2026-11-04.
  3. ↑ 「OMG Unified Modeling Language Version 2.5.1」 17.6.3 Interaction Operators, Object Management Group, 2017, https://www.omg.org/spec/UML/2.5.1/PDF, 확인일: 2026-11-04.