![[SWE/UML] Sequence Diagram (시퀀스 다이어그램)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FewqWeQ%2FbtsGBPwLL8M%2FgatcyovZeoM2kk6jKlnNQk%2Fimg.jpg)
Sequence Diagram
시퀀스 다이어그램은 프로그램 실행 과정을 시각적으로 나타내는 다이어그램이다. 프로그램 흐름에 따라 객체나 이벤트 간의 상호 작용을 시각적으로 보여주는 다이어 그램이다. 이 시퀀스 다이어그램을 사용하면 어떤 객체가 어떤식으로 상호작용하는지 알수 있으니 API 설계를 좀더 쉽게 할수 있다.
시퀀스 다이어그램에는 여러가지 구성 요소가 있다. 이 구성요소를 알아보자
1. 객체와 생명선
1.1 객체 (Object)
시스템의 다른 부분과 상호 작용하는 객체나 요소를 나타낸다. 주로 사각형으로 표시되며 이름 혹은 식별자가 포함될수 있다.
1.2 생명선 (Lifeline)
세로 점선으로 표시되며 위에서 아래로 갈수록 시간의 경과를 의미한다.
1.3 활성 박스 (Activation Box)
어떤 객체가 어떤 활동을 하고 있음을 의미한다. 길다란 직사각형으로 표현된다.
2. 메세지
메세지는 인스턴스 간에 주고 받은 데이터로, 일반적으로 요청, 응답을 표현한다.
2.1 동기 메세지 (Synchronous message)
호출된 객체가 호출한 객체로부터 직접적으로 응답을 받을 때 사용. 호출자는 호출 메서드가 실행을 완료하고 응답을 반환할 때까지 대기. 일반적으로 요청은 실선 채워진 화살표.
2.2 반환 메세지 (Activation Box)
호출된 메소드가 실행을 완료하고 호출자에게 결과를 반환할 때 사용한다. 이는 즉 통신의 종료를 의미한다. 점선 채워지지 않은 화살표로 나타낸다.
2.3 비동기 메세지 (Activation Box)
호출된 객체가 호출한 객체에게 즉시 응답을 보내지도 않고, 호출된 작업이 완료될 때까지 대기하지도 않는다. 끝이 비어있는 실선 화살표로 나타낸다.
2.4 자체 메세지 (Activation Box)
자기 자신에게 메세지를 보내는 경우 -> 객체의 내부상태 변경 혹은 내부작업.
3. 흐름제어
시간순으로 인스턴스의 상호 작용을 표현해야 함으로 흐름을 제어하는 표현들을 사용할 수 있다.
3.1 가드 (Gaurd)
단일 메세지에 대해 조건을 명시할 수 있는 방법. 대괄호 '[ ]'를 사용해서 조건을 표시한다.
3.2 프레그먼트 (Fragment)
범위를 명시하기 위한 표현. 여러 생명선과 활성을 포괄적으로 감싸는 박스형태로 표현, 반복이나 대안 설정 가능.
프레그먼트도 종류가 있다. 아래서 설명
3.2.1 옵션 (Option) - 프레그먼트 (Fragment)
다이어그램에서는 다이아모양으로 표시되는 분기점을 나타냄. "opt"라고 라벨링됨. 가드를 통해서 조건을 명시
3.2.2 반복 (Loop) - 프레그먼트 (Fragment)
특정 조건이 충족될 때까지 반복되는 영역을 표시. "loop"로 라벨링한다.
3.2.3 대안(Alternative) - 프레그먼트 (Fragment)
조건에 따라서 둘 이상의 다른 메세지 흐름중 하나를 선택적으로 실행하는데 사용. "alt"로 라벨링한다.
대안과 옵션의 차이는 분기점을 기준으로 조건을 만족하지 않으면 실행하지 않는 옵션과 조건을 만족하지 않으면 다른 대안 메세지 흐름을 가져가는 대안이다.
3.2.4 병렬(Parallel) - 프레그먼트 (Fragment)
동시에 실행되는 메세지 흐름을 나타냄. 동시에 여러 작업이 진행된다는 것을 의미한다. "par'로 라벨링 한다.
4. 정리
객체와 생명 | 설명 | 나타내는 방식 |
객체 (Object) | 시스템 내의 실제 또는 가상의 객체를 나타냄 | 사각형 |
생명선 (LifeLine) | 객체의 생존을 타내는 세로 선 | 객체아래로 연결되는 세로 점선 |
활성 박스 (Activation Box) | 작업이 실행되는 동안 생명선의 활성화를 나타내는 수평 직사각형 | 세로 점선위의 세로로 긴 직사각형 |
메세지 | 설명 | 나타내는 방식 |
동기 메세지 (Synchronous Message) | 메시지 발신자가 수신자의 응답을 기다림 | 꽉 찬 실선 화살표 |
비동기 메세지 (Asynchronous Message) | 메시지 발신자가 수신자의 응답을 기다리지 않음 | 차지 않은 실선 화살표 |
자체 메세지 (Self Message) | 객체가 자기 자신에게 보내는 메세지 | 실선 화살표가 객체 자신의 생명선을 다시 가르 |
흐름제어 | 설명 | 나타내는 방식 |
가드 (Gaurd) | 메세지가 전송될 수 있는 조건을 나타냄 | 대활호 안에 조건을 명시 |
프레그먼트 (Fragment) | 반복적인 또는 조건부로 발생하는 일련의 메세지 그룹을 나타냄 | 사각형으로 표시 그안에 반복 또는 조건을 나타내는 표현이 표시됨 |
프레그먼트 | 설명 | 나타내는 방식 |
옵션 (OPtion) | 일련의 메세지 그룹중 선택적으로 발생하는 부분을 나타냄 | 프레그먼트에 "opt"로 라벨링 |
반복 (Iteration) | 일련의 메세지를 반복하여 나타냄 | 프레그먼트에 "loop"로 라벨링 |
대안 (Alternative) | 조건부로 발생하는 메세지 그룹을 나타냄 | 프레그먼트에 "alt"로 라벨링 |
병령 (Parallel) | 동시에 발생하는 메세지 그룹을 나타냄 | 프레그먼트에 "par"로 라벨링 |
참고
IT위키
IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키
itwiki.kr
'Software > Engineering' 카테고리의 다른 글
[SWE/UML] Use-Case Diagram (유즈케이스 다이어그램) (0) | 2024.06.22 |
---|
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간