2.7 UML状态图
问题的引出
顺序图是对对象的动态行为进行建模,有多个对象的参与、协作
问题:
当需要考察单个实体的动态行为时, 用UML如何来建模呢?
什么是单个实体:一个软件系统?一个子系统?一个模块、一个构件?
选择单个对象
软件系统中核心的、需要进行详细分析的单个实体
从不同的视点(ViewPoint)可有不同的选择
类的对象、构件、整个系统
原则:从选定的角度,把要考察的实体看作一个整体
UML提供了建模机制
状态图, 单个对象的动态行为
状态图的概念
状态(state):
是对象的生命期中的一个条件或状况
在此期间,对象可以响应事件、执行某活动等
例如,灯,有几个状态?
例如类,color,
状态机(state machine) :
是一种行为,
说明对象在它的生命期中, 响应事件所经历的状态序列 以及它们对每个事 件的响应
状态图(state diagram, State Chart ):
状态机可以用状态图来可视化。
状态图显示了一个状态机,它强调从状态到状态的控制流
状态有以下几个部分组成:
1)名称(name)
每个单词首字母大写
2)进入/退出动作(entry/exit action)
3)内部迁移(internal transition)
Transitions that are handled without causing a change in state
4)子状态 (substate)
5)延迟事件 (deferred event)
事件 Event
是对一个在时间和空间上占有一定位置的有意义的事情的描述
在状态机的语境中,一个事件是一个激励的发生,它能够触发一个状态迁移
UML 对4种事件进行建模
参量变化 change event
布尔表达式值变化、定时器、溢出:是内部事件
信号 signal (异步)
调用 call (同步)
时间事件 time event
时间事件 是表示一段时间的推移
用关键字after 后面跟着时间表达式
用关键字at 表示某个绝对时间点上发生的时间事件
变化事件 表示状态的一个变化或某些条件得到满足的事件
用关键字 when后跟一个布尔表达式,当条件满足,则引发变化事件
迁移Transition
在状态A,发生事件并满足一定条件,转到状态B
一个迁移由5部分组成
源状态 source state
事件触发器 event trigger (触发事件名称)
触发条件 guard condition
效应(effect) (或称,迁移动作)
可执行的动作
目标状态
特殊的迁移
自身迁移 self transition
从状态A迁移到状态A
内部迁移 internal transition
在状态A内部 行为
状态图的建模元素
状态
一般状态:圆角矩形
初始状态:实心圆
结束状态:“牛眼” (bull’s eye)
事件
触发事件名[触发条件]/迁移动作
这三个部分都是可以省略的,但至少有一部分
事件依附于表示迁移的箭线
迁移
叉形箭头实线
从初始状态指向目标状态

状态图建模
建模步骤
1、选择对象及视点
简单类的实例
构件
整个系统 或子系统
用例
2、定义 对象在生命期内可能存在的状态
状态要有意义
状态持续一定的时间
3、在每种状态下可以接受的事件及将要转去的新的状态
状态图建模注意事项:
不允许孤立的状态存在
不允许只进不出的状态迁移 (“黑洞”)
不允许只出不进的状态迁移 (“奇迹”)
不允许没有事件发生的迁移
或者“迁移” 没有指明具体的事件
比较状态图与交互图、活动图
交互
对共同工作的对象群体的行为建模
动态行为
状态机
对单个对象的行为建模
有时,可以对单个“完整系统”的行为建模
说明对象在它的生命期中响应事件所 经历的状态序列以及对那些事件的响应
动态行为建模
活动图
强调从活动到活动的控制流,多个业务角色
状态图是强调 对象潜在的状态和这些状态之间的迁移
UML工具小结
建模、模型
统一建模语言 UML,Unified Modeling Language
工具包
用例模型 UseCase Model
活动图 Activity Diagram
类图 Class Diagram
顺序图 Sequence Diagram
通信图 Communication Diagram
状态图 State Diagram
2.7 UML状态图的更多相关文章
- UML状态图和活动图
UML状态图和活动图 统一建模语言UML(Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对 ...
- 时序扩展的UML状态图的测试用例生成研究
一.基本信息 标题:时序扩展的UML状态图的测试用例生成研究 时间:2014 出版源:西南大学 领域分类:时序扩展:UML状态图:测试用例:需求规格说明:模型 二.研究背景 问题定义:时序扩展的UML ...
- UML状态图(转载)
概述: 图表本身的名称,阐明该图的目的和其他细节.它描述了在一个系统中的一个组成部分不同的状态.状态是特定的一个系统的组件/对象. 状态图描述了一个状态机.我们阐明的状态机可以被定义为一台机器,它定义 ...
- Python设计模式 - UML - 状态图(State Machine Diagram)
简介 状态图主要用于描述对象在其生命周期中各种状态.状态之间的转换过程.触发状态转换的各种事件(条件)及执行的动作. 状态图构建步骤 - 找出适合用状态图描述的类.确定类中需要做状态图的重要对象 - ...
- UML状态图
状态图(Statechart digram)是系统分析的一种经常使用工具,系统分析员在对系统建模时,最先考虑的不是基于活动之间的控制流,而是基于状态之间的控制流,由于系统中对象的状态变化最易被发现和理 ...
- UML——状态图
状态图(Statechart Diagram),主要用于描述对象在其生命周期中基于事件的动态行为,显示了对象如何根据当前的状态对不同的事件(Events)作出反应(Action).一般我们用状态机来对 ...
- 【UML】状态图Statechart diagram(转)
前言 UML由动态图和静态图组成,状态图就是属于动态图中较为重要的一张图. 定义 用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移. 目的 ...
- UML简介
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型 ...
- UML(统一建模语言)
最近看了一个UML图,所以特意来了解一下UML 统一建模语言 锁定 同义词 UML(统一建模语言)一般指统一建模语言 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . Unified Mo ...
随机推荐
- (转)开源项目miaosha(下)
石墨文档:https://shimo.im/docs/2XlwliBQAYsKCHbq/ (二期)20.开源秒杀项目miaosha解读(下) [课程20]jmeter.xmind81.5KB [课程2 ...
- Python中的open和codecs.open
最近老被编码困扰,多次折腾之后,感觉python的编解码做得挺好的,只要了解下边的流程,一般都能解决 input文件(gbk, utf-8...) ----decode-----> unicod ...
- 【安装】Matlab7.0简介及安装
一.简介 Matlab下载官方版是美国MathWorks公司出品的商业数学软件,Matlab7.0下载官方版用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MAT ...
- C#接口的作用详解
.C#接口的作用 : C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认 ...
- memset()函数用法及其作用
memset()函数原型是: extern void *memset(void *buffer, int c, int count) //buffer:为指针或是数组, //c:是赋给buffer的值 ...
- error LNK2019-无法解析的外部符号 _main-该符号在函数 ___tmainCRTStartup 中被引用
问题分析: 因为Win32 console Application的入口函数是Main(),而Win32 Application的入口函数才是WinMain() 解决方案: 右键项目,打开[属性]页, ...
- mutect/mutsig/gistic官网汇总
http://software.broadinstitute.org/software/cprg/
- RN 实现简易浏览器
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, Dimensions, ...
- python with as 的用法
with语句: 不管是否发生异常都会指执行必要的清理操作,比如文件的自动关闭以及线程中锁的自动获取与释放. 比如文件处理,需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄 不用with语句,代 ...
- libxml2的xpath检索中文
ZC: xmlXPathEvalExpression(...) 当 xpath的字符串中 包含中文的时候,返回NULL,暂时不知道该怎么处理了... ZC: 下面是测试的一些代码/文件,留着以后再研究 ...