行为建模(状态图-活动图)

采用方法:面向对象的设计方法(OOD)
静态结构设计:类和对象的设计,架构设计(设计模式),数据库设计、静态结构设计建模技术:类的建模(系统类图),对象的建模,组件图,配置图,数据库设计类图
动态结构设计:状态、行为的设计、动态结构设计建模技术:状态建模(状态机图),行为建模(顺序图、通讯图)

状态机图:状态机图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移

  1. 状态机
  2. 状态
  3. 转移
  4. 状态机图的建模技术
状态机(State Machine)

1.状态机用于对具有事件驱动的特性的动态行为建模。
2.状态机由状态组成,各状态由转移链接在一起。
状态是对象执行某项活动或等待某个事件时的条件。
转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或者评估,并导致特定结束状态。

状态机图的内容
1.状态机图通常包括如下内容:(1)状态(2)转换
2.在UML中,图形上每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始还有一个终止状态(半实心圆),用来表示状态机的终止,其他的状态用一个圆角的矩形表示。
在这里插入图片描述
状态机的各种元素
在这里插入图片描述

状态(State)

状态是状态机的重要组成部分,它描述了状态机在对象动态行为的执行所产生的结果。一个完整的状态有5个组成部分:
(1)名字(name)
(2)入口/出口动作(entry/exit action)
(3)内部转换(Internal Transition)
(4)延迟事件(Deferred Event)
(5)子状态(Substate)

在这里插入图片描述

转移

转换是状态间的关联。它们用于对一个实体的不同状态间的关系建模:转换由5个部分组成,它们分别是:源状态、目标状态、触发事件、监护条件和动作
触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件。

状态机图例子
在这里插入图片描述
电话机的状态机图
在这里插入图片描述
复杂的状态机图
在这里插入图片描述

状态机图的建模技术

使用状态机图一般是对系统中反映型对象建模,特别是对类、用例和系统的实例的行为建模。
在使用状态图对系统反映型对象建模时,参照以下步骤进行:
(1)识别一个要对其生命周期进行描述的参与行为的类;
(2)对状态建模,即确定对象可能存在的状态;
(3)对事件建模,即确定对象可能存在的事件;
(4)对动作建模,即确定当转变被激活时,相应被执行的动作;
(5)对建模结果进行精化和细化。

绘图习惯提示:
根据阅读习惯,在绘制状态图的时候,把初始状态放置在左上角,把最终状态放置在右下角。

系统状态图的绘制步骤:
1.阅读需求规格说明书
2.读懂系统用例图
3.阅读用例描述文档
4.根据用例描述文档画出状态转换图

用户
绘制用例机图

阅读登录用例
在这里插入图片描述
根据“登录”用例描述,画出状态机图,如下:
在这里插入图片描述

新增运动员报名

新增运动员报名”用例描述
在这里插入图片描述
在已有的状态图上加入新的状态和转换
在这里插入图片描述

修改运动员报名

阅读“修改运动员报名”用例描述
在这里插入图片描述
在已有的状态图上加入新的状态和转换
在这里插入图片描述

管理员

阅读“新增用户”用例描述
在这里插入图片描述
在已有的状态图上加入新的状态和转换
在这里插入图片描述
阅读”修改用户”用例描述
在这里插入图片描述
在已有的状态图上加入新的状态和转换
在这里插入图片描述
以此类推………………
依次对“单位管理”、“运动员管理”、“报名管理”、 “竞赛项目管理” 、“赛事管理” 的用例描述进行阅读, 然后添加“状态”、“转换”。

最后得到完整的系统状态图

活动图(Activity Diagram)
1.什么是活动图
2.活动图的用途
3.活动图的组成元素
4.活动图的建模技术

什么是活动图

活动图是UML中描述系统动态行为的图之一,是描述系统或业务的一序列活动构成的控制流,它描述了系统从一种活动转换到另一种活动的整个过程。在本质上是一种流程图。

按照活动图表示的信息不同,将活动图分为:简单活动图、标识泳道的活动图、标识对象流的活动图、复合活动图。

活动图的用途

活动图用于对系统的动态行为建模,常用来描述业务或软件系统的活动轨迹。清晰而正确的活动图,可以帮助设计程序内部的结构,确定类之间的关系,函数或方法之间的关系。
主要应用于两个方面建模:
在业务分析阶段,对工作流程进行建模;
在系统分析和设计阶段,对操作流程进行建模。

活动图的组成元素

