带有示例的状态图综合指南
状态机图是一种行为,它指定对象在其生命周期内为响应事件而访问的状态序列,以及对这些事件的响应。
状态
状态是对象生命周期中的一个条件,在此期间它满足某些条件、执行某些活动或等待某些外部事件
例子:
国家特征
- 状态表示对象在特定时间点的状态。
- 对象(或系统)可以被视为从一个状态移动到另一个状态
- 模型元素生命周期中满足某些条件的点,其中执行某些特定操作或等待某些事件
下图显示了状态的详细描述。状态通过内部操作(做、帮助)进行扩展。与其他动作相比,这些动作可以被打断。如果发生“取消”,则执行或帮助操作将被中断。内部操作在“entry”部分之后执行,并在状态离开时中止。
初始状态和最终状态
- 状态机图的 初始状态 ,称为初始伪状态,用实心圆表示。从此状态的转换将显示第一个真实状态
- 状态机图的 最终状态 显示为同心圆。开环状态机表示可能在系统终止之前终止的对象,而闭环状态机图没有最终状态;如果是这种情况,则该对象将一直存在,直到整个系统终止。
例子:
事件
事件是对重大事件的说明。对于状态机,事件是可以触发状态转换的刺激的发生。
过渡
转换是两种状态之间的关系,表示处于第一种状态的对象将在满足指定的一组事件和条件时执行某些动作并进入第二种状态。
转换具有: 转换组件,包括 (1) 源状态 (2) 事件触发器 (3) 动作 (4) 目标状态
自我转换
自转移是源状态和目标状态相同的转移
行动
动作是可执行的、原子的(参考状态机)计算。动作可能包括操作、创建或销毁其他对象,或向其他对象发送信号(事件)
库示例
下图显示了一个简单的状态机图。这种图的主要组成部分是:
- 状态:示例有两种状态:“在借”和“在架”。
- 初始状态:这是系统启动的状态。
- 转换:转换描述可能的状态变化。该图有两个过渡:从“外借”到“货架上”,反之亦然。
- 事件:事件标记在转换上。它们代表在转换中执行的事件。当从状态“出借”移动到状态“上架”时,会执行事件“returned()”。
动作是对状态变量的修改。在下面的示例中,对转换指定了操作。当进行从“在架上”到“借出”的过渡时,状态变量账簿减少。
可以在转换中指定动作,也可以在状态中指定动作。在这种情况下,可以指定在进入或离开状态时是否必须执行该操作。下图中显示了这些选项。
- 第一个选项显示进行转换时的操作规范。该操作是在状态更改时执行的。
- 第二个选项显示状态中动作的规范。“entry”关键字表示进入状态时必须执行的动作。
- 最后,第三个选项显示了如何指定在离开状态时采取的操作。注意“exit”关键字。
简单状态机图符号
状态机图——高级概念
约束
可以向转换添加约束。考虑下图。约束“[not last copy]”和“[last copy]”用于区分带有事件“copyBorrowed()”的两个转换。语义是当约束为真时启用转换。
子状态
简单状态是没有子结构的状态。具有子状态(嵌套状态)的状态称为复合状态。子状态可以嵌套到任何级别。嵌套状态机最多可以有一个初始状态和一个最终状态。子状态用于通过显示某些状态仅在特定上下文(封闭状态)内才可能来简化复杂的平面状态机。
子状态示例 – 加热器
状态机图通常用于派生测试用例,这里列出了可能的测试思路:
- 空闲状态接收太热事件
- 空闲状态接收 Too Cool 事件
- Cooling/Startup 状态接收 Compressor Running 事件
- Cooling/Ready 状态接收 Fan Running 事件
- Cooling/Running 状态接收 OK 事件
- 冷却/运行状态接收故障事件
- 失败状态接收失败清除事件
- 加热状态接收 OK 事件
- 加热状态接收失败事件
历史状态
除非另有说明,否则当转换进入复合状态时, 嵌套状态机的操作会从初始状态重新开始 (除非转换直接针对子状态)。历史状态允许状态机 重新进入在离开 复合状态之前处于活动状态的最后一个子状态。下图展示了一个历史状态使用的例子。
并发状态
如上所述,状态机图中的状态可以嵌套。相关的状态可以组合成一个单一的复合状态。当一个活动涉及并发子活动时,在其他活动中嵌套状态是必要的。以下状态机图对具有两个并发子状态的拍卖进行建模:处理投标和授权支付限额。
并发状态机图示例——拍卖过程
在此示例中,首先进入拍卖的状态机需要在开始时分叉成两个单独的开始线程。每个子状态都有一个退出状态来标记线程的结束。除非有异常退出(Canceled 或 Rejected),否则当两个子状态都退出时才会退出复合状态。
相关链接
使用 Visual Paradigm Online 自己动手做状态图示例
- 在线状态机图软件中可编辑的免费状态机图示例和模板: Visual Paradigm Online。
- 使用模板作为起点来创建您自己的状态机图。
免费的 UML 软件工具
您已经了解了状态机图是什么以及如何绘制状态机图。是时候绘制自己的状态机图了。获取免费的 UML 软件 Visual Paradigm Community Edition,并使用免费的状态机图工具创建您自己的状态机图。它易于使用且直观。
posted on 2022-02-16 16:15 Lynch_Warren 阅读(300) 评论(0) 编辑 收藏 举报