컴퓨터(Computer Science)/소프트웨어공학(Software engineering)

프로젝트 계획(9-3) - 동적 모델링 (dynamic modeling) [소프트웨어공학]

게임이 더 좋아 2020. 4. 25. 16:47
반응형
728x170

 

 

 

이번엔 상태 다이어그램과 액티비티 다이어그램을 알아볼 것이다.

한 번 배워보자

 

 


우선 상태 다이어그램부터 배워보자

 

상태 다이어그램은 객체가 가질 수 있는 가능한 상태들과 그 변화를 나타낸 것으로 

외부 이벤트에 의한 자극에 대하여 객체들의 반응할 때 어떻게 상태의 변화가 일어나는지를 모델링 한 것이다.

 

 

다시 이벤트와 상태를 설명하겠다.

이벤트 : 서브시스템 또는 객체나 컴포넌트에 대하여 요청이나 관심이 일어난 것
상태 : 이벤트의 발생으로 들어가거나 빠져 나오게 되는 서브시스템 또는 객체의 조건을 추상적으로 이름 붙여 놓은 것

 

**UML을 이용하기 전에 미리 서브시스템이나 객체가 어떤 상태를 가질 수 있는지, 또한 그런 상태에 들어가게 하는 조건, 즉 외부 이벤트나 오퍼레이션이 무엇인지 파악해야 한다.

 

**이러한 질문들을 다이어그램 그리면서 항상 해야한다.

1. 어떤 외부 자극이 관심의 대상이며 영향 받는 객체의 상태는 무엇인가?

2. 상태 종속적인 객체의 반응이 어떻게 변환하는가?

3. 상태를 체크하기 위한 속성의 조건은 무엇인가?

 

 

또 다시 정의하자면

동작을 수신 이벤트와 이에 대한 응답을 기반으로 상태 사이의 전화으로 모델링을 하는 것

 

 

상태 다이어그램의 기본 요소들은 이렇다

 

 


 

 

 

예를 들어서 이해해보자

 

비디오 대여점의 비디오의 상태변화를 알아보자

 

Video가 가질 수 있는 상태는 Not rented, Being checked out, Rented, Returned 4가지가 있다. 

 

*Reserved 는 비디오 반납 전 예약하는 서비스를 말한다.

 

Video를 다른 상태로 만들 수 있는 것은 Event 이다. 

그러한 Event는 scan( ), rent( ), returned( )가 있겠다. 

 

즉 Video 객체의 상태는 객체가 가지는 속성과 관련되며 이벤트는 메시지를 주고 받으면서 발생한다.

 

**그래서 상태 다이어그램은 많은 속성값과 메시지를 가진 다이나믹한 작용을 하는 객체에게만 의미가 있다.

 

++ 저기 큰 검정 동그라미는 시작 노드라고 할 수 있다. 종료 노드는 계란 후라이 닮은거...

 

 

 


위에 상태 다이어그램은 다이나믹해야 의미가 있다고 했다. 

그렇지만 클래스가 가진 속성의 특성에 따라 적용하기 어려운 것도 있다.

어떤 조건을 가져야 상태 다이어그램을 적용하기 편할까?

 

1. 속성의 값으로 가질 수 있는 종류가 적어야한다.

2. 속성의 값에 따라 허용되는 오퍼레이션이 제한되어야 한다.

 

??? 무슨 뜻???

 

예시를 살펴보자

 

속성의 값 age  있겠다.

조건문 [ .. ] 이 있다.  Event는 없지만 속성만 파악해서 상태를 바꿔버리는 것이다.

 

 

상태다이어그램으로 표현하기 너무 좋다 ㅎㅎ

 

 

**얘도 일관성 체크해줘야한다

 

상태 다이어그램과 클래스 다이어그램을 크로스 체크해주자.

 

 


이제는 액티비티 다이어그램을 보자

 

액티비티 다이어그램은 시스템의 동적인 부분을 모델링 하는 목적으로 사용 되며 액티비티 사이의 제어 흐름을 보여주는 일종의 흐름도 이다.

 

** 액티비티 다이어그램의 목적은

1. 시스템의 수준에서 시스템과 상호작용하는 각 액터의 관점에서 모델링

(시스템의 객체 사이에 어떤 제어 흐름 또는 동기화가 필요한지 병렬 수행 가능성은 있는지 분석)

 

2. 복잡한 오퍼레이션의 수행흐름을 표현

(메소드 구현이 복잡해서  Java 언어의 스레드 개념과 같이 병행 수행 개념을 이용할 경우 좋음)

 

 

 

 

*Activity = operation 집합

 

**액티비티 다이어그램은 액션이 어떻게 이루어지며 무엇을 수행하고 언제 발생하며 어떤 액션과 동기화 또는 병렬 수행되는 지를 나타낸다

 

 

++ 둥근 사각현은 액티비티를 의미

++화살표는 액티비티 사이의 전환을 의미

++ 굵은 막대는 제어 흐름의 동기화를 뜻함

 

또 예를 보면서 살펴볼까?

 

어떤 동기화가 필요한지 알아보기 딱 좋은 다이어그램이더라

 

 

 

복잡한 오퍼레이션이라 이렇게 표현하는 것이 좋더라 ㅎㅎ

 

 

 

반응형
그리드형