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이 가능하다.
즉, "모델의 검증".
- 상태 모델링: 마이크로웨이브 오븐
'강의 정리 > 소프트웨어 분석 및 설계' 카테고리의 다른 글
소프트웨어 분석 및 설계 중간 정리 (1) | 2024.04.18 |
---|---|
소프트웨어 분석 및 설계 (2) 모델링 (0) | 2024.04.16 |
소프트웨어 분석 및 설계 (6) 유스케이스 모델2 (0) | 2024.04.08 |
소프트웨어 분석 및 설계 (5) 유스케이스 모델 (0) | 2024.04.02 |
소프트웨어 분석 및 설계 (4) 클래스 연관의 이해와 활용 (0) | 2024.03.25 |