软件需求-第13课-软件需求分析-面向对象建模(三)(第1版)_第1页
软件需求-第13课-软件需求分析-面向对象建模(三)(第1版)_第2页
软件需求-第13课-软件需求分析-面向对象建模(三)(第1版)_第3页
软件需求-第13课-软件需求分析-面向对象建模(三)(第1版)_第4页
软件需求-第13课-软件需求分析-面向对象建模(三)(第1版)_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软 件 需 求,哈尔滨工程大学计算机科学与技术学院海量数据挖掘及网络数据集成研究组 王念滨 教授 博导,第 13 章 面向对象建模(三),本课主要讨论问题,2 对象模型,3 用例模型,4 行为模型,1 面向对象分析,5 对象约束语言OCL,6 面向对象建模,4 行为模型,交互图(Interaction Diagram)顺序图(Sequence Diagram)通信图(Communication Diagram)交互概述图(Interaction Overview Diagram)时间图(Timing Diagram)活动图(Activity Diagram)状态图(State Diagram),行为模型,4 行为模型,以一组对象为中心的交互描述技术 描述在特定上下文环境中一组对象的交互行为 通常描述的是单个用例的典型场景交互图中的每一个交互都描述了环境中的对象为了实现某个目标而执行的一系列消息交换 顺序图和通信图是最常用的 交互图交互图中出现的对象应该在领域模型中有相应的对象存在,行为模型-交互图,在标识出系统的类图之后,仅给出了实现用例的组成结构,这时还需要描述这些类的对象是如何交互来实现用例功能的。即不但需要把用例图模型转化为类图模型,还要将它转化为交互图模型。,4 行为模型,行为模型-交互图,顺序图-可视化地对系统逻辑建模。 顺序图用于对使用情景进行逻辑建模。使用情景是描述系统使用的一种潜在的方式。使用情景的逻辑可能是用例的一部分,也可能是候选过程。使用情景可能跨越多个用例所包含的逻辑。例如,学生注册进入大学,然后立即可以在多个讨论班中注册。顺序图是采用一种可视化的方式对系统的逻辑流程进行建模,以便能够记录并验证分析的逻辑,通常被应用在分析和设计领域。,4 行为模型,4 行为模型,定义顺序图 顺序图是交互图之一。顺序图用来建模以时间顺序安排的对象交互,并且把用例行为分配给类。它是用来显示参与者如何采用若干顺序步骤与系统对象交互的模型。,为什么要建模顺序图 建模顺序图有许多理由,顺序图与活动图具有类似的作用。其中重要的理由就是实现用例。任何用例都可以使用顺序图进一步阐明和实现。,使用顺序图建模,4 行为模型,顺序图的标记符 顺序图有两个主要的标记符:活动对象和这些活动对象之间的通信消息。活动对象可以是任何在系统中扮演角色的对象,不管它是对象实例还是参与者,如下图所示。,使用顺序图建模,4 行为模型,活动对象之间发送的消息是顺序图的关键。消息说明了对象之间的控制流,对象是如何交互的,以及什么条件会改变控制流。,活动对象: 活动对象可以是系统的参与者或者任何有效的系统对象。对象是类的实例,它使用包围名称的矩形框来标记。名称带下划线,顺序图中对象的标记符如下图所示。,顺序图的对象与消息,4 行为模型,消息:消息用来说明顺序图中不同活动对象之间的通信。它可在一个对象需要取消不同对象的进程时或者需要向另一个对象提供服务时,使用消息。消息从活动对象生命线到接收对象生命线的箭头表示。箭头上面标记要发送的消息,如下图所示:,活动对象之间发送的消息是顺序图的关键。消息说明了对象之间的控制流,对象是如何交互的,以及什么条件会改变控制流。,顺序图的对象与消息,4 行为模型,顺序图的对象与消息,活动对象为参与者的情况,把参与者表示为活动对象的建模可以说明参与者如何与系统交互,以及系统如何与用户交互。参与者可以调用对象,对象也可以通知参与者,如下图所示:,4 行为模型,上面的图例说明了参与者和对象可以把消息发送给顺序图中的任何参与者或者对象。它们可以把消息发送给不是其直接相邻的参与者或者对象。 下面看一个意义更加丰富的示例。对于Compile Application用例,可以创建一个成功编译工作流的顺序图,如图所示。,4 行为模型,这个顺序图中有4个活动对象:Developer、Compiler、Linker和FileSystem。Developer是系统的参与者。Compiler是Developer交互的应用程序。Linker是一个用来链接对象文件的独立进程。FileSystem是系统层功能的包装器,用来执行文件的输人和输出例程。,Compile Application用例的顺序图操作: Developer请求Compiler执行编译 Compiler请求FileSystem 加载文件 Compiler通知自己执行编译 Compiler请求FileSystem 保存对象代码 Compiler请求Linker链接对象代码 Linker请求 FileSystem加载对象代码 Liker通知自己执行链接 Linker请求FileSystem保存编译的结果,顺序图示例,4 行为模型,消息是顺序图活动对象之间通信的惟一方式。UML中的消息使用了一些简洁的标记符。 消息可以包含条件以便限制它们只在满足条件时才能发送。条件显示在消息名称上面的方括号中,如下图所示。,顺序图-如何使用消息进行通信,4 行为模型,右图的示例演示了如何建模一个顺序图来显示登录尝试。如果登录失败,会在放弃登录之前重试一次,顺序图-如何使用消息进行通信,4 行为模型,顺序图-构建顺序图,示例:编译程序,简化用例 Compile Application用例: 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步是根据用例流程确定顺序图的流程。,简化用例 Compile Application用例: 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 行为模型,分支与监护条件,对任何一个控制流而言,都一定会存在分支、循环等形式的控制流。在活动图中,采用菱形框表示分支。其包含一个进入转换,一个或者多个离开转换,对每个离开转换都存在一个监护条件,用于表示满足什么条件时执行该转换。需要注意的是,在多个离开条件存在时,应保证各条件不会存在矛盾,否则会使流程出现混乱。,活动图的主要元素,a0,a0,a0,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:Ordernew,:DeliverOrdernew,:DeliverOrderfinished,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 面向对象建模,确定交互图的上下文环境上下文环境的前置条件和后置条件应该被分配给交互图中的相应行为找出参与交互的对象交互图中的参与对象(和对象之间的关联)应该和领域模型中的知识保持一致。根据发现的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论