▶ 상태 다이어그램(State Diagram)이란 ?

사건이나 시간에 따라 시스템 객체 상태 변화를 표현한 그림. "단일 객체"의 상태를 나타냄. 시스템의 변화를 잡아내기 위하여 사용. 분석가, 설계자, 개발자 들이 시스템 내의 객체 행동을 이해하는데 큰 도움을 줌.


◎상태 다이어그램의 중요성

- 한 객체에서 일어날 수 있는 모든 변화의 양상을 잡아내어 모델링 함. 분석가, 설계자, 개발자들이 시스템내의 객체 행동을 이해하는데 도움을 줌. 클래스 다이어그램이 정적인 모습을 보여주는데 반해, 상태 다이어그램은 각 객체의 행동의 동적인 상황을 보여줌. 개발자 입장에선 각 객체들이 어떻게 행동하는지 쉽게 정확히 파악할 수 있게 만듦으로써 객체 구현에 있어서 고민을 덜어줌.


표현 

- 상태의 표현 : 모서리가 둥근 사각형으로 표현

- 상태 전이의 시작점 : 속을 칠한 원으로 표현

- 상태 전이의 종료점 : 속을 칠한 원을 둘러싼 원으로 표현 

- 상태 전이선 : 화살표 머리가 달린 실선


◎ 상태 아이콘에 넣는 정보

이름, 속성, 오퍼레이션의 세 영역으로 나누어 상세한 정보를 넣을 수 있다. 


이름 - 상태 이름 (필수) 

속성 - 상태 변수 (옵션) : 타이머나 카운터 처럼 상태 진행에 도움을 주는 데이터

오퍼레이션 - 활동(Activity - 옵션) : 사건(Event)과 동작(action)으로 이루어짐

예) 팩스 기계의 상태 정보의 표현과 전이

◎ 상태전이 선에 추가되는 정보 : 사건과 동작

사건(촉발사건 - Trigger event) : 전이가 일어나는 원인을 제공

연산(동작 -action) 실제로 수행되어 상태변화를 일으키는 연산


사건과 동작은 상태 전이 선에 가깝게 붙여준다. '/'을 사용하여 사건과 동작을 구분시킨다. 

◎ 상태 전이 선에 추가되는 정보 : 전이조건

어떤 조건에 따라 상태가 전이 될 때. 

조건에 따른 상태 전이의 분기가 일어날 때.

'[ ]' 를 사용하여 조건을 명시함

 

예) 앞의 GUI예에서 어떤 조건을 만족하면 스크린 세이버가 작동하는 상태로 됨.

◎ 하위상태 : 상태안에 상태가 있을때, 안에 있는 상태를 말함.


◎ 순차적 하위상태

- 하위 상태의 전이가 순차적으로 이루어짐. 

예) 앞의 GUI 예제에서 [작동] 상태의 하위 상태 전이를 나타낸다. 즉, [작동] 상태인 동안 사용자의 입력을 화면에 표현하는 하위 상태들의 전이 과정을 표현한 것이다. 

◎ 동시적 하위상태

- 하위 상태의 동시 진행성을 표현

동시 진행하는 순차적 하위 상태를 점선으로 구분지음

예) 위의 GUI 예제에서 "사용자 입력을 화면에 표현"하는 하위 상태전이 단계와 더불어 "시스템 내의 시간을 정해진 간격마다 화면에 표현" 하는 또 다른 하위 상태 전이가 일어나는 과정을 나타냄.

즉, 우리가 워드를 치는 동안 윈도우의 "시작 메뉴바" 오른쪽에 시계는 분 마다 바뀐 값을 표현하는 것을 말함

◎ 이력상태 (History State) 

주어진 객체가 복합 상태를 벗어날 때 활성중인 하위 상태를 기억해 두는 상태.


표현 : 원으로 둘러싸인 "H"문자로 표현

예) GUI 작동 중 일정 시간에 의해 스크린 세이버가 작동하다가 다시 원 상태로 되돌아 올 때 이전의 기억된 상태로 되돌아 오는 것을 나타냄


◎ 메시지와 신호 (Message & Signal)

메시지 : 한 객체가 다른 객체에게 전송하는 메시지 즉, 상태전이를 일으키는 촉발 사건을 말함

신호 : 메시지를 받는 객체의 상태 다이어그램에서 전이를 촉발시키는 메시지를 말함.

신호객체 (Signal Object)는 속성을 가지고 있다. 신호는 객체이기 때문에, 기존의 신호를 상속받아 새 신호를 만드는 일도 가능하다.