UML--状态图


Posted on May 25, 2008


1. 状态图概述

状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。

状态图是通过类对象的生命周期建立模型来描述对象随时间变化的状态行为。状态图显示了一个状态机,它基本上是一个状态机中的元素地一个投影,这也意味着状态图包括状态机的所有特性。

状态图由状态、事件、状态之间转换组成。

2. 状态机(State Machine)

    状态机用于对模型元素的动态行为进行建模。状态机由状态组成,各状态由转移连接在一起。而状态是对象执行某项活动或等待某个事件时的条件。状态描述了一个类对象生命周期的一个时间段。

3. 转移

状态图通过对对象的状态以及状态间的转移建模来展现系统动态行为。在UML中,转化由5个部分组成,他们分别是:状态源(Source State)、目标状态(Target State)、触发事件(Trigger Event)、监护条件(Guard Condition)、动作(Action)。

转移是两个状态之间的关系,它表示当发生指定事件并且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态。当发生这种状态变更时,即“触发”了转移。在触发转移之前,可认为对象处于“源”状态;在触发转移之后,可认为对象处于“目标”状态。

4. 状态指南

状态是一个实体的行为模式的某个阶段。状态通过实体的属性值表示。

(1)状态名称要简单但应具有描述性。

(2)避免“黑洞”状态。黑洞状态是那种只有变换进来但没有任何变换发出的状态,这种情况要么由于该状态是一个最终状态,要么就是已经错过了一个或多个变换。

(3)避免“奇迹”状态。奇迹状态是那种只有变化发出但没有任何变换进来的状态,这种情况要么由于该状态是一个起点,要么就是已经错过了一个或多个变换。

5. 子状态建模指南

(1)为复杂的目标建模子状态

(2)把通用的子状态变换放在一起

(3)为复杂的实体创建一个分层的状态图

(4)最高阶的状态图总有初始态和最终态

(5)变化和动作

(6)用实现语言的命名规则命名软件动作

(7)用叙述性文字命名角色动作

(8)只有对所有入口变换都合适时才注明入口动作

(9)只有对所有出口变换都合适时才注明出口动作

(10)只有当想终止并再进入该状态时才建模递归变换

(11)用过去命名转换事件

(12)把转移标记放在接近源状态的地方

(13)以转换方向为基础放置变换标记

(14)警戒点不应该重叠

(15)为可视化的定位警戒点而引入接合点

(16)警戒点不必配套

(17)一致的命名警戒点

 

在线学习答案查询入口
微信扫一扫
微信扫码联系