UML面向对象分析与建模-【6】状态图

 

一、概述

在一般的面向对象技术中,状态图又称为状态迁移图。描述了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的迁移。大多数面向对象技术都使用状态图来描述一个对象在其生命周期中的行为。

二、状态

在所有动态图(序列图、协作图、状态图、活动图)中,消息是作为对象间的一种通信方式来表示的。消息包括简单消息、同步消息和异步消息。可以将一个简单消息和同步消息合并成一个消息。

在UML中,对于状态的定义着重于对象行为的规则,状态描述了一个对象生命周期中的一个时间段。它可以用三种附加方式说明:在某些方面性质相似的一组对象值;一个对象等待一些事件发生时的一段时间;对象执行持续活动的一段时间。状态代表的是对象行为积累的历史。

按照在状态图中出现的时间顺序,状态可分为初态(初始状态)、中间状态(简单状态)和终态(终止状态);可以进入一个状态的内部,将其进一步细分成若干个内部状态(子状态),从而可以将状态分为组合状态和子状态;根据组合状态中子状态的互斥性,又可将组合状态分为并发组合状态和顺序组合状态。


状态种类


描述


简单状态


没有子结构的状态


并发组合状态


被分成两个或多个并发子状态的状态,当组合状态被激活时,所有的子状态均被并发激活


顺序组合状态


包含一个或多个不连接的子状态的状态,特别是当组合状态被激活时,子状态也被激活


初始状态


伪状态,仅表明这是进入状态机真实状态的起点


终止状态


特殊状态,进入此状态表明完成了状态机的状态转换历程中的所有活动


结合状态


伪状态,将两个转换连接成一次就可以完成的转换


历史状态


伪状态,它的激活保存了组成状态中先前被激活的状态


子机器引用状态


引用子机器的状态,该子机器被隐式地插入子机器引用状态的位置


桩状态


伪状态,用来在子机器引用状态中标识状态

一个简单状态是没有子结构的状态,只带有一组转换和可能的入口和出口动作。如果一个状态内嵌套了若干个状态,则称该状态为超状态或组合状态,其中被嵌套的状态称为子状态。子状态本身仍然可以是一个组合状态。组合状态可以包含顺序状态的子状态,也可以包含并发状态的子状态。

顺序状态又称为不相交状态,它们是一个一个顺序迁移的,不是并发存在。在一个嵌套的顺序状态机中最多有一个初态和一个终态。

历史状态允许包含顺序子状态的组合状态记住在从该组合状态出发的迁移触发之前的最后一个活动子状态。历史状态分为浅历史状态和深历史状态。浅历史状态保存并重新激活与它在同一个嵌套层次上的状态。深历史状态可记住组合状态中嵌套层次更深的状态。如果一个嵌套状态机到达一个终态,那么历史状态将会丢失其存储的历史。

状态机由一系列对象的状态组成。是展示状态与状态转换的图。是一个类的对象所有可能的生命历程的模型。反映的是一个对象在其生存周期中对所经历的相关事件做出反应的状态序列行为,以及对这些事件的反应。是一个对象的局部视图,一个将对象与其外部世界分离开来独立考察其行为的图。

状态图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的迁移。UML状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。一个状态图基本上就是能在一个状态机中发现的元素反应,也就是说,状态图可以包含分支、分岔、接合、动作状态、活动状态、对象、初态、终态和历史状态等。

事件是一个在时间和空间上都占据一定位置的有意义的事情的规约。它可以是同步也可以是异步的。既可以是外部事件也可以是内部事件。外部事件指在系统和它的参与者之间传送的事件。内部事件是指系统内部的对象之间传送的时间。


事件类型


描述


语法


调用事件


接收等待应答的对象的明确形式的同步请求


Op(a:T)


改变事件


对布尔表达式的修改


When(exp)


信号事件


接收一个对象间外在的、命名的、异步的通信


Sname(a:T)


时间事件


绝对时间的到达或者一个相对时间的终结


After(time)

一个调用事件代表对一个操作的调用。改变事件是指对象处于某个状态下,一个变化或者某些条件得到满足时触发的事件。时间事件是指对象进入某状态,经过一定的时间或者到达某个绝对时间后发生的时间。信号是由对象异步地发送并由另一个对象接收的具有名字的对象,它和简单的类有许多共同之处。

