UML状态机图完全指南

一个实体的行为不仅直接取决于其输入,还取决于其先前的状态。实体的过去历史最好通过一个有限状态机图或传统上称为自动机UML状态机图(有时也称为状态图、状态机或状态图)展示了实体的不同状态。状态机图还可以展示实体如何通过从一个状态转换到另一个状态来响应各种事件。状态机图是一种用于建模系统动态特性的UML图。

State Machine Diagram Hierarchy


🚀 更快、更好、更轻松地学习UML

您正在寻找一款免费的UML工具,以便更快、更轻松、更迅速地学习UML吗?Visual Paradigm 社区版是一款支持所有UML图类型的UML软件。它是一款荣获国际奖项的UML建模工具,同时又易于使用、直观且完全免费。

免费下载


为什么使用状态机图?

状态机图通常用于描述对象的状态依赖行为对象对同一事件的响应会因其所处状态的不同而不同。状态机图通常应用于对象,但也可以应用于任何与其他实体具有行为关系的元素,例如:参与者、用例、方法、子系统、系统等,它们通常与交互图(通常是顺序图)结合使用。

实际示例:银行账户取款

假设您的银行账户中有10万美元。取款函数的行为将如下:

余额 := 余额 - 取款金额;

前提是取款后的余额不低于0美元;无论您从银行取款多少次,这一条件都成立。在这种情况下,取款不会影响属性值的抽象,因此对象的整体行为保持不变。

然而,如果账户余额在取款后变为负数,取款函数的行为将大不相同。这是因为银行账户的状态从正数变为负数;在技术术语中,这被称为从正状态到负状态的转换被触发.

💡 注意: 属性值的抽象是系统的一个属性,而不是一个普遍适用的规则。例如,如果银行更改业务规则,允许账户透支2000美元,那么银行账户的状态将被重新定义为:取款后的余额不得低于2000美元的透支额。

关键区别

图类型 范围
状态机图 描述一个对象的所有事件、状态和转换单一对象
顺序图 描述所有对象之间一次交互的事件单一交互过程所涉及的

状态机图的基本概念

什么是状态?

“状态是对象属性值和链接的抽象。根据影响对象整体行为的属性,将一组值归为一个状态。”——伦巴ugh

状态表示法

State Notations

状态机表示法的特点

  • 状态占据一段时间区间

  • 状态通常与满足某些条件的实体属性值的抽象相关联

  • 实体的状态不仅直接由当前输入引起,还依赖于其输入的历史

状态定义

一个状态是对象生命周期中的一个约束或情境,在此期间约束成立,对象执行一项活动或等待一个事件。

状态机图是一个由以下部分组成的图:

  • 状态(简单状态或复合状态)

  • 状态转换连接状态

示例:
State Notation

状态的特征

  • 状态表示对象在特定时间点的条件

  • 对象(或系统)可以被视为从一个状态移动到另一个状态

  • 模型元素生命周期中的一个点,满足某种条件,此时正在进行某个特定操作或等待某个事件


初始状态和最终状态

状态类型 符号 描述
初始状态 ● 实心圆 称为初始伪状态;从此状态出发的转换表示第一个真实状态
最终状态 ◎ 同心圆 表示终止;开环状态机表示一个可能在系统终止前就终止的对象

示例:
Start and Final State Example

📌 注意:闭环状态机图没有最终状态;如果是这种情况,则对象会一直存活,直到整个系统终止。


事件

事件签名描述为事件名(逗号分隔的参数列表)事件出现在状态的内部转换区域,或出现在状态之间的转换上。

四种类型的事件

  1. 信号事件 – 对应于异步消息或信号的到达

  2. 调用事件 – 对应于对某个操作的程序调用的到达

  3. 时间事件 – 在指定时间过去后发生

  4. 变化事件 – 在满足指定条件时发生

事件的特征

  • 表示导致对象从一个状态转换到另一个状态的事件

  • 内部或外部事件会触发某些活动,从而改变系统及其部分的状态

  • 事件传递信息,这些信息由对象的操作进行处理。对象实现事件

  • 设计包括检查状态机图中的事件,并考虑这些事件将如何由系统对象支持


转换

转换线表示从一个状态到另一个状态的移动。每条转换线都标有导致该转换的 事件 ,该事件导致转换。

关键原则

  • 将系统视为一系列状态及其之间的转换,对于描述复杂行为非常有用

  • 理解状态转换是系统分析与设计的一部分

  • 一个 转换 是从一个状态到另一个状态的移动

转换序列

  1. 一个元素处于 源状态

  2. 一个 事件 发生

  3. 一个 动作 被执行

  4. 该元素进入一个 目标状态