活动图的元素:初始节点、终点、活动节点、转换、分支、分岔与汇合。
其中,转换、分支、分岔与汇合把多个活动节点连接在一起。
在这里插入图片描述
活动图的表示
(1)初始节点和终点
初始节点表示活动的起点;终点表示活动的终结点。在活动图中,可能包含多个活动终点。
在这里插入图片描述
(2)活动节点
活动节点是活动图中最主要的元素之一,它用来表示一个活动,一个活动表示多个动作的集合。
在这里插入图片描述
可用文字,表达式,消息等描述活动节点。
在这里插入图片描述
(3)转换
当一个活动结束时,活动控制流就会马上传递给下一个活动节点,在活动图中称之为“转换”。
在这里插入图片描述
(4)分支与监护条件
在实际应用中,有三种活动控制流,它们是顺序结构、分支结构、循环结构。当从一个活动节点到另一个活动节点的转换需要条件时,常用分支与监护条件来表示活动的分支结构。
分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足某种条件时才执行该转换。
在这里插入图片描述
(5)分岔与汇合
在实际应用中,如果一些活动是并发执行的,我们就用分岔和汇合来表示并发活动
分岔线和汇合线都使用加粗的水平线或垂直线段表示。
在这里插入图片描述
分岔
每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流。分岔用来表示两个或者多个并发活动的分支。
汇合
当两个或多个并发控制流都达到汇合点后,活动流程才能进入下一个活动节点。汇合则用于同步这些并发活动的分支,当且仅当所有的并发分支(活动)都到达汇合点后,活动流程才能进入下一个活动节点。

与流程图的区别就是:
活动图描述的是对象活动的顺序关系所遵循的规则,表现的是系统的行为,能够表示并发活动的情形,是面向对象的,而流程图是面向过程的,描述的是处理过程
(6)对象流
反映活动与对象之间的依赖关系,表示对象对活动的作用或活动对对象的影响,用依赖关系表示。
在这里插入图片描述
如果箭头从活动指向对象,表示活动对对象的创建、修改或撤销等的影响。
如果箭头从对象指向活动,表示该活动将使用所指向的对象。

活动图的建模技术

1.选择将要绘制活动图的用例,确定活动图的层面,是顶层活动图还是某个方法的活动图。
2.确定活动图中使用的每个对象,用泳道分开。
3.确定用例的边界范围,并绘制活动的开始节点和终止节点。
4.确定本用例中所有的活动,并绘制出来。
5.分析分支或分叉,并绘制出来。
6.确定动作流,并绘制出来。

注意:确定活动流,就是要思考活动与活动之间的关系,活动与对象之间的关系,以及活动流所传递的参数。
有时候还需要对活动图进行一定的补充,可以用表格的形式把每个活动中所操作的对象和参数给予补充说明。

一个活动图的例子:
一个考试的过程:
1.开始
2.学生进入考场。
3.监考教师核对检查证件。
4.学生对号入座。
5.监考教师发试卷
6.学生开始答题。
7.学生交卷。
8.监考教师收取试卷。
9.结束
活动图的表示
在这里插入图片描述

标识泳道的活动图
为了有效地表示各个活动由谁负责的信息,可以通过**泳道(Swimlane)**来实现。
每个泳道用一条垂直的线将它们分开,并且每个泳道都必须有一个唯一的名称。
例如本例中的监考教师和考生。
加入泳道的考试
从图中可以看出,每个活动节点,分支必须只属于一个泳道,而转换,分岔与汇合是可以跨泳道的。
通过泳道,不仅体现了整个活动控制流,还体现出了每个活动的实施者。
在这里插入图片描述
活动图的筛选
活动图的绘制也是在解读需求分析报告的基础上进行的,活动图的设计需要进行筛选和分析。
并不是所有的用例都需要绘制活动图,分析的要素包括:
对象数量
活动数量
事件流数量
判断频率
多项选择
不要画没必要的图。简单的不用画,代码级别的细节不要画,能够在类设计层面上起到指导作用就可以了。对于一些复杂的用例,最细是画到方法层面上,不要过多的把精力花费在细节方面。

在这里插入图片描述
学生教材购销系统的活动图
在这里插入图片描述
状态机图和活动图的区别
状态机图:用来描述对象,子系统,系统的生命周期。通过状态机图可以了解一个对象所能达到的所有状态,以及对象收到的事件对对象状态的影响。
活动图:显示动作及其结果。着重描述操作(方法)实现中所完成的工作以及用例实例或对象中的活动,它是状态图的一个变种。

状态机图与活动图的区别:活动图主要描述动作及对象状态改变的结果。状态机图主要描述的是事件对对象状态的影响

  • 10
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值