从状态出发的迁移定义了处于此状态的对象对外界发生的事件所做出的反应。


迁移的种类


描述


语法


入口动作


进入某一状态时执行的动作


entry/action


出口动作


离开某一状态时执行的动作


exit/action


外部迁移


引起状态改变的迁移或自身迁移,同时执行一个具体的动作,包括引起入口动作和出口动作被执行的迁移


e(a:T)[exp]/action


内部迁移


引起一个动作的执行但不改变状态或不引起入口动作或出口动作的执行


e(a:T)[inner]/action

完成迁移是指没有明确触发器事件的迁移。如果一个状态没有内部活动或者嵌套状态,则一旦入口和出口活动完成,则完全迁移立即出发。复合迁移由简单迁移组成,这些简单迁移通过分支判定、分岔或接合组合在一起。

并发子状态用来在封闭对象的上下文中表示两个或多个状态机并行执行的情况。并发状态图用于描述一个对象在某个时刻有多个并发的子状态机的情况,并发状态图是这些子状态图的组合。嵌套的并发状态机并没有初态、终态或历史状态,但组成一个并发状态的顺序子状态可以具有这些特征。并发状态图适合描述一个对象有许多独立行为的情况,可以把表达这些个别行为的状态图组合在一起,构成一个并发状态图。

    同步状态是一个伪状态,它和分岔、接合一起表达两个并发子状态机之间的同步,保证一个子状态机在另一个子状态机进入某个特定的状态之前离开某个状态。

三、状态图建模

状态图适合描述亦个对象穿越多个用例的行为,但是状态图不适合描述多个对象的协同行为。建立状态图可参照下列步骤:

(1)       确定状态机的上下文,它可以是一个类、子系统或整个系统。

(2)       建立初始状态和终止状态。

(3)       确定对系那个可能做出响应的事件。

(4)       从初始状态一直到终结状态,呈现出对象可能处于的顶层状态。

(5)       识别出所有的入口或出口动作。

(6)       有必要的话可以用子状态来对这些状态进行扩展。使用超状态、子状态、分支、历史状态等概念组织和简化一个复杂的状态机

(7)       检查状态机中涉及的所有事件是否与对象接口中所期望的事件相匹配。

(8)       检查状态机中涉及的所有动作是否被关系、方法和封闭对象中的操作所支持。

(9)       沿着状态机,手动或者使用工具检查期望的事件序列以及他们的响应。寻找没有到达的状态以及虚假的状态。

(10)   重新整理过状态机之后,对照期望的序列重新进行检查,确保没有改变对象的语义。

 

 

参考文献:

[1] 唐学忠等著. UML面向对象分析与建模. 电子工业出版社. 2008

[2] 蔡敏等著. UML基础与ROSE建模教程. 人民邮电出版社. 2006

[3] Carlo Ghezzi等著. 施平安译. 软件工程基础(第2版) 清华大学出版社. 2003

[4] 参考网站:

       http://www.omg.org/UML

       http://www.rational.com/UML

       http://www.software.ibm.com/ad/ocl

 

时间: 2024-09-20 06:05:56

UML面向对象分析与建模-【6】状态图的相关文章

UML面向对象分析与建模-【2】UML语言基础

  一.UML的主要内容 UML主要文件包括UML概要.UML语义.UML表示法指南和对象约束语言规约. 二.UML的主要特点 UML主要特点包括统一标准.面向对象.可视化及表示能力强大.独立于过程和容易使用掌握.UML不是一个独立的软件工程方法,而是面向对象软件工程方法中的一个部分.UML贯穿软件系统开发的需求分析.系统分析.系统设计.系统实现和测试五个阶段. 三.UML建模中9种图的特点 1.       用例图 用例图描述系统外部的活动者(角色)与系统提供的用例之间的某种联系.它着重从系统

UML面向对象分析与建模-【5】交互图

  一.概述 交互图是用来表达系统的各个对象之间如何交互,如何合作完成某个行为的动态模型工具,它与用例图.状态图.活动图等共同构成了系统的行为视图. 交互图主要用于对用例图中的控制流进行建模,它包括序列图和协作图,其中,序列图按时间次序描述系统中各对象如何通过消息交互,协作图从空间上描述收发消息的对象的结构关系. 二.序列图 序列图是一种交互图,描述了系统中各个对象之间传递消息的时间次序,用来表示用例的行为顺序,从而为对象类图中概括对象的行为.划分对象类的职责提供依据.它依赖与用例图,如果说用例

