본문 바로가기
컴퓨터과학[4-1]/소프트공학

소프트웨어 공학 - [제12강] 상호작용 다이어그램

by boolean 2017. 1. 4.
728x90

소프트웨어 공학 - [제12강] 상호작용 다이어그램

주요용어

상호작용 다이어그램: 시스템 구성 요소들 사이의 상호작용을 표현하는 다이어그램들을 의미하는 것으로 4+1 뷰에서 논리 뷰에 속한다. 대표적인 것은 시퀀스 다이어그램과 통신 다이어그램이며 타이밍 다이어그램도 이 부류에 속한다.

시퀀스 다이어그램: 유스케이스가 실행될 때 발생하는 구성 요소들 사이의 상호작용과상호작용 순서를 표현하는 다이어그램이다.

통신 다이어그램: 시퀀스 다이어그램과 의미적으로 동일하나 상호작용에 참여하는 요소들 사이의 관계를 명확히 표현하는 다이어그램이다.


개요

상호작용 다이어그램

객체들 간에 주고받는 메시지를 통해 상호작용을 명세

유스케이스를 수행하기 위해 객체들이 어떻게 상호작용 하는지를 표현

대표적인 상호작용 다이어그램은 시퀀스 다이어그램과 통신 다이어그램

시퀀스 다이어그램과 통신 다이어그램은 서로 1:1 변환이 가능함


시퀀스 다이어그램

시퀀스 다이어그램

유스케이스의 실현을 위해 시스템의 구성 요소들이 어떻게 상호작용하는 하는가를 시각화

특정 객체들이 활성화되어 동작하고, 다른 객체들을 호출하는 순서를 보여줌

시간 흐름과 순서에 따른 시스템 동작을 표현

시퀀스 다이어그램을 사용하는 이유

동적 행위를 표현하는 모델 가운데 가장 많이 활용됨

시스템의 동작 흐름을 파악하고 빠뜨린 객체나 메시지가 없는지 검증하기 위함

모든 유스케이스에 대해서 시퀀스 다이어그램을 작성할 필요는 없음

참여 요소와 생명선

참여 요소는 메시지를 주고받는 주체로 객체, 서브시스템, 외부 시스템, 하드웨어 등사각형으로 표시되며, 다이어그램의 상단에 적당한 간격을 두고 수평으로 배치됨

참여 요소는 액터, 경계 객체, 제어 객체, 엔터티 객체 순으로 나타남

생명선은 참여 요소에서 아래쪽으로 향하는 점선이며 상호작용의 순서를 보여주기 위한 시간 축. 위에서 아래 방향으로 시간이 흘러가며 길이가 시간 간격을 의미하는 것은 아님

참여 요소의 이름 표기법

이름[선택자] : 클래스이름 ref 상호작용 다이어그램

예) : Student Student 클래스의 익명 객체

예) admin:Administrator -Administrator 클래스의 admin 객체

예) : RegistrationSystem ref reg_detail -RegistrationSystem은 서브시스템이며 이것의 자세한 작업은 reg_detail 이라는 이름의 상호작용 다이어그램에 나옴

메시지

메시지 또는 시그널이 전송되는 것을 이벤트 발생이라 함

이벤트 발생은 상호작용이 있음을 의미

메시지 전송은 호출자가 수신자에게 메소드 실행을 요청하는 이벤트를 발생시키는 것

메시지는 소프트웨어 설계자 관점이며 시그널은 시스템 설계자 관점

시퀀스 다이어그램에서 메시지의 실행 순서는 위에서 아래로 진행됨

       활성화 막대는수신 객체가 활성화된 상태로 수신자가 주어진 이벤트에 해당하는 특정 행위를 실행하는 상황을 표현. 생명선을 따라 막대 모양으로 표시

호출 메시지와 리턴 메시지

호출 메시지가 동기화 메시지이면 검은 삼각형의 화살표로 표시

리턴 메시지는 점선의 화살표로 표시

의미가 명확하면 리턴 메시지를 표시하지 않아도 됨

메시지의 형식

속성 = 메시지 이름(파라미터) : 리턴 형식

여러 파라미터가 필요하면 , 로 구분하며 하나의 파라미터 형식은 ‘이름:타입’

예) doSomething(number1:Number, number2:Number)

Number 유형의 파라미터 2개를 가지고 doSomething()을 호출

예) temp=method():MyClass -method() 호출의 결과가 MyClass 유형이며 이것은 변수temp에 저장됨

메시지 형식이 자세히 기술되면 시퀀스 다이어그램으로부터 코드를 생성할 수 있음

클래스 다이어그램으로부터는 정적인 클래스 골격을 생성할 수 있음

