반응형
우선 Interaction Diagram에 대해서 알아보자.
Interaction Diagram은 objects간 상호작용을 메세지로 표현한 것이다. 이것은 추상화 개념 중 하나이고, 이것을 그릴 수 있는 다이어그램으로는 4가지가 있다.
- Sequence Diagram
- 모델 간 상호작용을 시간순서대로 그린 다이어그램
- 아키텍쳐 구성할 때, 가장 자주 사용
- Communication Diagram
- 효율적으로 그리기 위해, 모델간 상호작용에만 집중해서 그린 다이어그램(보기에는 Sequence Diagram보다 어렵다)
- 화살표의 번호로 시간 순서를 나타냄
- 문제 설명을 위해 그릴 때 주로 사용
- Timing Diagram
- 정확한 시간를 나타내기 위한 다이어그램
- Sequence Diagram과 개념상 유사하지만, 좀 더 정확한 타이밍을 그리기 위한 것.
- 물리적,논리적 처리 시간으로 타이밍에 따라 오동작할 수 있음을 나타내기 위함
- 비동기적으로 작동하는 경우, 타이밍에 따라 달라질 수 있으므로 유의
- Itnteraction Overview Diagram
- Activity Diagram 과 같이 Sequence Diagram을 그려 전반적인 흐름을 표현하기 위한 것이다. 여러개의 Sequence Diagram을 그릴 수도 있다.
가장 기본이자, 가장 중요한 Sequence Diagram에만 집중하도록 하자
Sequence Diagram
Terminology
- Message: 화살표와 함께, 어떤 메세지를 전달하는지 표시한 것
- Lifeline: 객체가 얼마나 오래 살아 있는지 표시한 선
- Lifeline Box: 객체를 나타냄 (ex. instanceName : ClassName)
Message
3 Types of Message
- Synchronous message
- 검은색 세모 화살표와 실선으로 표기 -|>
- 응답메세지가 올때까지 기다린다.
- Asynchronous message
- 화살표와 실선으로 표시 ->
- 전송자는 응답메세지를 기다리지 않고 계속 일을 진행한다.
- Response message
- 화살표와 점선으로 표시 -->
- 동기 메세지에서 응답값이 명확할 경우 생락하기도 한다.
Order of Messages
- 상관관계가 없는 라이프라인들 간에는 순서가 존재하지 않는다.
Message Syntax
- return = message(parameter: parameterType): returnType
Other features
- Found message
- 송신자가 누군지 모르거나 상관없을 때
- Lost message
- 수신자가 누군지 모르거나 상관없을 때
- Time-consuming message
- 메세지에 동작 시간 명시가 필요할 때
- Singleton Objects
- Lifeline Box에 1을 적어서 싱글톤이라 표시하는 것
- Instance Creation
- 클래스 인스턴스 생성할 때, 점선으로 그린다.
- 주로 create 라고 관용적 메세지를 적는다. (필수는 아니다.)
- Object Destruction
- X로 표시한다.
- 명시적으로 오브젝트가 파괴되어질때 적는다. <<destroy>> sterotyped message
4 Type of Fragments & Operators
하나의 박스를 Fragment라 하고, 그 Fragment의 이름을 operator라 한다.
actually, there are 12 predefined types of operators.
but, focused on 4 type of operators.
- alt: Alternative interaction
- switch와 흡사하다.
- 네모박스에 점선으로 구분한다.
- 여러 옵션 중 하나를 선택적 진행이 필요할 때 발생할 때 사용한다.
- Guards
- square brackets으로 감싸져있다. [example == true]
- opt: optional interaction
- else 가 없는 if와 흡사하다.
- guard를 만족하면 동작
- loop: Repeated interaction
- 반복문
- syntax
- (min .. max) or (min, max)
- default: (*)
- Guard 조건을 불만족하면 루프는 종료된다.
- break: Exception interaction
- guard를 만족하면, 박스내용을 실행하고, 박스보다 아래에 있는 것은 무시하고 상위레벨 박스를 종료한다.
- seq: 기본적 순서, 약한 관계
- strict: 고정된 순서, 분리선 기준으로, 상관없는 오브젝트 간에도 시작 분리시킨다.
- par: 병렬실행, 분리선 기준으로 실행순서가 상관이 없어진다.
- critical: 고착화시킨다. 동작과정에서 다른 이벤트는 들어올 수 없다.
ignoreconsiderassertneg
참고)
반응형
': Architecture' 카테고리의 다른 글
[OOAD] SOLID (0) | 2022.06.23 |
---|---|
[OOAD] GRASP (0) | 2022.06.22 |
[UML] Class Diagram (0) | 2022.06.17 |
[UML] Use Case Diagram (0) | 2022.06.17 |