附加说明

  • 当不同的事件导致状态终止,或当存在时,会发生多个转换守卫条件在转换上

  • 没有事件和动作的转换被称为自动转换


动作与活动

特征 动作 活动
性质 可执行的原子计算 非原子或持续进行的计算
示例 操作调用、对象创建/销毁、发送信号 可能持续较长时间的复杂行为
可中断性 不可中断——在不中断的情况下完成 可能被事件中断;可能运行至完成,或无限期继续
关联 与……相关联转换 与……相关联状态

动作与活动的特征

  • 状态可以触发动作

  • 状态可以具有第二个分隔区,其中包含实体处于特定状态期间执行的动作或活动

  • 动作是原子执行,因此在不中断的情况下完成

  • 动作的五种触发方式:进入时、执行、事件触发时、退出时,以及包含

  • 一个活动捕获了可能持续较长时间的复杂行为——活动可能被事件中断,此时不会完成;当对象进入某个状态时发生


简单状态机图示符号

Simple State Machine Diagram

进入和退出动作

在状态中指定的进入和退出动作。每次进入/退出时都必须为真。如果不是,则必须在单个转换弧线上使用动作。

动作类型 符号表示 执行时机
进入动作 进入 / 动作 在进入状态时执行
退出动作 退出 / 动作 在退出状态时执行

示例 – 进入/退出动作(检查书籍状态)

此示例说明了一个从类“BookCopy”派生的状态机图:

Entry and Exit Actions

关键要点:

  1. 此状态机图展示了对象的状态myBkCopy来自BookCopy

  2. 进入动作:任何标记为与进入动作关联的动作,将在通过转换进入指定状态时执行

  3. 退出动作:任何标记为与退出动作关联的动作,将在通过转换离开状态时执行


🤖 通过人工智能掌握复杂对象生命周期

状态机对于建模事件驱动行为至关重要,但嵌套子状态和并发区域手动设计起来可能具有挑战性。Visual Paradigm 的 AI 工具通过将您的行为逻辑转换为精确的 UML 状态图来简化这一过程——包含触发器守卫,以及进入/退出动作.

AI赋能的平台

平台 功能
VP 桌面 使用集成的AI助手,直接在UML建模器中生成和优化与状态相关的逻辑
AI聊天机器人 向 描述您的对象的状态和转换AI聊天以实现即时、可编辑的图表生成

智能行为设计功能

🔄 转换发现:AI可自动从您的系统需求中识别状态和转换
🛡️ 节省时间:一键生成图表,仅需几秒钟

了解有关AI状态图的更多信息 | 完整的AI生态系统


子状态和复合状态

一个简单状态是没有子结构的状态。具有子状态(嵌套状态)的状态称为复合状态.

子状态的关键规则

  • 子状态可以嵌套到任意层级

  • 嵌套的状态机最多只能有一个初始状态和一个终止状态

  • 子状态用于通过表明某些状态仅在特定上下文(即包围状态)内才可能实现,从而简化复杂的平坦状态机

子状态示例 – 加热器

Submachine Example

从状态机图中衍生出的测试思路

状态机图常用于推导测试用例。以下是针对加热器示例的一些可能的测试思路:

  • 空闲状态接收到过热事件

  • 空闲状态接收到过冷事件

  • 冷却/启动状态接收到压缩机运行事件

  • 冷却/就绪状态接收到风扇运行事件

  • 冷却/运行状态接收到正常事件

  • 冷却/运行状态接收到故障事件

  • 故障状态接收到故障清除事件

  • 加热状态接收到正常事件

  • 加热状态接收到故障事件


历史状态

除非另有说明,当转换进入一个复合状态时,嵌套状态机的动作将从初始状态重新开始嵌套状态机的动作将从初始状态重新开始(除非转换直接指向一个子状态)。

历史状态允许状态机重新进入离开复合状态前最后激活的子状态重新进入离开复合状态前最后激活的子状态复合状态。

历史状态示例

History of State Machine Example

💡 用例:历史状态在建模用户界面或工作流程时特别有用,用户可以在不丢失进度的情况下离开并返回到复杂状态。


并发状态

如上所述,状态机图中的状态可以嵌套。相关的状态可以组合成一个单一的复合状态。当一个活动涉及并发的子活动时,将状态嵌套在其他状态内部是必要的。.

并发状态机图示例——拍卖流程

在此示例中,进入拍卖的状态机在开始时需要分叉为两个独立的启动线程。每个子状态都有一个退出状态,用于标记线程的结束。除非出现异常退出(已取消或被拒绝),否则复合状态的退出发生在两个子状态都退出时。

