본문 바로가기

강의 정리/소프트웨어 분석 및 설계

소프트웨어 분석 및 설계 (7) 상태 모델

01. 상태 모델이란?

"시스템 내의 객체들은 사건/시간의 흐름에 따라 자신의 상태를 바꾼다."

: 시간의 흐름에 따라 변하는 객체의 값을 의미.

 

- 이를 표현할 수 있는 행위모델 필요.

- 시스템의 변화를 모델링하는 수단.

- 시작, 상태전이, 끝이 있다.

- 유한상태기계로도 표현.

 

객체의 상태는 속성의 값과 그 시간 특정한 포인트에 있는 다른 객체와의 관계로 정의된다. 객체의 속성은 상태에 영향을 주지만 - 그러나, 모든 속성이 변화를 일으키는 것은 아니다.
이벤트라는 것은 특정한 시간에 발생하는 어떤 것인데, 이는 객체의 상태를 변경한다.
transition은 한 상태에서 다른 상태로의 객체의 변화를 묘사하는 관계이다.

 

1. 상태의 예시

1) 스위치를 킬 때마다 온/오프가 상태.

2) 리모컨 버튼을 누를 때마다 채널 변경.

3) 세탁기는 시간이 흐르면 세탁 -> 헹굼으로 변경.

 

UML 상태 다이어그램은 시스템의 변화를 잡아낸다. 단일 객체를 대상으로 한다!

 

- 자동차 오퍼레이션/상태

정지상태 > 주행준비상태 > 주행상태

 

어느 부분에서 상태를 추려낼 수 있는가?

 

- Patient 객체의 상태모델

 

환자라는 객체가 들어와서/퇴원될 때까지 어떤 과정을 거치는지 알 수 있다.

4가지 상태가 구분되었다.

각각의 상태일때: 환자들은 무언가를 해야 한다.

상태를 몇개로 구분하냐보다, 상태에 들어갔을때 '무슨 일을 해야 하는가'가 결정되어야 한다.

 

Entering) 병원 시스템에 자신의 정보 등록이 요구됨. 해당 환자에 대한 의사 배정.

 

 

2. 상태모델의 구성

 

 

- 클래스 다이어그램 -> 상속 다이어그램.

 

클래스 다이어그램의 정보에 직접적인 영향을 받는 부분도 있다.

 

 

3. 상태의 표현

1) 상태의 구성: 상태이름, 상태변수, 활동.

2) 상태변수: 상태 진행에 도움을 주는 데이터.

 

클래스 구성과 유사.

그러나, 클래스는 어느 순간에 시간의 흐름에 따라/이벤트의 결과에 따라 상태가 변한다.

'클래스 자체'가 변하는 것은 아니다.

 

3) 활동: 사건과 동작으로 구성.

- Entry: 시스템이 상태로 들어갈 때 수행.

- Exit: 시스템에 상태에서 빠져 나올 때 수행.

- Do: 상태에 남아있는 동안 수행.

 

 

- 예시: 팩스 상태

 

- 팩스: 상태변수표현

 

4. 상태전이

1) 화살표 정보: 전이가 일어나는 원인을 제공하는 사건을 표시. (촉발사건/동작)

2) 촉발없는 사건(triggerless event): 이벤트가 발생하지 않아도 전이가 일어남.

 

3) 전이조건

 

[is Timeout].

 

 

5. 상태의 변화

: 복잡한 상태를 표현하는데 이용.

- 하위 상태의 종류: 순차적 하위상태/동시적 하위상태.

 

-> 중복 상태의 표현

동시적 하위상태/순차적 하위상태를 중복해 표현 가능.

 

 

- 전화기의 상태도의 예

6. 이력상태

: 이전상태를 모두 기억하고 싶은 경우 사용.

- Deep history: 모든 이력을 기억함

- Shallow history: 바로 전 단계만 기억함

 

7. UML 2.0의 변화

연결포인트의 도입: 진입포인트, 탈출포인트.

 

- 상태모델: 금고 모델

 

명세가 서로 동일해야만 한다.

 

- Transition table: 금고 모델을 테이블 형태로 변환한 것

 

명세/다이어그램/테이블은 모두 동일.

이 세개로 무슨 일이 가능한가?

Simulation이 가능하다.

 

즉, "모델의 검증".

 

 

- 상태 모델링: 마이크로웨이브 오븐