软件工程-状态转换图笔记+例题

一、为何要用状态转换图(STD)

在制定需求分析任务的时候,要编写软件需求规格说明书,其中可能会用到结构化分析方法的几个主要模型,当中就应该建立软件系统的行为模型(即状态转换图)

二、何为STD

为了反映事物的变化规律,在需求分析中要建立系统的动态模型。
状态转换图通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
状态转换图还指明了作为特定事件的结果,系统将做哪些动作(例如,处理数据)。

三、状态、事件

状态是可以被观察到的系统行为模式,规定了系统对事件的响应方式,既可以是做一个(一系列)动作,也可以是仅仅改变系统本身的状态,或者都包括。
事件是在某个特定时刻发生的事情,对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象。如移动或点击鼠标,内部时钟表明某个规定时间段已经过去。

四、符号

下面介绍的概念有些抽象(嘿嘿照本宣科搬过来的),可以从实际例子中去体会实际用法

初态:实心圆
终态:同心圆
中间状态:圆角矩形,可用水平横线分为上中下三部分,上部分(必有)是状态名称,中间部分(可选)是状态变量的名字和值,下部分(可选)是活动表(下文做语法解释)
活动表语法格式:事件名 /动作表达式,事件名经常使用下述3种标准事件:entry事件指定进入该状态的动作;exit事件指定退出该状态的动作,do事件指定在该状态下的动作。动作表达式描述应做的具体动作。
状态转换:带箭头的连线,状态变化通常由事件触发,应标出触发转换的事件表达式(下文做语法解释),不标明则代表在源状态内部活动执行完自动触发转换。
事件表达式语法格式:事件说明 【布尔表达式】/动作表达式

注:[]中括号的意思代表可有可无

五、实际例子

例一

电话系统状态图:没有人打电话时电话处于闲置状态,有人拿起听筒则进入拨号状态,到达此状态后,电话行为是响起拨号音并计时;若拿起听筒的人不想打了把听筒放下(挂断),又回到闲置状态;若拿起时间比较长不拨号(超时),则进入超时状态…
在这里插入图片描述

例二

复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;
如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;
如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图描绘复印机的行为。
在这里插入图片描述

### 关于软件工程中UML状态的例子 #### 例子一:自动售货机的状态转换 在一个简单的自动售货机系统中,机器会经历不同的状态变化。以下是该系统的简化版本: - **初始状态**: `等待投入硬币`。 - 当用户投币后进入下一个状态:`有足够的钱`. - 用户选择商品之后,如果库存充足则转到`分配产品`,否则回到`错误处理`. ```mermaid stateDiagram-v2 [*] --> 等待投入硬币 等待投入硬币 --> 有足够的钱 : 投入足够的金额 有足够的钱 --> 错误处理 : 商品缺货 有足够的钱 --> 分配产品 : 成功选取并支付 分配产品 --> 完成交易 : 提供所选物品 错误处理 --> 等待投入硬币 : 返回多余的钱给顾客 ``` 此案例展示了基本的操作流程以及可能出现的各种情况下的响应方式。 #### 解决方案分析: 通过上述状态可以看出整个过程非常直观明了[^1]. 使用这种形化工具可以帮助开发团队更好地理解和沟通业务逻辑. --- #### 例子二:书馆书籍借阅管理 考虑一个小型书馆管理系统中的书借还功能。这里定义了一些关键事件触发器及其对应的动作: - 初始状态下书处于`可借用`状态. - 借书成功后变为`已借出`; - 归还时检查是否有损坏或其他异常状况发生;如果没有问题就恢复至`可借用`;如果有损毁,则标记为`维修中`; ```mermaid stateDiagram-v2 [*] --> 可借用 可借用 --> 已借出 : 书被借走 已借出 --> 维修中 : 发现破损 已借出 --> 还回确认 : 正常归还 还回确认 --> 可借用 : 检查无误 维修中 --> 废弃 : 不可修复 维修中 --> 可借用 : 修理完成并通过检验 ``` 这个实例说明了一个典型的应用场景下如何利用状态来表达实体生命周期内的不同阶段及相互间的转移条件. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值