시퀀스 다이어그램과 클래스 다이어그램은 설계와 구현 사이를 연결하는 중간자 역할

메시지의 종류

동기화 메시지: 참여 요소가 메시지를 보낸 후 메시지가 리턴되기를 기다려야 함

비동기화 메시지: 메시지를 보낸 후 리턴을 기다리지 않고 작업을 계속함

동기화 메시지는 일반적인 메소드 호출에 해당하며 비동기화 메시지의 예는 Java나 C#에서 스레드를 생성하여 실행시켜 2개의 작업이 동시 수행되는 경우

자기 메시지(self message)는 객체가 자신에게 메시지를 보내는 경우로 활성화 상태가 중첩되어 나타남

리턴 메시지는메시지 수신자가 실행을 종료했거나 리턴값을 메시지 송신자에게 전달하는상황을 표현함

활성화 상태가 종료되는 시점에는 암시적으로 리턴 메시지가 있으므로 중요한 리턴 메시지가 아니라면 생략함

생성 및 삭제 메시지

참여 요소를 생성하는 경우나 삭제하는 경우

생성을 위한 메시지는 《create》를 사용하고 점선 화살표 끝에 생성되는 참여 요소를 배치함

삭제를 위한 메시지는 《destroy》를 사용하고 동기화 메시지와 같은 모양으로 표현하고생명선 끝에 X 표시를 함

Java나 C#에서 생성은 new 연산자를 사용해야 하나 삭제는 자동으로 되므로 구현만을 생각한다면 삭제 메시지를 표시하지 않음

메시지의 종류와 화살표 모양시퀀스 프레그먼트(fragment) - (교재에 없음)

시퀀스 다이어그램 안에서 박스로 표시된 영역으로 다이어그램의 복잡성을 줄이고 구조화하기 위함

박스 좌상단에 프레그먼트의 유형을 표현하는 operator를 표시함

operator가 opt 이면 조건을 만족될 때만 수행되는 상호작용임을 표시하는 것

operator가 ref 이면 외부에서 정의된 시퀀스 다이어그램을 포함하는 것

operator가 par 이면 분리된 몇 개의 상호작용이 동시에 수행된다는 것


통신 다이어그램

통신 다이어그램(communication diagram)

참여 요소들 간의 메시지 송수신 관계를 파악하기에 좋은 상호작용 다이어그램

네트워크 형태이나 시퀀스 다이어그램과 같은 정보를 표현함

UML 1.X 까지는 협력(collaboration) 다이어그램이라고 불리었음

UML 도구를 사용하면 시퀀스 다이어그램과 상호 변환이 가능함

시퀀스 다이어그램과 다른 점

시퀀스 다이어그램은 메시지들의 흐름과 순서에 초점을 맞춤

통신 다이어그램은 참여 요소들 간의 상호작용 관계에 초점을 둠

메시지 전송 순서

통신 링크는 메시지를 주고받는 두 참여 요소들을 연결하는 실선으로 통신 링크를 따라서 메시지가 전달됨

통신 링크를 따라 호출자에서 수신자로 향하는 화살표와 메시지를 표시

메시지 앞에 번호를 붙여 전송 순서를 표현

순차적 메시지와 중첩 메시지

순차적 메시지: 1부터 시작해서 하나씩 증가시키면서 메시지의 순차적 수행을 표시

중첩 메시지: 메시지 받아 수행 중에 다른 메시지를 호출하는 경우

통신 다이어그램에서는 중첩 메시지를 자연스럽게 표현하기 힘들며 1.1과 같이 숫자를 단계적으로 사용하여 표현함

병행 메시지

동시에 메시지를 보내는 경우로 1a, 1b, 1c 와 같이 표현함

조건문이 있는 메시지와 반복적 메시지

조건문이 있는 메시지는 조건문이 참인 경우에만 메시지를 전달하며 메시지 뒤에 [ ]를 사용하여 조건을 표현함

반복적 메시지는 줋를 사용하여 반복적으로 전달되는 메시지를 표현

