UML状态图与活动图
软件开发生命周期与统一建模语言
8.5 实例
静态模型 动态模型
软件开发生命周期与统一建模语言
8.5 实例 ——“餐馆订餐”系统的用例图
静态模型
软件开发生命周期与统一建模语言
“记录预约”用例的事件路径如下:
静态模型 动态模型
1.接待员输入要预约的日期 2.系统显示该日的预约 3.有一张合适的餐桌可以使用,接待员输入顾客的姓名和 电话号码、预约的时间、用餐人数和餐桌号
软件开发生命周期与统一建模语言
对象流(objectFlow)
静态模型 动态模型
软件开发生命周期与统一建模语言
8.2.2 活动的分解
静态模型 动态模型
一个活动可以分为若干个动作或子活动,这些动作和子活动 本身可以组成一个活动图; 一个包含子活动的活动和嵌套了子状态的组合状态类似,概 念上也相对统一。 一个不含内嵌活动或动作的活动称之为简单活动;一个嵌套 了若干活动或动作的活动称之为组合活动,组合活动有自己 的名字和相应的子活动图。
静态模型 动态模型
软件开发生命周期与统一建模语言
泳道(swimlane)
静态模型 动态模型
对活动图中的活动分组,并把每一组指定给负责这组活动的 业务组织即对象; 泳道区分了负责活动的对象,明确地表示了哪些活动是由哪 些对象进行的; 每个活动只能明确地属于一个泳道; 泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并 发进行,动作流和对象流允许穿越分隔线。
静态模型 动态模型
第8章 状态图与活图
软件开发生命周期与统一建模语言
回顾
静态模型 动态模型
协作图的定义 协作图的建模过程
软件开发生命周期与统一建模语言
学习目标
静态模型 动态模型
状态图的定义
状态图的建模
活动图的建模
软件开发生命周期与统一建模语言
8.1 状态图(Statechart Diagram)
软件开发生命周期与统一建模语言
8.1.1 基本概念
静态模型 动态模型
CD播放器(正常状态下)
软件开发生命周期与统一建模语言
动作
静态模型 动态模型
Action
可执行的原子计算; 不可中断,其执行时间可忽略不计;
两种特殊动作(只要进入或离开状态都会执行该动作): 进入动作(entry action)
延迟到下一状态中处理的事件
软件开发生命周期与统一建模语言
3、组合/嵌套状态
静态模型 动态模型
含有子状态的状态被称为组合状态
状态名(name)
进入/退出动作(entry/exit action)
软件开发生命周期与统一建模语言
3、组合/嵌套状态
静态模型 动态模型
两种类型:
与子状态
或子状态
一个状态机只能有一个初态,因为每一个执行都是从相同的 地方开始。如果一个状态机是由多个状态图描述,则多张图 用同一个初态; 嵌套状态中可以使用新的初态;
终态(end state)
表示一个最后的或者终端状态; 终态的数目可以是不确定的(可以不用画出来)
软件开发生命周期与统一建模语言
2、中间状态组成
软件开发生命周期与统一建模语言
动作流(transition)
静态模型 动态模型
所有动作状态之间的转换流称之为动作流。 与状态图的转换相同,活动图的转换也用带箭头的 直线表示,箭头的方向指向转入的方向。
软件开发生命周期与统一建模语言
决策(decision)
静态模型 动态模型
用于表示对象类所具有的条件行为(警戒条件 ); 条件行为用分支和合并表达; 一个分支有一个入转换和两个带条件的出转换,出 转换的条件应当是互斥的,这样可以保证只有一条 出转换能够被触发; 一个合并有两个带条件的入转换和一个出转换,合 并表示从对应的分支开始的条件行为的结束;
8.1.3 状态图
静态模型 动态模型
订单处理系统
软件开发生命周期与统一建模语言
8.3 状态图建模技术
静态模型 动态模型
为什么要对状态图进行建模?
1. 对象可能会有不同的状态,某些行为依赖于这些状态。例
如,按下开关按钮时,电灯将改变当前的状态(由关变开
或由开变关),因此:
1. 2. 3. 需要记录对象当前的状态 发生了某种事件才会引起状态间的转移 由一个状态转到另一个状态的过程通常通过方法调用实现
建模主事件流
静态模型 动态模型
软件开发生命周期与统一建模语言
建模扩展事件流
静态模型 动态模型
软件开发生命周期与统一建模语言
划分游泳道后的活动图
静态模型 动态模型
软件开发生命周期与统一建模语言
8.6 活动图实例
静态模型 动态模型
1、图书馆系统管理员通过图书管理系统对读者的 借阅进行管理(查询、添加、删除和更新借阅信 息),请画出系统管理员维护借阅者账户信息的活 动图。
活动图用来建模某个过程的活动序列,以活动为中心;
状态图用来建模对象生命周期中的所有阶段,以状态为中心;
软件开发生命周期与统一建模语言
8.2 活动图
静态模型 动态模型
存款
软件开发生命周期与统一建模语言
8.2.1 基本概念
静态模型 动态模型
活动 决策 同步 泳道 对象流和对象
软件开发生命周期与统一建模语言
4、历史状态
静态模型 动态模型
History state
使用历史状态,则可以存储给退出组合状态时所处的子状态, 则返回组合状态时可以直接回到相应的子状态;
软件开发生命周期与统一建模语言
8.1.3 状态图
静态模型 动态模型
订单处理系统
软件开发生命周期与统一建模语言
- 进入状态时执行的动作
- Entry/setMode(onTrack)
退出动作(exit action)
- 退出状态时执行的动作
- Exit/setMode(offTrack)
软件开发生命周期与统一建模语言
转移
静态模型 动态模型
Transition
两个状态之间的一种关系,表示对象在第一个状态 执行一定的动作,并在某个特定事件发生而且满足 某个条件时进入第二个状态。
的目的;
理解: 汇合代表两个或多个并发控制流同步发生,当所有的控制
流都达到汇合点后,控制才能继续往下进行。每个汇合可以 有两个或多个输入转换和一个输出转换;
分叉可以用来描述并发线程,每个分叉可以有一个输入转
换和两个或多个输出转换,每个转换都可以是独立的控制流;
软件开发生命周期与统一建模语言
同步(synchronization)
软件开发生命周期与统一建模语言
决策(decision)
静态模型 动态模型
软件开发生命周期与统一建模语言
同步(synchronization)
静态模型 动态模型
显示业务用例的工作流程中的并行线程;
分叉用于将动作流分为两个或者多个并发运行的分支; 汇合则用于同步这些并发分支,以达到共同完成一项事务
8.4 状态图实例
静态模型 动态模型
书的状态图:
软件开发生命周期与统一建模语言
8.4 状态图实例
静态模型 动态模型
借阅证的状态图:
软件开发生命周期与统一建模语言
8.2 活动图
静态模型 动态模型
Activity Diagram
提供了建模业务工作流的一种方法;
是一种特殊的状态图;
同状态图的区别:
格式:
事件(参数)[条件] / 动作
help[length(password)< >6] / verifyPassword.help()
软件开发生命周期与统一建模语言
事件
静态模型 动态模型
Event
是对一个时间和空间上占有一定位置的有意义的事情的规格 说明;
事件触发状态的转移;
四类主要事件
3a) 没有合适的餐桌可以使用 3a1) 用例终止
4.系统记录并显示该预约
4a) 输入的预约人数多于餐桌能容纳的人数 4a1) 系统发出一个警告信息,询问用户是否想要继续预约 4a1a) 如果回答“否”,用例将不进行预约而终止 4a1b) 如果回答“是”,预约将被输入,并附有一个警告标志
软件开发生命周期与统一建模语言
软件开发生命周期与统一建模语言
泳道(swimlane)
静态模型 动态模型
软件开发生命周期与统一建模语言
对象流(objectFlow)
静态模型 动态模型
对象流是动作状态或者活动状态与对象之间的依赖 关系,表示动作使用对象或者动作对对象的影响。 对象流中的对象特点:
① 一个对象可以由多个动作操纵; ② 一个动作输出的对象可以作为另一个动作输入的对象; ③ 在活动图中,同一个对象可以多次出现,它的每一次出现表 明该对象正处于对象生存期的不同时间点;
软件开发生命周期与统一建模语言
8.6 活动图实例
静态模型 动态模型
软件开发生命周期与统一建模语言
8.6 活动图实例
静态模型 动态模型
图书管理员的日常工作主要是通过图书管理系统处 理借书与还书,借阅者借阅书籍的数量是受限制的, 超过还书期限需要缴纳罚金。请给出图书管理员的 活动图
软件开发生命周期与统一建模语言
8.2.3 活动图
静态模型 动态模型
软件开发生命周期与统一建模语言
8.5 活动图建模技术
静态模型 动态模型
① ② ③ ④ ⑤ ⑥
识别要对其工作流描述的类或对象。 确定工作流的初始状态和终止状态,明确工作流的边界。 对动作状态或活动状态建模。 对动作流建模。 对对象流建模。 对建立的模型进行精化和细化。