
3.6 动态特性建模
3.6.1 状态转移网络
状态转移网络(State Transition Network,STN)用于描述用户和系统之间的对话已经有很多年的历史,它的第一次使用可以追溯到20世纪60年代后期,在20世纪70年代后期被开发为一种工具。STN可被用于探讨菜单、图标和工具条等屏幕元素,还可以展示对外围设备的操作。状态转移网络最常用的形式是状态转移图(State Transition Diagram,STD)。状态转移图是有向图,图中的节点表示系统的各种状态,图中的边表示状态之间可能的转移。
STN中的状态(用圆圈表示)之间通过转移(用带方向箭头的线段表示)互相连接,转移被事件(转移线段上的标记)触发。同时STN中有开始状态和结束状态两个状态。这两个状态是STN的起始和终止,它们可以与系统其他部分相连接。图3-10为一个状态转移图示例。

图3-10 状态转移图示例
STN既适合表达用户选择顺序的操作,也适合表达循环操作。在图3-10中,事件1使用户从状态1到状态2,事件4使用户从状态3′到状态2′。STN还可以表示手柄、鼠标等外围设备的操作。这样可以帮助设计者确定设备在应用中是否合适,还可以指导用于新型界面中指点设备的开发。
假设一个简单的鼠标画图工具有一个菜单,其中有两个选项:“Circle”(画圆)和“Line”(画线),状态转移网络(STN)如图3-11所示。如果选择Circle,可以对平面上的两个点进行单击,第一个点是圆的圆心,第二个点在圆的圆周上。在单击第一个点之后,系统在这个点和当前鼠标位置之间画了一条“橡皮筋”直线,在单击第二点之后,画出圆。“Line”选项对应画折线的功能,也就是说,用户可以选择平面上任意数量的点,系统用直线连接这些点,最后一个用鼠标的双击表达。系统再一次在相继两个鼠标点位置之间用“橡皮筋”连接。
图中每个圆圈表达一个系统可能的“状态”。如状态Menu表示系统正在等待用户选择Circle或Line的一种状态,Circle 1(2)表示用户进入选择圆心后正在等待确定圆周上一个点的状态。

图3-11 鼠标画图工具的状态转移网络
状态之间的箭头叫作转移。这些转移用触发转移的用户动作以及系统的响应作为标记。如状态Circle 1是系统等待用户选择圆心的状态。如果用户选择了一个点,系统转移到状态Circle 2,并且系统在随后的鼠标位置和圆心之间画出一条“橡皮筋”直线。从这个状态,用户可以单击另一个点,随后系统画出一个圆,转移到了结束状态。从这里可以看出,STN能够表达用户动作和系统相应的顺序。
在状态Circle 1的时候,用户没有其他选择,仅有一个跟随的状态,对应选择一个点。而在某些状态,用户有几个选择。例如,在状态Menu,用户可以选择“Circle”,这样系统转移到状态Circle 1;用户可以选择“Line”,这样系统转移到状态Line 1。也就是说,STN能够描述用户的选择。
在状态Line 2也有两个选择,用户或者双击一个点完成画折线,系统转移到结束状态;或者单击一点,在折线绘画中添加一个新点。在后一种情况中,转移回到了状态Line 2,这样继续迭代,系统在状态Line 2接受任意数量的点加入折线,直到用户双击一个点为止。