01
UML 상호작용 다이어그램으로 분류되지 않는 것은?
1 시퀀스 다이어그램 2 통신 다이어그램
3 타이밍 다이어그램 4 컴포넌트 다이어그램
정답 | 4
해설 | 타이밍 다이어그램은 구성 요소들이 상호작용할 때 시간적 제약을 표현하기 위한다이어그램으로 상호작용 다이어그램으로 분류된다. 이것은 실시간 또는 임베디드 시스템을
모델링할 때 사용된다.
02
UML 시퀀스 다이어그램에 관한 설명으로 잘못된 것은 무엇인가?
1 하나의 유스케이스에 있는 기능을 수행하기 위해 객체들이 어떻게 상호작용 하는가를 보
여준다.
2 통신 다이어그램과 의미적으로는 동일하다고 할 수 있다.
3 전체적으로 네트워크 형태를 띠는 다이어그램이다.
4 4+1 뷰에서 논리 뷰에 속한다.
정답 | 3
해설 | 시퀀스 다이어그램은 울타리 형태를 띠며 통신 다이어그램은 네트워크 형태를 띤다
고 말한다.
03
아래와 같은 UML 다이어그램에 관한 설명으로 적합한 것은?
1 순서도와 유사한 것으로 비즈니스 프로세스를 모델링한다.
2 객체가 가질 수 있는 상태와 상태 변화를 나타낸다.
3 하드웨어 구성과 소프트웨어 요소의 배치를 표현한다.
4 유스케이스를 수행하기 위해 객체들이 어떻게 상호 작용하는지를 표현한다.
정답 | 4
해설 | 보기 1~3은 각각 액티비티 다이어그램, 상태 머신 다이어그램, 배치 다어어그램에
관한 설명이다.
04
위 그림에서 표현되어 있지 않은 것은 무엇인가?
1 참여 객체 2 메시지의 전달
3 의존 관계 4 노트(설명)
정답 | 3
해설 | 클래스 간 또는 유스케이스 간의 의존 관계는 점선의 화살표로 표시되는데, 위 그림
에서 점선의 화살표는 의존 관계가 아니고 리턴 메시지이다.
05
UML 통신 다이어그램을 시퀀스 다이어그램과 비교하여 차이점을 설명한 것이다.
잘못된 것은 무엇인가?
1 상호작용 관계가 있는 객체들을 명확히 알 수 있다.
2 메시지의 실행 순서를 표시하기 위해 번호를 사용한다.
3 참여 객체의 생명선이 표시되지 않는다.
4 객체가 가지는 여러 상태와 상태 사이의 전환을 이용해 단일 객체의 동작을 나타낸다.
정답 | 4
해설 | 통신 다이어그램은 상호작용이 있는 객체들 간의 관계에 초점을 두기 때문에 메시
지의 실행 순서를 번호를 이용해 표시해야 한다. 4의 설명은 상태 머신 다이어그램에 관한
것이다.
06
시퀀스 다이어그램과 비교하여, UML 통신 다이어그램의 특징을 설명한 것이다. 잘못된 것은 무엇인가?
1 참여 요소들 간의 상호작용 관계를 명확히 알 수 있다.
2 메시지의 실행 순서는 위에서 아래로 진행된다.
3 참여 객체의 생명선이 표시되지 않는다.
4 메시지 송수신을 위한 통신 링크가 존재한다.
정답 | 2
해설 | 통신 다이어그램에서 메시지의 순서는 메시지 앞에 붙이는 번호로 알 수 있다.
07
다음 그림에서 명시적으로 표현되지 않은 요소는 무엇인가?
1 참여 요소
2 동기 메시지와 리턴 메시지
3 자기 메시지(self message)
4 생성과 삭제 메시지
정답 | 4
해설 | 자기 메시지는 자신에게 보내는 메시지로, 같은 생명선으로 연결되는 메시지이다.
리턴 메시지는 점선의 화살표로 표시하며 수신 객체가 해당 기능을 종료하고 결과를 송신
객체에 보내는 상황을 표현한다.
08
위 그림에 대한 설명으로 잘못된 것은?
1 참여 요소들이 메시지를 주고 받는다.
2 동기 메시지를 전달하고 있다.
3 메시지의 실행 순서는 위에서 아래로 진행된다.
4 참여 객체의 생명선을 표시하지 않았다.
정답 | 4
해설 | 그림에서 점선으로 그려진 부분이 객체의 생명선이다.
정리하기
01
상호작용 다이어그램이란 무엇인가?
시스템의 동적인 측면을 구성 요소들 간의 상호작용으로 모델링하기 위해 사용되는 다이어
그램들을 말하며 대표적인 것은 시퀀스 다이어그램과 통신 다이어그램이다.
02
시퀀스 다이어그램과 통신 다이어그램에서 관점의 차이는 무엇인가?
시퀀스 다이어그래과 통신 다이어그램은 의미적으로 동일한 정보를 표현하므로 상호 변환이
가능하다. 시퀀스 다이어그램은 메시지의 흐름과 순서에 초점을 두어 상호작용을 표현한다.
반면에 통신 다이어그램은 메시지를 주고받는 객체들 간의 관계, 즉 상호작용이 있는 객체
들의 구성을 보여준다.
03
동기 메시지와 비동기 메시지의 차이는 무엇인가?
메시지를 송신한 후, 수신 측의 리턴을 기다려야 하는 경우 동기 메시지를 전달한 것이다.
수신 측의 리턴과 관계없이 계속 작업을 수행할 수 있는 경우는 비동기 메시지를 전달한 것
이다. 동기 메시지를 표현하는 화살표는 화살표 머리가 검은 삼각형이다. Java 언어에서 스
레드를 생성하여 새로운 작업을 수행시킬 때 비동기 메시지를 전달하게 된다.
04
메시지의 실행 순서를 어떻게 표현하는가?
시퀀스 다이어그램에서는 메시지의 실행 순서가 위에서 아래로 자연스럽게 표시된다. 통신다이어그램은 네트워크 형태의 다이어그램이므로 메시지의 실행 순서를 표시하기 위해 메시
지 앞에 번호를 붙여 순서를 표시해야 한다.
05
시퀀스 다이어그램에서 사용되는 메시지 화살표의 종류를 나열하라.
아래 그림과 같으며 위에서부터 동기 메시지, 비동기 메시지, 리턴 메시지, 생성 메시지, 삭
제 메시지를 표시하는 화살표들이다.
Q1 UML 상호작용 다이어그램으로 분류되지 않는 것은?

  • 1 시퀀스 다이어그램
  • 2 통신 다이어그램
  • 3 타이밍 다이어그램
  • 4 컴포넌트 다이어그램
