Douglas' Space
State Model 본문
1. 들어가면서
여러분의 손목에 이 스마트 워치가 있으신가요?
스마트워치는 사람들에게 최초의 웨어러블 컴퓨터로서의 역할을 하고 있죠. 그런데 어느 날 밤 자고 있는데 카톡이 와서 붕붕 울린다면? 신경질이 날 수 있을 것입니다.
제가 처음 L사의 스마트워치를 사용할 때 경험했던 이야기입니다. 그런데 옆에 이런 이야기를 듣던 A사 스마트워치를 차고 있던 사람이 자랑하더라구요. 그 스마트워치는 밤에는 카톡이 와도 울리지 않는다고.
이게 무슨 의미일까요? 이럴 때 우리는 이 놈 똑똑한데 이야기하죠. 사실 이 놈이 똑똑한게 아니라 UX관점에서 다양하게 잘 구분하여 상태를 관리하고 상태에 따라 다르게 작동하게 개발한 똑똑한 개발자 덕분일 것입니다. 이렇게 시스템의 상태와 모드를 잘 분석하고 반영하는 것이 시스템의 신뢰성과 안전성에 많은 차이를 가져 옵니다.
state model은 시스템의 행위를 표현하는 가장 최상위 모델입니다. 위의 스마트워치 처럼 세부적인 기능을 설명하는 것이 아니라 시스템이 동작하는 운영개념이나 절차를 보이지 않는 시스템의 다양한 상태를 기준으로 표현하는 모델입니다.
2. State와 Mode
State(상태)와 mode(모드)에 대해서 다양한 정의가 존재합니다. 그리고 굉장히 어려운 주제입니다. 개념이 모호하기도 복잡하기도 합니다. 그래도 다음의 정의가 가장 적합한 정의가 아닌가 생각합니다.
상태는 시스템의 전반적인 조건으로 일반적인 시스템에서는 시스템 내의 data object들이 갖는 값을 의미하기도 합니다. 모드는 시스템의 어떤 기능이 수행되는 방식이라고 정의할 수 있는데, 사실 정의로 이해하는 것이 쉽지가 않은 것 같습니다.
이의 정의에 의한 구분을 다르게 설명을 하면, 상태는 그냥 조건 자체의 정적인 요소를 의미하고, 모드는 어떤 조건에 따라 같은 기능이 다르게 동작하는 동적인 요소가 있는 것 같습니다. 이에 대한 이해는 추후를 좀더 진행하면서 구체화해 보도록 하겠습니다.
일단 상태와 모드는 어떤 이벤트에 따라 변경이 이루지기 때문에 다음과 같은 state transition diagram 또는 줄여서 state diagram으로 표현합니다.
사각형은 상태 또는 모드를 나타내고, 화살표는 상태 또는 모드의 전이를 나타냅니다. 하나의 상태 또는 모드에서 어떤 이벤트가 발생하면 다른 상태 또는 모드로 전이된다는 것을 의미합니다. (state diagram의 상세한 내용은 UML강좌를 참조)
시스템은 상태만 존재할 수도 있고, 모드만 존재할 수도 있습니다. 그리고 상태와 모드는 한 상태에 여러 모드가 존재할 수도 있고, 한 모드내에 여러 상태가 존재할 수도 있습니다. 이를 임의적이라고 합니다. 상태와 모드는 그 만큼 구분이 쉽지가 않은 것 같습니다. 그러나 일반적으로 상태내에 모드가 존재하는 것이 많은 것 같습니다.
3. state model의 예(1)
아래는 state diagram의 예를 보여주고 있습니다.
사각형 3개의 상태가 있고, 원으로 표현되는 특별한 상태(의사상태)인 initial(초기) 및 final(종료) 상태가 존재합니다. 초기 상태에서 "power on"이라는 이벤트가 발생하면 "설정상태"로 전이됨을 의미합니다. 이때 전이할 때 특정 활동(연산)을 수행할 수 있습니다. ("/" 다음에 전이할 때의 수행할 연산을 표시) "감지상태"에서는 sensing이라는 이벤트가 발생하면 특정 기능을 수행하고 다시 "감지상태"를 유지한다는 것을 표현하고 있습니다. 이벤트가 발생할 때 다양한 조건이 존재하는 경우는 Guard라고 하여 "[...]" 괄호안의 조건을 기입합니다.
4. state model의 예(2)
아래 state diagram은 조금 더 복잡한 state model을 표현하고 있습니다. "운영상태"는 하위에 모드들을 포함하고 있습니다. 다시 말해 시스템이 "운영상태"에 있게되면 "전술모드", "훈련모드", "정비모드"라는 3개의 모드에서 동작한다는 것을 의미합니다. 특히 3개의 모드는 선으로 분리되어 둘로 나뉘어져 있는데, 이는 동시에 존재할 수 있는 상태 또는 모드를 의미합니다. 즉 "전술모드"는 다른 모드 들과 동시에 존재할 수 있다는 것을 의미합니다.
사실 상태나 모드는 일시적인 상태을 표현하는 것이 아니라 시간적으로 특정 이벤트가 발생하지 않으면 유지되는 정적것을 표현하는 것입니다만 시스템의 부가적인 설명을 강조하고자 할 때 일시적인 전이를 상태로 표현하기도 합니다. "시스템부팅"이라는 것은 일시적인 동작을 나타내는 것이지만 시스템의 운영개념상의 강조를 위해 상태로 모델링하였습니다. 특히 마름모로 표현된 조건의사상태에서 BIT라는 결과에 따라 상태가 전이되는 것을 표현하기 위해 "시스템부팅"상태롤 일시적 전이상의 행위이지만 상태로 모델링하였습니다.
"시스템부팅"과 "대기상태" 안에는 entry, do, exit와 같은 키워드가 존재하는데, 이는 UML state diagram의 키워드로서 entry는 상태에 진입시 수행하는 연산, do는 상태에 있을 때 주기적으로 수행하는 연산을 표현하고 있습니다. exit는 entry와 반대로 상태에서 벗어 날때 수행하는 연산을 의미합니다.
'Development Diary > System Requirements Analysis Model' 카테고리의 다른 글
Non-functional requirements (0) | 2023.01.29 |
---|---|
Interface Model (0) | 2022.07.02 |
Use-Case Pattern (0) | 2022.07.02 |
Functional Model (0) | 2022.06.04 |
Context Model (0) | 2022.05.05 |