一、为何要用状态转换图(STD)
在制定需求分析任务的时候,要编写软件需求规格说明书,其中可能会用到结构化分析方法的几个主要模型,当中就应该建立软件系统的行为模型(即状态转换图)
二、何为STD
为了反映事物的变化规律,在需求分析中要建立系统的动态模型。
状态转换图通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
状态转换图还指明了作为特定事件的结果,系统将做哪些动作(例如,处理数据)。
三、状态、事件
状态是可以被观察到的系统行为模式,规定了系统对事件的响应方式,既可以是做一个(一系列)动作,也可以是仅仅改变系统本身的状态,或者都包括。
事件是在某个特定时刻发生的事情,对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象。如移动或点击鼠标,内部时钟表明某个规定时间段已经过去。
四、符号
下面介绍的概念有些抽象(嘿嘿照本宣科搬过来的),可以从实际例子中去体会实际用法
初态:实心圆
终态:同心圆
中间状态:圆角矩形,可用水平横线分为上中下三部分,上部分(必有)是状态名称,中间部分(可选)是状态变量的名字和值,下部分(可选)是活动表(下文做语法解释)
活动表语法格式:事件名 /动作表达式,事件名经常使用下述3种标准事件:entry事件指定进入该状态的动作;exit事件指定退出该状态的动作,do事件指定在该状态下的动作。动作表达式描述应做的具体动作。
状态转换:带箭头的连线,状态变化通常由事件触发,应标出触发转换的事件表达式(下文做语法解释),不标明则代表在源状态内部活动执行完自动触发转换。
事件表达式语法格式:事件说明 【布尔表达式】/动作表达式
注:[]中括号的意思代表可有可无
五、实际例子
例一
电话系统状态图:没有人打电话时电话处于闲置状态,有人拿起听筒则进入拨号状态,到达此状态后,电话行为是响起拨号音并计时;若拿起听筒的人不想打了把听筒放下(挂断),又回到闲置状态;若拿起时间比较长不拨号(超时),则进入超时状态…
例二
复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;
如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;
如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图描绘复印机的行为。