확인
정답 및 해설
정답입니다.
정답 : 4번
타이밍 다이어그램은 구성 요소들이 상호작용할 때 시간적 제약을 표현하기 위한 다이어그램으로 상호작용 다이어그램으로 분류된다. 이것은 실시간 또는 임베디드 시스템을 모델링할 때 사용된다. 
Q2 UML 시퀀스 다이어그램에 관한 설명으로 잘못된 것은 무엇인가?

  • 1 하나의 유스케이스가 가지는 기능을 수행하기 위해 객체들이 어떻게 상호작용하는가를 보여준다.
  • 2 통신 다이어그램과 의미적으로는 동일하다고 할 수 있다.
  • 3 전체적으로 네트워크 형태를 띠는 다이어그램이다.
  • 4 상호작용에 참여하는 요소와 상호작용의 순서를 보여준다.
확인
정답 및 해설
정답입니다.
정답 : 3번
시퀀스 다이어그램은 울타리 형태를 띠며 통신 다이어그램은 네트워크 형태를 띤다고 말한다. 
Q3 UML 통신 다이어그램을 시퀀스 다이어그램과 비교하여 차이점을 설명한 것이다. 잘못된 것은 무엇인가?

  • 1 상호작용 관계가 있는 객체들의 연결을 명확히 알 수 있다.
  • 2 메시지의 실행 순서를 표시하기 위해 번호를 사용한다.
  • 3 참여 객체의 생명선이 표시되지 않는다.
  • 4 객체가 가지는 여러 상태와 상태 사이의 전환을 이용하여 단일 객체의 동작을 나타낸다.
확인
정답 및 해설
정답입니다.
정답 : 4번
통신 다이어그램은 상호작용이 있는 객체들 간의 관계에 초점을 두기 때문에 메시지의 실행 순서를 번호를 이용해 표시해야 한다. ④의 설명은 상태 머신 다이어그램에 관한 것이다. 
Q4 다음 그림에서 명시적으로 표현되지 않은 요소는 무엇인가?



  • 1 참여 요소
  • 2 동기 메시지와 리턴 메시지
  • 3 자기 메시지(self message)
  • 4 객체 생성과 삭제 메시지
확인
정답 및 해설
정답입니다.
정답 : 4번
메시지 종류에 따른 화살표의 선과 머리 모양을 확인해야 한다.
객체 생성과 삭제 메시지에는 보통 《create》 와 《destroy》 스테레오 타입을 사용한다. 
Q5 다음 그림에 대한 설명으로 잘못된 것은?



  • 1 참여 요소들이 메시지를 주고받는다.
  • 2 비동기 메시지를 전달하고 있다.
  • 3 메시지의 실행 순서는 위에서 아래로 진행된다.
  • 4 :ContentManagementSystem은 참여 요소로서 서브시스템이다.
확인
정답 및 해설
정답입니다.
정답 : 2번
그림에서 있는 메시지는 리턴 메시지 1개를 제외하면 모두 동기 메시지들이다. :ContentManagementSystem는 서브시스템으로서 이 부분은 보다 상세히 분리된 시퀀스 다이어그램으로 작성될 수 있을 것이다. 


댓글