Concurrent State Machine Example

并发状态的关键特征

  • 表示复合状态内的并行执行路径

  • 使用分叉/汇合符号来拆分和同步并发流程

  • 每个并发区域独立运行,但共同影响整体状态行为

  • 只有当……时,才会从复合状态退出所有并发子状态都已完成


✏️ 现在尝试绘制UML状态机图

你已经了解了什么是状态机图以及如何绘制状态机图。是时候自己绘制一张状态机图了。

获取 Visual Paradigm 社区版,一款免费的UML软件,使用免费的状态机图工具创建属于你自己的状态机图。它易于使用且直观。

下载 Visual Paradigm 社区版

AI驱动的状态图生成

Visual Paradigm的AI通过将自然语言描述在几秒钟内转换为符合标准的UML模型,简化了状态图的生成。你可以描述一个对象的生命周期——例如在线订单或支持工单——AI会自动识别出所需的状态、转换、触发器和保护条件。

状态图的关键功能

✨ 自然语言转图:通过简单的文本提示,立即生成完整的UML状态机图
💬 对话式优化:使用聊天机器人界面,通过简单的命令,逐步修改你的图表,例如添加子状态、重命名元素或优化转换
🧠 智能建模支持:AI包含高级行为建模功能,例如进入/退出动作、事件触发器和保护条件
🗂️ 逻辑组织: 智能聚类等功能可自动将相关状态分组,而自动布局引擎则确保图表保持整洁且易于阅读
✅ 设计验证: 您可以要求AI分析您的图表是否存在逻辑缺陷,例如“死胡同”状态或特定状态中未处理的事件


AI生态系统

Visual Paradigm在其多个平台上集成AI,以提供一致的建模体验:

集成平台与功能

平台 核心优势
集成的桌面与在线平台 使用 AI聊天机器人 或在线编辑器,无缝导入到 Visual Paradigm桌面版 应用程序中进行高级代码工程和团队协作
按需生成文档 根据您的可视化模型,自动生成详细的项目报告、摘要和技术文档
广泛的符号支持 除了状态图之外,AI还支持超过40种图表类型,包括 UML、BPMN、SysML和ArchiMate
模型间可追溯性 将您的状态图与其他项目资产(如用例或用户故事)关联,以在整个系统架构中保持单一事实来源

💬 您想看看生成特定类型状态机的示例提示吗? 只需提问!


  1. 📚 参考列表
  2. 什么是状态机图?: 全面指南,帮助您理解UML状态机图的符号、组成部分及其在系统建模中的实际应用。
  3. 通过AI驱动的可视化建模掌握UML状态机图: 了解AI工具如何提升状态机图的创建、建模效率以及行为设计的准确性。
  4. 使用AI在几秒钟内创建UML状态图: 发现如何使用AI驱动的工具,将自然语言描述快速转换为正式模型,从而生成UML状态图。
  5. AI图示生成: Visual Paradigm的AI驱动功能,可从自然语言提示中自动生成多种UML符号类型的图表。
  6. 用于绘图的AI聊天机器人: 通过对话式命令和迭代反馈,帮助生成和优化UML图表的交互式AI助手。
  7. AI聊天机器人文档: 官方文档和使用指南,帮助您利用AI聊天机器人创建、修改和验证UML图表。
  8. 增强的AI状态机图生成: 发布说明详细介绍了状态图生成中AI能力的改进,包括更优的转换检测和守卫条件处理。
  9. AI状态图功能增强: 对AI驱动的状态机建模功能更新及性能提升的技术概览。
  10. UML状态机图:使用AI建模对象行为的权威指南: 详尽的文档,介绍如何通过状态机使用AI建模对象行为,包括最佳实践和示例。
  11. AI复合结构图生成器: 使用AI辅助,在桌面端、聊天和OpenDocs平台上即时生成UML复合结构图。
  12. Visual Paradigm的AI聊天机器人有何不同: 博客文章解释了Visual Paradigm AI聊天机器人在绘图方面的独特优势,包括上下文感知能力和技术准确性。
  13. AI驱动UML图生成指南: 越南语指南,介绍AI驱动的UML图生成功能和工作流程。
  14. 全面评测:Visual Paradigm的AI图示生成功能: 第三方评测,评估Visual Paradigm的AI绘图能力、易用性及集成特性。
  15. Visual Paradigm的AI生态系统如何变革UML开发: 文章探讨AI集成如何改变UML开发工作流程、协作方式以及模型驱动工程实践。

  1. 🎯 准备开始了吗?立即下载Visual Paradigm社区版,开始使用专业级状态机图建模动态系统行为——借助直观设计与智能AI辅助。