软件需求-第13课-软件需求分析-面向对象建模(三)(第1版).ppt

上传人:good****022 文档编号:119746633 上传时间:2022-07-15 格式:PPT 页数:71 大小:1.41MB
返回 下载 相关 举报
软件需求-第13课-软件需求分析-面向对象建模(三)(第1版).ppt_第1页
第1页 / 共71页
软件需求-第13课-软件需求分析-面向对象建模(三)(第1版).ppt_第2页
第2页 / 共71页
软件需求-第13课-软件需求分析-面向对象建模(三)(第1版).ppt_第3页
第3页 / 共71页
点击查看更多>>
资源描述
软件需求 哈尔滨工程大学计算机科学与技术学院海量数据挖掘及网络数据集成研究组王念滨教授博导 第13章面向对象建模 三 本课主要讨论问题 2对象模型 3用例模型 4行为模型 1面向对象分析 5对象约束语言OCL 6面向对象建模 4行为模型 交互图 InteractionDiagram 顺序图 SequenceDiagram 通信图 CommunicationDiagram 交互概述图 InteractionOverviewDiagram 时间图 TimingDiagram 活动图 ActivityDiagram 状态图 StateDiagram 行为模型 4行为模型 以一组对象为中心的交互描述技术描述在特定上下文环境中一组对象的交互行为通常描述的是单个用例的典型场景交互图中的每一个交互都描述了环境中的对象为了实现某个目标而执行的一系列消息交换顺序图和通信图是最常用的交互图交互图中出现的对象应该在领域模型中有相应的对象存在 行为模型 交互图 在标识出系统的类图之后 仅给出了实现用例的组成结构 这时还需要描述这些类的对象是如何交互来实现用例功能的 即不但需要把用例图模型转化为类图模型 还要将它转化为交互图模型 4行为模型 行为模型 交互图 顺序图 可视化地对系统逻辑建模 顺序图用于对使用情景进行逻辑建模 使用情景是描述系统使用的一种潜在的方式 使用情景的逻辑可能是用例的一部分 也可能是候选过程 使用情景可能跨越多个用例所包含的逻辑 例如 学生注册进入大学 然后立即可以在多个讨论班中注册 顺序图是采用一种可视化的方式对系统的逻辑流程进行建模 以便能够记录并验证分析的逻辑 通常被应用在分析和设计领域 4行为模型 4行为模型 定义顺序图顺序图是交互图之一 顺序图用来建模以时间顺序安排的对象交互 并且把用例行为分配给类 它是用来显示参与者如何采用若干顺序步骤与系统对象交互的模型 为什么要建模顺序图建模顺序图有许多理由 顺序图与活动图具有类似的作用 其中重要的理由就是实现用例 任何用例都可以使用顺序图进一步阐明和实现 使用顺序图建模 4行为模型 顺序图的标记符顺序图有两个主要的标记符 活动对象和这些活动对象之间的通信消息 活动对象可以是任何在系统中扮演角色的对象 不管它是对象实例还是参与者 如下图所示 使用顺序图建模 4行为模型 活动对象之间发送的消息是顺序图的关键 消息说明了对象之间的控制流 对象是如何交互的 以及什么条件会改变控制流 活动对象 活动对象可以是系统的参与者或者任何有效的系统对象 对象是类的实例 它使用包围名称的矩形框来标记 名称带下划线 顺序图中对象的标记符如下图所示 顺序图的对象与消息 4行为模型 消息 消息用来说明顺序图中不同活动对象之间的通信 它可在一个对象需要取消不同对象的进程时或者需要向另一个对象提供服务时 使用消息 消息从活动对象生命线到接收对象生命线的箭头表示 箭头上面标记要发送的消息 如下图所示 活动对象之间发送的消息是顺序图的关键 消息说明了对象之间的控制流 对象是如何交互的 以及什么条件会改变控制流 顺序图的对象与消息 4行为模型 顺序图的对象与消息 活动对象为参与者的情况 把参与者表示为活动对象的建模可以说明参与者如何与系统交互 以及系统如何与用户交互 参与者可以调用对象 对象也可以通知参与者 如下图所示 4行为模型 上面的图例说明了参与者和对象可以把消息发送给顺序图中的任何参与者或者对象 它们可以把消息发送给不是其直接相邻的参与者或者对象 下面看一个意义更加丰富的示例 对于CompileApplication用例 可以创建一个成功编译工作流的顺序图 如图所示 4行为模型 这个顺序图中有4个活动对象 Developer Compiler Linker和FileSystem Developer是系统的参与者 Compiler是Developer交互的应用程序 Linker是一个用来链接对象文件的独立进程 FileSystem是系统层功能的包装器 用来执行文件的输人和输出例程 CompileApplication用例的顺序图操作 Developer请求Compiler执行编译Compiler请求FileSystem加载文件Compiler通知自己执行编译Compiler请求FileSystem保存对象代码Compiler请求Linker链接对象代码Linker请求FileSystem加载对象代码Liker通知自己执行链接Linker请求FileSystem保存编译的结果 顺序图示例 4行为模型 消息是顺序图活动对象之间通信的惟一方式 UML中的消息使用了一些简洁的标记符 消息可以包含条件以便限制它们只在满足条件时才能发送 条件显示在消息名称上面的方括号中 如下图所示 顺序图 如何使用消息进行通信 4行为模型 右图的示例演示了如何建模一个顺序图来显示登录尝试 如果登录失败 会在放弃登录之前重试一次 顺序图 如何使用消息进行通信 4行为模型 顺序图 构建顺序图 示例 编译程序 简化用例CompileApplication用例 Developer请求Compiler执行编译Compiler请求FileSystem加载文件Compiler通知自己执行编译Compiler请求FileSystem保存对象代码Compiler请求Linker链接对象代码Linker请求FileSystem加载对象代码Liker通知自己执行链接Linker请求FileSystem保存编译的结果 4行为模型 顺序图 构建顺序图 构建顺序图的第1步是确定该图是否表示与外部和内部实体的交互 在本方案中 开发人员在系统外部 因此用参与者来表示他 首先将参与者Developer添加到顺序图上 Developer 4行为模型 顺序图 构建顺序图 构建顺序图的第2步是添加将与参与者交互的类 对象 这些类的名称应该能够反映出类或者示例的行为 对于本例 将添加三个类 编译器 连接器和文件系统 Developer Compiler Linker FileSystem 4行为模型 顺序图 构建顺序图 构建顺序图的第2步是添加将与参与者交互的类 对象 这些类的名称应该能够反映出类或者示例的行为 对于软件分析和设计人员来说 顺序图是直观的 它将对象 类 和参与者 横轴 映射到时间 纵轴 消息连接了对象 当消息发生时 它们沿着纵轴从一个对象移动到另外一个对象 这些消息被连接到从对象或参与者底部的中间延伸出的竖直虚线 这条线也被称为生命线 构建顺序图的第3步是根据用例流程确定顺序图的流程 简化用例CompileApplication用例 Developer请求Compiler执行编译Compiler请求FileSystem加载文件Compiler通知自己执行编译Compiler请求FileSystem保存对象代码Compiler请求Linker链接对象代码Linker请求FileSystem加载对象代码Liker通知自己执行链接Linker请求FileSystem保存编译的结果 4行为模型 顺序图 构建顺序图 Developer Compiler Linker FileSystem Developer请求Compiler执行编译 Compile 4行为模型 顺序图 构建顺序图 Developer Compiler Linker FileSystem Compile Compiler请求FileSystem加载文件 LoadFiles 4行为模型 顺序图 构建顺序图 Compiler通知自己执行编译 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles 4行为模型 顺序图 构建顺序图 Compiler请求FileSystem保存对象代码 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles 4行为模型 顺序图 构建顺序图 Compiler请求Linker链接对象代码 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles Link 4行为模型 顺序图 构建顺序图 Linker请求FileSystem加载对象代码 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles Link LoadOBJFiles 4行为模型 顺序图 构建顺序图 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles Link LoadOBJFiles CompileFiles Liker通知自己执行链接 4行为模型 顺序图 构建顺序图 Linker请求FileSystem保存编译的结果 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles Link LoadOBJFiles CompileFiles SaveEXEFiles 4行为模型 顺序图 构建顺序图 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles Link LoadOBJFiles CompileFiles SaveEXEFiles 消息用带箭头的实现表示 返回值用带箭头的虚线表示 4行为模型 顺序图 构建顺序图 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles Link LoadOBJFiles CompileFiles SaveEXEFiles success failure 返回值用带箭头的虚线表示 在分析阶段一般可以不考虑 4行为模型 顺序图 构建顺序图 Developer Compiler Linker FileSystem Compile LoadFiles CompileFiles SaveOBJFiles Link LoadOBJFiles CompileFiles SaveEXEFiles 关于激活状态 4行为模型 顺序图 构建顺序图 消息用带箭头的实现表示 返回值用带箭头的虚线表示 激活状态用矩形框表示示例 顾客购买CD顺序图 4行为模型 活动图 4行为模型 活动图概述 活动图是UML规范中定义的一种图表 是一种表述过程机理 业务过程以及工作流的技术 它可以用于对业务过程 工作流建模 也可以对用例实现或程序实现来建模 因此它的作用和传统的 流程图 有类似性 区别在于 活动图能够更好地支持并行的行为 活动是某件事情正在进行的状态 活动在状态机中表现为一个由一系列动作组成的非原子的执行过程 活动图是一种描述系统行为的图 它用于展现参与行为的类所进行的各种活动的顺序关系 活动图与状态图都是状态机的表现形式 实践经验 很多开发小组在分析期间不画顺序图 而将重点放在活动图上 4行为模型 活动图的图形表示 在UML中 活动表示成圆角矩形 如果一个活动引发下一个活动 两个活动的图标之间用带箭头的直线连接 活动图也有起点和终点 表示法和状态图中相同 活动图中还包括分支与合并 分叉与汇合等模型元素 分支与合并的图标和状态图中的判定的图标相同 而分叉与汇合则用一条加粗的线段表示 4行为模型 活动图的主要元素 初始节点和活动终点 在活动图中有两个特殊的节点 一个用于表示活动的初始节点 用一个实心圆表示 在一个活动图中有且只有一个初始节点 另外一个表示活动处理完成 用一个圆圈内加实心圆来表示 在活动图中可能包含多个活动终点 4行为模型 活动图的主要元素 活动节点 活动节点是活动图中最重要的元素之一 用圆角矩形表示执行的过程或活动 用来表示一个活动 在UML中 活动节点所描述的活动可以使原子的动作 也可以是能进一步分解的一系列操作 它可以使文字描述 表达式 事件等 用户下订单 A B C Dispatch aOrder 文字描述 表达式 消息事件 4行为模型 活动图的主要元素 转换 当一个活动结束时 控制流会立即传递给下一个活动节点 在活动图中称其为转换 用一条带箭头的直线表示 从语义上说 这种转换称为无触发转换 一旦前一个动作完成就无条件地转换到另外一个 4行为模型 分支与监护条件 对任何一个控制流而言 都一定会存在分支 循环等形式的控制流 在活动图中 采用菱形框表示分支 其包含一个进入转换 一个或者多个离开转换 对每个离开转换都存在一个监护条件 用于表示满足什么条件时执行该转换 需要注意的是 在多个离开条件存在时 应保证各条件不会存在矛盾 否则会使流程出现混乱 活动图的主要元素 a 0 a 0 a 0 4行为模型 分支与监护条件 活动图的主要元素 a 0 a 0 a 0 虽然在活动图中没有提供表示循环的建模元素 但可以利用分支来实现 循环 控制流的表示 用户下订单 生成送货单 用户选择支付方式 用户取消或订单超过时限 订单取消 收款 No Yes 供应商送货 修改订单项状态 所有订单项已送货完毕 Yes 订单完成 No 4行为模型 分岔与汇合 活动图的主要元素 在实际的控制流中 除了顺序结构 分支结构和循环结构外 还可能存在并发的事件流 在UML中 可以采用一个同步线来说明这些并行控制流的分岔和汇合 分岔 汇合 如图所示 分岔有一个进入转换 两个或者多个离开转换 汇合有两个或者多个进入转换 一个离开转换 4行为模型 活动图 带泳道的活动图 观察活动图时会发现存在一个问题 上述的活动图无法显示业务活动是由那个对象 类 或者岗位执行的 这在需求分析阶段重点关注业务活动不利 为了有效的解决这一问题 可以通过泳道 Swimlane 来实现 4行为模型 泳道将活动图中的活动化分为若干组 并把每一组指定给负责这组活动的业务组织即对象 泳道区分了负责活动的对象 明确地表示了哪些活动是由哪些对象进行的 每个活动只能明确地属于一个泳道 泳道用垂直实线绘出 垂直线分隔的区域就是泳道 在泳道上方可以给出泳道的名字或对象 对象类 的名字 该对象 对象类 负责泳道内的全部活动 泳道没有顺序 不同泳道中的活动既可以顺序进行也可以并发进行 动作流和对象流允许穿越分隔线 活动图 带泳道的活动图 4行为模型 活动图 带泳道的活动图 用户下订单 生成送货单 用户选择支付方式 用户取消或订单超过时限 订单取消 收款 No Yes 供应商送货 修改订单项状态 所有订单项已送货完毕 Yes 订单完成 No 确定参与活动的对象主要有用户 电子商务网站 供应商 4行为模型 活动图 带泳道的活动图 客户 电子商务网站 供应商 用户下订单 用户选择支付方式 生成送货单 用户取消或订单超过时限 订单取消 Yes No 收款 供应商送货 修改订单项状态 所有订单项已送货完毕 Yes No 订单完成 4行为模型 活动图 带对象流的活动图 对象流是动作状态或者活动状态与对象之间的依赖关系 表示动作使用对象或者动作对对象的影响 对象流中的对象特点 一个对象可以由多个动作操纵 一个动作输出的对象可以作为另一个动作输入的对象 在活动图中 同一个对象可以多次出现 它的每一次出现表明该对象正处于对象生存期的不同时间点 对象流用带有箭头的虚线表示 如果箭头从动作状态出发指向对象 则表示动作对对象施加了一定的影响 如果箭头从对象指向动作状态 则表示该动作使用对象流所指向的对象 4行为模型 客户 电子商务网站 供应商 用户下订单 用户选择支付方式 生成送货单 用户取消或订单超过时限 订单取消 Yes No 收款 供应商送货 修改订单项状态 所有订单项已送货完毕 Yes No 订单完成 活动图 带对象流的活动图 aOrder Order new DeliverOrder new DeliverOrder finished 4行为模型 活动图 带对象流的活动图 当 用户下订单 时 将创建一个Order类的实例 用于存放订单的信息 该Order类还包含相应的OrderItem项 当 生成送货单 时 将根据Order类的实例 创建多个DeliverOrder 送货单 的实例 当 修改订单项状态 之后 DeliverOrder的状态将变成 finished 4行为模型 活动图 活动的分解 一个活动可以分为若干个动作或子活动 这些动作和子活动本身可以组成一个活动图 一个包含子活动的活动和嵌套了子状态的组合状态类似 概念上也相对统一 一个不含内嵌活动或动作的活动称之为简单活动 一个嵌套了若干活动或动作的活动称之为组合活动 组合活动有自己的名字和相应的子活动图 4行为模型 活动图 活动的分解 客户 电子商务网站 供应商 用户下订单 用户选择支付方式 生成送货单 用户取消或订单超过时限 订单取消 Yes No 收款 供应商送货 修改订单项状态 所有订单项已送货完毕 Yes No 订单完成 4行为模型 活动图 活动的分解 收款 80 折扣 无折扣 vip Yes No 本课主要讨论问题 2对象模型 3用例模型 4行为模型 1面向对象分析 5对象约束语言OCL 6面向对象建模 6面向对象建模 1 从用例描述中识别出对象和类 2 分析用例的描述信息 添加类的属性和类之间的关联 3 从用例描述中识别系统行为 4 将系统行为分配给类 5 综合考虑类的属性与行为 细化类的职责 建立完全的对象模型 面向对象建模 技术路线 6面向对象建模 实际情况中 分析和设计的制品区别不仅仅是粗略和细化的问题 也反映了开发组的习惯和作风 有些项目组在需求工程阶段主要关心用例模型 他们将分析做得很简单 设计很详细 有的组分析和设计放一块完成了 我的观点 如果是大型项目 还是要有区别 如果是小项目 用例完成后 就开始设计 编码 分析就免了 仅供参考 6面向对象建模 面向对象分析的结果 建立领域模型 建立行为模型用例模型 类模型顺序图 活动图 6面向对象建模 建立领域模型发现对象和类概念类分类列表名词分析行为分析建立类之间的关联添加类的重要属性 6面向对象建模 建立领域模型 发现对象和类 如果候选对象既维持一定的状态 又依据状态表现一定的行为 那么它就应该是一个独立存在的对象如果候选对象只有状态没有行为 那么就要分析它的状态是否是系统需要的数据 如果系统需要它的状态数据 那么该候选对象就应该作为其他对象的属性出现在最终的领域模型当中 否则 该候选对象应该被摈弃如果候选对象只有行为没有状态 那么往往意味着需求信息的遗漏需要注意实体关系建模思想带来的误区 6面向对象建模 概念类分类列表这种方法事先给出一个概念类的分类列表 从中发现对象 建立领域模型 发现对象和类 6面向对象建模 概念类分类列表示例 建立领域模型 发现对象和类 6面向对象建模 名词分析从文本描述中识别出有关的名词和名词短语 然后从中发现对象 建立领域模型 发现对象和类 6面向对象建模 建立领域模型 发现对象和类 6面向对象建模 保证类之间协作所必需的可见性适当使用问题域内的关联 增强领域模型的可理解性要适可而止不要在关联的识别上花费太多的时间识别概念类比识别关联更加重要避免显示冗余和导出的关联 建立领域模型 类建立类间关系 原则 6面向对象建模 建立领域模型 类建立类间关系 示例 6面向对象建模 建立领域模型 添加类的重要属性 实现类协作时必要的信息 是协作的条件 输入 结果或者过程记录使用用户的描述方式 不进行类型和约束的严格定义 6面向对象建模 建立行为模型 建立行为模型建立系统顺序图在需要时建立详细的交互图建立用例的状态图或者重要类的状态图建立活动图为系统行为添加契约说明 6面向对象建模 确定交互图的上下文环境上下文环境的前置条件和后置条件应该被分配给交互图中的相应行为找出参与交互的对象交互图中的参与对象 和对象之间的关联 应该和领域模型中的知识保持一致 根据发现的对象 和关联 建立交互图框架添加消息 描述交互行为考虑和系统相关的 系统内的 系统与外部对象之间的 交互行为 忽略那些与系统无关的 外部对象之间的 交互行为 如果建立的是系统顺序图 那么系统内的行为也可以被忽略 进行消息标识 特化图示等详细信息的描述 将交互图的信息补充完整 建立行为模型 建立交互图 6面向对象建模 建立行为模型 建立交互图 6面向对象建模 确定活动图的上下文环境界定业务流程的处理界限分析业务流程中的主要处理步骤分析业务流程中的主要数据流进行职责分配 将业务流程的处理步骤划分到不同的泳道 并将处理步骤和数据流的传递组织起来 建立活动图添加活动图的详细信息 完善活动图描述 建立行为模型 建立活动图 6面向对象建模 建立行为模型 建立活动图 6面向对象建模 不需要为所有的系统行为都定义操作契约 可以有选择的为其中的一部分系统行为定义操作契约涉及到很多状态变化的复杂行为因果关系比较微妙的模糊行为可以从下面几个角度进行约束的发现工作 不变量 系统行为中所涉及的敏感状态 这些状态的改变往往会产生广泛的连锁反应不可改变的属性 不可改变的关联关系前置条件 行为发生和顺利完成所需要的系统的状态条件合法的参数有效的状态对象的存在状态 对象的属性取值 有效的关联关系后置条件 行为顺利完成之后引起的系统状态改变有效状态的改变对象的存在状态 对象的属性取值关联关系的改变 建立行为模型 添加契约说明 6面向对象建模 Contract enterItem itemID ItemID quantity integer CrossReferences ProcessSalePrecondition ThereisasaleunderwayPost condition ASalesLineIteminstancessliwascreatedsliwasassociatedwiththecurrentSalesli quantitybecomequantitysliwasassociatedwithaProductSpecification basedonitemIDmatch 建立行为模型 添加契约说明
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸下载 > PROE图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!