




已阅读5页,还剩96页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
InteractionDiagram 交互图 浙江大学软件学院程学林 开发流程 动态建模 UML动态模型 交互图 InteractionDiagram 顺序图 SequenceDiagram 时序图 序列图 最常用 按照时间顺序来描述对象的交互 强调了消息发生的时间顺序 通信图 CommunicationDiagram UML2 0以前称协作图 围绕着对象和对象之间的链接来描述对象的交互 强调对象的组织结构 状态图 StateDiagram 对一个类的生命循环建模 对复杂的动态行为有用 活动图 ActivityDiagram 活动到活动之间的控制流 用于对业务过程 工作流建模 也可以对用例实现建模 交互模式 用例图 类图 交互图 三款图的比较 顺序图整合了用例与类 用例图 类图 交互图 议程 交互图UML表示顺序图通信图顺序图与类图的映射职责分配系统顺序图鲁棒性分析BCE模式案例实践与分析 8 交互图概述 顺序图 按照时间顺序来描述对象的交互通信图 围绕着对象和对象之间的链接来描述对象的交互这两种图在语言上是对等的 但二者所展示的信息有一些区别 9 交互图是有价值的 交互图为编程提供了帮助模式 原则和惯用法被用来提高交互图的质量UML初学者没有对交互图给予足够重视准则 应该花费时间使用交互图进行动态对象建模 而不仅是使用类图进行静态对象建模 10 常用的UML交互图表示法 使用生命线框图表示参与者 对象 11 图15 5表示交互中参与者的生命线框图 单实例类对象 12 图15 6交互图中的单实例类 13 消息表达式 标准语法return message parameter parameterType returnType没有参数时可以省略圆括号 如果明显或不重要 可以不包含类型信息如 initialize code initialized getProductDescription id d getProductDescription id ItemID d getProductDescription id ItemID ProductDescription 14 顺序图的基本表示法 什么是顺序图 SequenceDiagram 显示一组对象为了实现某种功能 而彼此发送和接收的一串消息 这组对象可能是类 接口 构件 节点和系统的具体的或原型化的实例 强调消息时间顺序顺序图建模元素对象 Object 生命线 Lifeline 消息 Message 执行规格条 ExecutionSpecificationbar AsequencediagramdescribesanInteractionbyfocusingonthesequenceofMessagesthatareexchanged alongwiththeircorrespondingOccurrenceSpecificationsontheLifelines fromUML2 0SuperstructureSpecification 消息和执行规格条 16 图15 7消息和控制期的执行条 表示应答或返回消息 17 图15 8表示消息返回结果的两方式 发给 自身 的消息 18 图15 9发送给 自身 的消息 实例的创建 19 图15 10实例的创建和对象的生命线 对象的销毁 20 图15 11对象销毁 UML顺序图中的图框 21 图15 12UML图框的示例 常见的图框操作符见P168表 有条件消息 22 图15 13有条件消息 互斥的有条件消息 23 图15 15互斥的有条件消息 对集合的迭代 24 图15 16使用相对直接的表示法对集合进行遍历 可能的Java代码实现见下页 图15 6可能的Java代码实现 publicclassSale privateListlineItems newArrayList publicMoneygetTotal Moneytotal newMoney Moneysubtotal null for SalesLineItemlineItem lineItems subtotal lineItem getSubtotal total add subtotal returntotal 25 隐含地表示对集合的迭代 26 图15 17隐含地表示对集合的迭代 图框的嵌套 27 图15 18图框的嵌套 如何关联交互图 28 图15 19交互具体值的示例 sd和ref图框 对类调用静态 或类 方法的消息 29 图15 20调用类或静态方法 以元类的实例表示类对象 publicclassFoo publicvoiddoX 调用Calender类的静态方法Locale locals Calendar getAvailableLocales 异步和同步调用 30 图15 22异步调用和主动对象 异步消息调用不等待响应 不会阻塞 异步消息在多线程环境中使用 刺形箭头消息表示异步调用 实心箭头消息表示同步调用 在阅读草图时 不要假设箭头的形状是正确的 应用顺序图 分析阶段系统顺序图 UML没有定义所谓的 系统 顺序图 而只是定义了 顺序图 系统 这一限定词强调将系统的应用视为黑盒 设计阶段顺序图 阐述完成工作的交互软件对象的设计 31 32 通信图的基本表示法 什么是通信图 CommunicationDiagram 关注对象在参与具体的交互时 对象之间如何链接以及传递什么消息 是对象间消息的结构化视图 通信图包含了3个元素 对象 Object 链 Link 消息 Message 34 链 图15 23表示链的线 链是连接两个对象的路径 它指明了对象间某种可能的导航和可见性 更正式的说 链是关联的实例 消息 35 图15 24消息 准则 不要为起始消息编号 这样可以简化整个编号 自身 传递的消息 36 图15 25传递到 自身 的消息 实例的创建 37 图15 26实例的创建 消息的顺序编号1 38 图15 27顺序编号 消息的顺序编号2 39 图15 28复杂的顺序编码 40 有条件消息 图15 29有条件消息 互斥的有条件消息 41 图15 30互斥的消息 42 迭代或循环 图15 31迭代 集合的迭代 43 图15 32对集合的遍历 对类调用静态 类 方法的消息 44 图15 33发送给类对象的消息 静态方法调用 45 异步和同步调用 图15 35通信图中的异步调用 顺序图与类图的映射 47 顺序图与类的映射 示例1 图15 1顺序图 publicclassA privateBmyB newB publicvoiddoOne myB doTwo myB doThree 顺序图与类的映射 示例2 48 图15 3顺序图 publicclassSale privatePaymentpayment PublicvoidmakePayment MoneycashTendered payment newPayment cashTendered 顺序图与类图的映射 消息的传入 类对象所具有的操作 责任 行为 顺序图与类图的映射 消息传入 说明订单有以下操作订单 结账订单 合计总价钱订单 付款订单 检验信用卡 消息的传出 类对象完成操作所需合作者 协作 顺序图与类图的映射 顺序图与类图的映射 消息传出 订单 结账 订单项 计算价钱 订单项 计算税金 订单项 寻找最近的供应商 订单项 计算运费 订单 合计总价钱 建模工具允许自动映射到类 责任分配 每天凌晨4 30 农夫Jones都要起床 到牛栏去挤奶 怎样用OO方法表达这个挤奶过程 面向过程的奶牛挤奶 定义函数Milk floatMilk structcow floatamount 挤奶 使奶离开奶牛 的过程 面向过程的问题 挤奶 操作是孤立的没有对挤奶农夫的需求Milk 必须告诉那头牛来挤奶Milk 直接访问结构的内部Milk 和结构形成耦合 面向对象的挤奶 涉及的实体农夫 奶牛涉及的关系农夫是奶牛的主人 农夫挤奶牛的奶 但这样行得通吗 牛奶在奶牛那里 不在农夫那里 Farmer Milk不得不访问Cow内部的行为Farmer Milk要调用Cow的哪些操作 另一种责任分配方法 另一种方法 把Milk 放在Cow中为了挤奶 Farmer调用Cow milk 操作所有的 结构 信息 数据 隐藏在Cow中在OO模型中 Farmer不是直接从Cow中取奶 而是请求Cow自己挤奶 考虑 谁知道奶牛有奶 谁知道在请求挤奶时是否有奶可挤 如果农夫请求挤 升但奶牛只有 升可以提供 谁来决定应该提供 还是 升 奶牛 奶牛 奶牛 信息专家 奶牛 基于责任分配原则 系统顺序图 什么是系统顺序图 系统顺序图 SSD 是阐述与所讨论系统相关的输入和输出事件而快速 简单创建的制品 顺序图 对于用例的一个特定场景 SSD展示了直接与系统交互的外部参与者对系统 作为黑盒 发起的系统事件以及其 系统事件 顺序 系统被视为黑盒 该图强调的是从参与者到系统的跨越系统边界的事件 系统顺序图是操作契约 第11章 和 最重要的 对象设计的输入 63 64 准则 应为每个用例的主成功场景 以及频繁发生或者复杂的替代场景绘制SSD 动机 为什么绘制SSD 基本上 软件系统要对以下三种事件进行响应来自于参与者的外部事件 系统事件 时间事件错误或异常系统事件需要系统操作 系统行为 对它进行处理 65 66 UP制品示例的相互影响 SSD和用例之间的关系 67 图10 3SSD由用例导出 表示了一个场景 如何为系统事件和操作命名 68 图10 4在抽象级别上选择事件和操作的名称 系统事件应在意图的抽象级别而非物理的输入设备级别来表达 SSD的哪些信息要放入词汇表 SSD中的元素 操作名称 参数和返回的数据 是简洁的 应在词汇表中详细描述这些元素 如 在UP词汇表中加入 票据 条目 显示票据样本 可以是数据图片 详细内容和布局 准则 对大多数制品来说 一般在词汇表中描述其细节 69 过程 迭代和进化式SSD 不用为所有场景创建SSD 只需为下次迭代所用的场景绘制SSD 不需要花太长时间绘制SSD 用几分钟或半个小时即可当需要了解现有系统的接口和协作时 SSD也是十分有效的 SSD是用例模型的一部分 将用例场景可视化 虽然SSDs非常有用但在UP中没有明确地提及初始阶段一般不画SSDs 大部分SSD在细化阶段创建 用来明确必须被设计和处理的系统操作 70 实践 为以下用例画系统顺序图 用例名称 发送天气信息主要参与者 时间代理协作参与者 运营商网关系统主成功场景 1 时间代理自动请求系统发送天气信息2 系统读取定制了天气预报业务的用户手机号 3 系统读取当天的天气信息 4 系统按照指定的格式将包含了用户手机号和天气信息的短信发送到运营商网关系统 5 运营商网关系统成功返回下发的状态信息 重复4 5步骤6 系统显示发送结束 鲁棒性分析 分析和设计之间的鸿沟 从用例规约向概念性设计过度时会遇到一些困难 用例是面向问题域的 设计是面向机器域的 这两个 空间 之间存在映射 用例技术本身不是面向对象的 而设计应该是面向对象的 这是两种不同的思维方式 用例规约采用自然语言描述 而设计采用形式化的模型描述 描述手段也不同 一种方法通过分析用例规约中的事件流 识别出实现用例规定的功能所需的主要对象及其职责 形成以职责模型为主的初步设计 由IvarJacobson提出 一个过程它引导我们从用例创建一个支持用例的设计组件模型 它被称为设计模型 什么是鲁棒性分析 鲁棒性分析 鲁棒图简介 鲁棒图包含三种元素 边界对象 控制对象和实体对象边界对象 用来隔离系统内外 通常负责接收并响应系统内外的信息 控制对象 用来控制用例执行期间的复杂运算或者业务逻辑 通常针对一个用例 就会对应生成一个控制类 实体对象 保存问题领域中的重要信息 封装数据结构和数据储存有关的变化 鲁棒性分析 鲁棒图简介 鲁棒图的三种对象很好地概括了实际系统中对象的三类职责 交互 控制 信息 并且 这三种职责和组成架构的抽象元素及MVC架构的元素有完美的对应关系 鲁棒性分析 鲁棒图建模原则 1 参与者只能与边界对象交谈 2 边界对象只能与控制体和参与者交流 3 实体对象也只能与控制体交谈 4 控制体既能与边界对象交谈 也能与控制体交谈 但不能与参与者交谈 UML用例驱动对象建模 DougRosenberg 鲁棒性分析的输入 一个用例这个用例的用例场景这个用例的活动图 如果可以用到 域模型 domainmodel 鲁棒性分析的输出 UML交互图一些设计组件 边界 服务 实体组件 得出设计模型 鲁棒性分析 输入输出 边界组件 2020 1 3 79 ResvUI 抽取用户界面 通信接口等 用户接口组件 每一个边界组件必须至少与一个参与者关联起来 80 2020 1 3 控制 服务 组件 控制 服务 组件扮演协调 序列化 事务以及控制另外的对象的角色 而且他们经常被用来封装与某个特定用例的控制 调整控制流在工作流中隔离所有从边界组件到实体组件的更改 实体组件 一个实体组件通常用来模拟那些长期存在并且具用持久性的信息 2020 1 3 81 82 2020 1 3 鲁棒性分析 过程描述 1 选择一个用例 2 构造一个满足用例活动性的通信图 a 识别支持用例活动的设计组件 b 画出这些组件间的关联c 用信息标记这些关联3 从另一个角度 把通信图转换成顺序图 可选的 83 2020 1 3 鲁棒性分析 演示 1 选择一个适当的用例 2 把一个参与者放到通信图里面 3 分析这个用例 活动图 对于用例的每一个动作 a 确定并增加边界组件b 确定并增加服务组件c 确定并增加实体组件d 画出这些组件间的关联e 把每个组件都贴上用来满足用例交互的动作标签 84 2020 1 3 第1步 选择一个用例 选择一个用例 创建预约1 顾客联系预约代理2 预约代理选择 新建预约 图标3 预约代理输入查询标准 包括入住和退宿日期 房间类型4 预约代理点击 查询 按钮5 系统显示可预订的房间6 预约代理选择其中的一个房间 11 预约代理输入顾客姓名12 预约代理点击 查询 按钮13 系统显示该顾客地址 电话等信息 21 系统保存预约并显示预约编号22 预约代理点击 确定 85 2020 1 3 第2步 在图中放置参与者 把参与者放到通信图中 86 2020 1 3 第3a步 确定边界组件 活动 2 预约代理选择 新建预约 87 2020 1 3 第3a步 确定边界组件 活动 2 预约代理选择 新建预约 88 2020 1 3 第3b步 确定服务组件 活动 2 预约代理选择 新建预约 89 2020 1 3 第3c步 确定实体组件 活动 2 预约代理选择 新建预约 90 2020 1 3 在活动图里分析所有动作 活动 3 预约代理输入查询标准 91 2020 1 3 在活动图里分析所有动作 活动 4 预约代理点击 查询 按钮 92 2020 1 3 把通信图转换成顺序图 为了给鲁棒性分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林防灭火知识培训课件
- 森林防火培训知识课件
- 病毒性肝炎试题附答案
- 2025年标准部招聘面试模拟题解析
- 2025年中级医学影像专业考试试题解析及答题技巧
- 云南省剑川县第一中学2026届化学高三上期中经典试题含解析
- 2026届山东省泰安第十九中学化学高一第一学期期中学业质量监测试题含解析
- 桥式起重机知识培训课件
- 桡骨骨折护理课件
- 2025年初级办公软件操作技巧考试模拟题及解析
- 赏识你的学生
- 心衰病患者护理查房课件
- TSG11-2020 锅炉安全技术规程
- 哲学导论(完整版)
- 水泥化学分析方法培训精品课件
- 合成孔径雷达
- 四年级上册可爱的榆林全册教案
- 金属封闭母线
- 北师大版数学四年级下册全册教案设计
- 贵州省评标专家库
- 汉语拼音发音表(适合初学者和老年人)
评论
0/150
提交评论