APP下载

UML状态机图的建模分析

2020-10-21商鹏

科学与信息化 2020年4期
关键词:建模

摘 要 状態机图是统一建模语言UML中的动态模型图,用来描述一个实体基于事件反应的动态行为。要研究某个实体或对象的单独的行为及状态变化,可以使用状态机模型图来表示。本文对状态机图进行了介绍,并通过实例进行状态机图的建模分析。

关键词 状态机;单个对象;建模

引言

在软件系统中可能存在着大量的对象,它们需要处理各种随机发生的事件,通过相应的动态行为来产生对事件的响应,最适合描述对象这类动态行为的建模手段就是状态机图。状态机图是UML2.0中的重要模型,是系统分析过程的常用图,可以帮助系统开发人员更好地理解单个对象的行为。

1状态机图介绍

状态机图本质上就是一个状态机,是展示状态与状态转换的模型,在系统控制、编译技术、机器逻辑等领域应用非常普遍。

状态机可以看作是一个对象的局部视图,用来精确的描述这个对象的单独行为。一个状态机可以依附于一个类,用来描述类的实例的状态及状态转换,并对接收到的事件做出的响应[1]。状态机也可以依附于用例、操作、协作等元素,描述它们的执行过程。使用状态机考虑问题时,习惯将对象与外部世界分离,适合对局部、细节进行建模。

状态机图包含状态机的所有特征[2]。状态机图主要由状态和状态之间的转换组成。状态描述了一个对象生命周期中的一个时间段,在该时间段内保持对象或系统的外在状况和内在特性的相对稳定。转换是两个状态之间的一种关系,当状态发生这样的转变关系时,转换就被激活。

状态机图可以展示一个对象、子系统或系统的所有状态及其收到的消息对其状态的影响。

2状态机图建模

2.1 状态机图建模技术

一般使用状态机图对系统的动态方面建模,常见的目的是为对象,尤其是类、用例和整个系统的实例的生命周期建模。状态机可以看作是一个对象所有可能的生命历程的模型。为对象的生命期建模时,主要描述对象响应的事件、对事件的响应以及过去对当前行为的影响。

不需要为系统中的每个对象绘制状态机图,只对那些状态和行为较为复杂的对象建立状态机模型,以便更清楚的认识这些对象的行为,准确定义它们的操作。

2.2 状态机图建模实例[3]

一个负责监视报警传感器的控制器开机后先进行初始化,完成初始化后自动进入待机状态。待机状态下,每隔15秒会进行设备自检。控制器接收到一个报警信号后,会响应该信号,响应时经历生成警报、验证警报是否真实、呼叫警报公司登记该警报、等待警报公司处理警报、警报处理完后清除警报的过程。警报清除后,控制器回到待机状态。处于待机状态的控制器接收到用户指令,会处理用户指令,处理完成后自动回到待机状态。当控制器处理警报时接到用户指令,控制器会中断警报处理,进行用户指令处理。

从控制器的生命周期过程分析,可设定控制器有四种状态:控制器初始化Initializing状态;等待警报或用户指令的待机Idle状态、处理用户指令的Command状态和处理警报事件的Active状态。Active状态因为包含一系列的警报处理过程,设计为组合状态,包含验证警报的Checking子状态、呼叫警报公司登记警报的Calling子状态、等待处理警报的Waiting子状态。Active组合状态有创建警报setAlarm作为入口动作和清除警报clearAlarm作为出口动作。

状态之间存在以下转换:第一次创建这个控制器对象时,从代表状态机图起始位置的初始状态进入Initializing状态;控制器在完成初始化后无条件的进入Idle状态,因为不需要触发事件,所以是完成转换。Idle状态中,每隔15秒自动进行的设备自检会暂时离开当前状态,自检完成后再返回该状态。这类似一个心跳定时器,每隔一段时间就检查系统或设备的健康状况,这种情形在嵌入式系统中很常见。在状态机图中设计为一个由时间事件触发的自我转换。控制器接收到一个报警事件alarm,设置事件参数s表示发生错误的传感器,控制从Idle状态转换到Active状态。Idle状态下接收到attention信号事件也会转换到Command状态,处理完用户指令后,通过完成转换转回Idle状态。在Active状态中,执行入口动作setAlarm,控制从初始状态依次传送到Checking状态、Calling状态,最后到Waiting状态。发生clearing事件警报被清除时,退出Active状态,回到Idle状态。当用户向控制器发attention信号时,转到Command状态。离开Active状态时,按照退出组合状态的原则,先离开Waiting子状态,再离开组合状态,注意clearAlarm出口动作的执行。

这里没有终止状态,这在嵌入式系统中是常见的,希望系统无限期不间断的运行。控制器的状态机图如图1所示。

3结束语

状态机图适合于描述单个对象的动态行为,该对象通常代表一个类、一个用例或整个系统的实例。状态机图不适合描述多个对象的协作行为,要确定对象的所有行为必须同时结合顺序图和通信图等交互图来建模,才能得到对象的整体行为。

参考文献

[1] 唐学忠,费贤举.UML面向对象分析与建模[M].北京:电子工业出版社,2008:217.

[2] 吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016:73.

[3] Grady Booch,James Rumbaugh,Ivar Jacobson.UML用户指南(第2版.修订版)[M].北京:人民邮电出版社,2013:29.

作者简介

商鹏,女,山东淄博人;学历:硕士,讲师,现就职单位:山东理工大学计算机科学与技术学院,研究方向:软件工程与软件建模。

猜你喜欢

建模
解析新课标下高中数学建模教学策略
物理建模在教与学实践中的应用
在经历中发现在探究中建模
空间几何体外接球问题的数学建模
3DSMAX建模技术分析
三维激光扫描技术建模与倾斜摄影测量建模对比
思维建模在连续型随机变量中的应用
模型与建模在高中生物学教学中的应用——以“减数分裂”第1课时教学为例
求距求值方程建模
运用5W1H教学策略培养高中物理问题建模能力