状态图基础
状态图类别
在我们开始讨论状态图设计方法以前,分清楚两种常用的状态图是很重要的。状态图(StateDiagrams)和扩展状态图(StateCharts)(后者是前者的一个扩展)。这两种类型我们都将讨论。和BetterStatePro都支持这两种类型,不过,我们关注的主要是扩展状态图。
传统上,有限状态机(FSMs)和它们的图表副本、状态图用来详细说明和设计交互(子)系统。因为它具有高度可视化和直观的特性,所以被普遍接受。FSMs可以描述有限和无限序列,这一特性再加上它的可视化功能,使它成为电子工业最受欢迎的形式之一。
传统的状态图
状态图比相应的文本解决方案更易于设计、理解、修改和文档化。传统的状态图在过去几年一直没有大的变化,因此,在今天的交互系统应用中存在局限性。在本节的后面,你将发现扩展状态图弥补了这些缺陷。传统状态图的局限性包括:
传统状态图很单调,它们不适合自顶向下的设计和信息隐藏。而且,自顶向下的设计概念需要能够交互的软件,这样可以让用户通过操作和浏览复杂的设计来获取信息。
传统的有限状态机必须是完全顺序的。然而,应用程序并不是这样。现代的交互子系统(我们称它为控制器)必须能够对环境中大多数实体发出的信号进行响应。考虑一个电话应答机控制器在接第一个电话时第二个电话等待的情况。一个传统的FSM需要计算第一个和第二个打电话者所有可能的状态组合,这会导致我们通常所说的状态溢出现象。
扩展状态图
为了弥补状态图设计的这些限制,DavidHarel在他的论文“扩展状态图:解决复杂系统的可视化方法”中描述了扩展状态图。该论文发表在计算机编程科学(1987)上。在增加了层次、并行、优先级和同步等功能的同时,扩展状态图保留了有限状态图的可视化、直观等特性。
下文讨论可用于传统状态图和扩展状态图的基础设计方法。后一部分讨论的是扩展状态图特有的设计方法。
状态图符号
状态图的主要组成部分是状态和代表状态改变和转换的箭头。状态通过大量不同类型的符号图形化表示。这些符号包括圆、矩形、圆角矩形等。BetterState使用圆角矩形来表现系统状态。
系统状态
在Webster的NewWorldDictionary(新世界字典)中对“状态”的定义如下:
“在给定时间、方法和行为的情况下,与某人或某件事相关的一组环境变量或属性集”