UML面向对象分析与建模-【3】用例图

  一.用例图的描述 用例(Use Case)是指系统的外部事物(活动者.设备或外部系统)与系统交互,它表达了系统的功能,即系统所提供的服务. 用例图是一种描述用例的可视化工具,用简单的图形元素表示出系统的活动者.用例及它们之间的关系,准确地表达了活动者与系统的交互情况和系统所能提供的服务.用例图是从用户角度而不是从开发者角度来描述对软件产品的需求,分析产品所需的功能和动态行为. 二.活动者 确定活动者.活动者可以通过泛化关系定义. 1.       系统的主要客户是谁 2.       谁从该

UML面向对象分析与建模-【1】面向对象技术概述

    一.软件开发方法 常见的软件开发方法有面向过程的开发方法,面向数据结构的开发方法和面向对象的开发方法.其中面向过程的开发方法也称为面向功能的软件开发方法或面向数据流的软件开发方法.结构化方法强调过程抽象和功能模块化.它一般利用图形表达用户需求,使用的手段有数据流图.数据字典.结构化语言.判定表及判定树等.面向数据结构的开发方法适合于求解算法依赖于问题描述的数据结构之类的情况.这种方法最适合在完成了软件结构设计之后,用它来设计每个模块的处理过程.它根据问题的数据结构定义一组映射,把问题的数

UML面向对象分析与建模-【4】类图和对象图

  一.概述 UML的类图和对象图表达的是对象模型的静态结构方面. 类图描述的是一种静态关系,在系统的整个生命周期都是有效的.通过分析问题域和用例,就可以得到相关的类,然后再把逻辑上相关的类封装成包.这样就可以很好地体现系统的分层结构,使人们对系统层次关系一目了然. 对象图是类图的实例,它的表示方式与类图基本相似.它们的不同之处在于对象图显示类图的多个对象实例,而不是实际的类.一个对象图是类图的一个实例,对象图只能在系统的某一时间存在. 二.对象类 对象类简称类,是一种重要的分类器,用来描述结构

《面向对象分析与设计》一1.6关于统一建模语言UML

1.6关于统一建模语言UML UML最初是在多种面向对象分析与设计方法相互融合的基础上形成的,后来发展成为也可以用于业务建模以及其他非软件系统建模的语言.它于1997年11月被对象管理组织(Object Management Group)采纳为建模语言规范,随后被产业界和学术界广泛接受. UML定义了建立系统模型所需要的概念并给出了表示法,但它并不涉及如何进行系统建模.因此它只是一种建模语言,而不是一种建模方法.UML是独立于开发过程的,也就是说它可以适用于不同的开发过程. UML 2.4规范由

面向对象分析与设计—四色原型模式(彩色建模、领域无关模型)

面向对象分析与设计-四色原型模式(彩色建模.领域无关模型) 1.背景介绍 至今我都清楚的记得我第一次被面试官问起什么叫"建模"技术时的情景,那是好 几年前的事情了,当时是胸有成竹的去面试一个有关系统分析.设计的.NET高级软件工程师岗位.面试官几乎没问我有关.NET方面的任何技术实现,他就简 单的问了问:"你如何把握你所分析出来的系统的正确性?",我当时有点小激动,觉得这个问题应该很简单嘛,都是概念而已,让他直接点问,结果他来一句: "你懂建模吗?,能给我

.NET应用架构设计—面向对象分析与设计四色原型模式(彩色建模、领域无关模型)(概念版)

阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我们真的看见OOAD的希望 5.在四色原型上运用彩色建模增强视觉冲击力 6.通过四色原型模式建模出领域无关模型 7.结束语:建模时你可以不考虑具体实现,但是建模者要懂技术实现 1.背景介绍 至今我都清楚的记得我第一次被面试官问起什么叫"建模"技术时的情景,那是好几年前的事情了,当时是胸有成竹

《UML面向对象设计基础》目录—导读

版权声明 UML面向对象设计基础 Authorized translation from the English language edition, entitled Fundamentals of Object-Oriented Design in UML, 1E, 9780201699463 by Meilir Page-Jones, published by Pearson Education, Inc, publishing as Addison-Wesley Professional,