软件工程—第6章 面向对象设计—OMT介绍ppt课件.ppt
第六章 面向对象设计,面向对象的主要方法,Coad/Yourdon的方法Rumbaugh等的OMT方法Booch的方法Wirtf-Brock等的RDD方法此外,还有ESA的HOOD方法、Shlear和Mellor的OOSA方法、Wasserman的OOSD方法、Reenksang的OORASS方法、Embley的OSA方法、Gibon的OBA方法、Page-Jones和Weiss及Buhr的SYNTHESIS方法等,Coad与Yourdon的方法 Coad与Yourdon的方法是在信息模型化技术、面向对象程序设计语言及知识库系统的基础上发展起来的,这个方法分为OOA和OOD两部分。,面向对象的分析(OOA)Coad与Yourdon和其它描写面向对象方法的作者一样,认为OOA主要考虑与一个特定应用有关的对象及对象与对象之间在结构与相互作用上的关系。 1.OOA的任务1)形式地说明所面对的应用问题,最终成为软件系统基本构成的对象,还有系统所必须遵从的,由应用环境所决定的规则和约束。2)明确地规定构成系统的对象如何协同合作,完成指定的功能。,Coad与Yourdon的方法,在OOA中,要建立分析模型来描述系统的功能第一个层次主要是识别类和对象,这是整个分析模型的基础。第二层和第三层是属性层和服务层,用以说明前面已识别的类和对象。第四层是结构层,OOA允许两种类型的基本结构:一是整体与部分结构,也叫组装结构,组装结构表示聚合,即由属于不同类的成员聚合而成新的类;二是泛化与特化结构,也叫分类结构。其中,特化类是泛化类的子类,泛化类是特化类的父类。分类结构具有继承性,泛化类和对象的属性与服务一旦被识别,即可在特化类和对象中使用。第五层是主题层,是一些类和对象的特定组合表示,用来帮助和指导模型的读者。,Coad与Yourdon的方法,Coad与Yourdon的方法,2.OOA的步骤 1)找到类和对象首先确定问题空间中包含哪些对象,有哪些操作,这些对象之间有什么关系,它们与操作又有什么关系。 对象应该是实际问题域中有意义的个体或概念实体,具有目标软件系统所关心的属性,还应该以某种方式与系统发生关联,即对象必须与系统中其他有意义的对象进行消息传递,并提供外部服务。有关对象命名的重要原则:a.使用单个名词或名词短语;b.对象名称必须简洁、精确、易于理解;c.尽量使用用户熟悉的标准词汇。,Coad与Yourdon的方法,2)确定结构 第一种结构是分类结构,代表了确定的类中的继承等级。 另一种结构是组装结构,即由属于不同类的成员聚合而成新的类。 3)定义主题 确定主题通过将类和对象划分成更大的单元来完成。主题是类和对象的组合。每个主题的规模按有助于读者通过模型理解系统来选择。,Coad与Yourdon的方法,4)定义属性 对每个对象,确定划给该对象所需的属性。关键是识别与当前所处理的问题相关的属性。 被确定的属性放到继承等级的正确层次。 注意应避免冗余的或不正确的属性 5)定义服务 对象怎样进行消息通信是用消息的联系来确定的。这些都用来指定某一个操作。 综上所述,OOA大体上可以按照这个顺序进行。但是,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。,Coad与Yourdon的方法,面向对象的设计(OOD) OOA到OOD实际上是一个逐渐扩充模型的过程。面向对象分析主要模拟问题空间和系统任务;而面向对象设计则是对其进行扩充,主要是增加各种组成部分。OOA识别和定义的类/对象,是一些直接反映问题空间和系统任务的;而OOD识别和定义的类/对象则是附加的,反映需求的一种实现。Coad与Yourdon在设计阶段中继续采用分析阶段中提到的五个层次,他们认为这有助于从分析到设计的过渡。不同的是,在设计阶段中,这五个层次是用于建立系统的四个组成成分上。这四个组成成分是:问题论域,用户界面,任务管理和数据管理。,Coad与Yourdon的方法,问题论域部分包括与所面对的应用问题直接有关的所有类和对象。 在其它的三个部分中,识别和定义新的类和对象。,Coad与Yourdon的方法,1.问题域部分(PDC)的设计 OOA阶段得到的有关应用的概念模型描述了所要解决的问题 。在OOD阶段,主要是对OOA产生模型中的某些类与对象、结构、属性、操作进行组合与分解,或者增加必要的类、属性和联系。,Coad与Yourdon的方法,1)复用设计 根据问题解决的需要,把从现有的类库或其它来源得到的现存类增加到问题解决方案中去。2)把问题论域的专用类关联起来3)为建立公共操作集合建立一般类4)调整继承级别,Coad与Yourdon的方法,2.用户界面部分(HIC)的设计 通常在OOA阶段给出了所需的属性和操作,在设计阶段必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必需的实际显示和输入。,Coad与Yourdon的方法,1)用户分类 通常可将其分为外行型、初学型、熟练型和专家型四类 2)描述人及其任务的场景什么人、特点、期望软件用途、主要要求与喜好以及任务场景等。3)设计命令层尽量遵循用户界面的一般原则和规范,根据用户分析结果确定初步的命令系统,然后再优化。 4)设计详细的交互5)设计HIC(人机交互)类,Coad与Yourdon的方法,3.任务管理部分(TMC)的设计 任务是进程的别称,是执行一系列活动的一段程序,或者说,任务是由目标软件系统中一段代码决定的处理行为。任务管理主要包括任务的选择和调整。,Coad与Yourdon的方法,1)识别事件驱动任务 一些负责与硬件设备通信的任务是事件驱动的,也就是说这些任务可由事件来激发,而事件常常是当数据到来时发出的一个信号。 2)识别时钟驱动任务 以固定的时间间隔激发这种事件,以执行某些处理。 3)识别优先任务和关键任务 根据处理的优先级别来安排各种任务。在系统中,有些操作具有高优先级,因此必须在很强的时间限制内完成;有些操作具有较低的优先级,可进行时间要求较低的处理。关键任务是对系统的成败起关键作用的处理,这些处理要求有较高的可靠性。,Coad与Yourdon的方法,4)识别协调者 当有三个或更多的任务时,应当增加一个附加任务,专门负责任务之间的调度、协同和仲裁。5)评审各个任务 6)定义各个任务定义任务的工作主要包括它是什么任务、如何协调工作及如何通信。任务的定义如下:name(任务名)description(描述)priority(优先级)servicesincluded(包含的操作)communication via(经由谁通信),Coad与Yourdon的方法,4.数据管理部分(DMC)的设计 数据管理部分提供了在数据管理系统中存储和检索对象的基本结构 设计数据管理部分的目的是,将目标软件系统中依赖开发平台的数据存取部分与其他功能分离,数据存取通过一般的数据管理系统实现,但实现细节集中在DMC中。这样既有利于软件的扩充、移植和维护,又简化了软件设计、编码和测试的过程。,Coad与Yourdon的方法,1)数据管理方法数据管理方法主要有三种文件管理关系数据库管理面向对象的数据库管理 2)数据管理部分的设计数据存储管理部分的设计包括数据存放方法的设计和相应操作的设计,Coad与Yourdon的方法,OMT(object modeling technique) OMT是美国通用电气公司在总结其内部多年来采用OO技术开发实践的基础上提出的一套系统开发方法学。OMT最早是由Loomis,Shan和Rumbaugh在1987年提出的,曾扩展应用于关系DB设计。J.Rumbaugh在1991年正式把OMT应用于OO的分析和设计。它以面向对象思想为基础,通过构造一组相关模型(对象模型、动态模型和功能模型)来获得关于问题的全面认识(即问题领域模型),是在实体关系模型上扩展了类、继承和行为而得到的。,对象模型(object model)代表了系统的静态的、结构方面的特性。动态模型(dynamic model)代表了系统对象之间的时间的、行为的、控制方面的特性。功能模型(functional model)主要描述值与值之间的函数关系。这三个模型从不同角度对系统进行描述,分别抓住了系统的一个重要方面,组合起来构成了对系统的完整描述。OMT认为一个典型的软件过程是三个方面的合作:它的数据结构(对象模型)、它按时间顺序的操作(动态模型)和它所改变的值(功能模型)。,OMT方法,在分析阶段,应用领域的一个模型被建立,不考虑最后的实现。在设计阶段,解决领域的结构加入模型中,明确系统中各个类的定义和相互关系以及各个类中的操作,并考虑到重用效率,重新设计一些类和关系。在实现阶段,应用领域和解决领域的结构都被编码。,OMT方法,模型有两层含义:从系统的观点看对象模型动态模型功能模型从开发阶段看分析模型设计模型实现模型,OMT方法,三种模型介绍1.对象模型对象模型描述了系统中对象的结构,即它们的标识、它们与其它对象之间的关系、它们的属性以及它们的操作。 对象模型为动态模型和功能模型提供了重要的框架,因为只有当事物变化时,动态模型和功能模型才有存在的意义。 对象模型用包含对象及对象的关系图表示。,OMT方法,OMT方法,类之间的联系称为关系。类之间的关系在OMT符号中用一条线表示。对象图在关系线的端点用特定的符号表示多元性。,OMT方法,对象模型中类之间的三种基本关系以OMT符号来表示 1)相关关系,OMT方法,2)包容关系,OMT方法,3)继承关系,OMT建立一个对象模型的步骤大致如下:确定对象类定义一个DD,包括类、属性和关系的描述增加类之间的关系增加对象和联系的属性用继承组织和简化对象类用场景测试访问路径如有需要重复以上各步基于相近的关系和相关的功能将成组的对象形成模块,OMT方法,2.动态模型动态模型描述系统中与时间有关的方面以及操作执行的顺序,包括引起变化的事件、事件的序列、定义事件序列上下文的状态、以及事件和状态的主次。动态建模中的主要概念是事件和状态。一个对象的状态是指对象所拥有的属性值和连接关系。从一个对象到另一个对象的单个消息叫作一个事件。 在系统的一个特定的执行中发生的一系列事件叫一个场景。,OMT方法,OMT方法,动态模型由多个状态图组成,每个用来描述一个类的重要动态行为,并表明整个系统的活动方式,不同类的状态图通过共享的事件组成一个动态模型。状态图的结点是状态,标有事件的线是转移。转移的箭头指向接收事件后的目标状态。,OMT方法,OMT方法,OMT方法,建立一个动态模型的步骤准备典型的交互序列的场景确定对象之间的事件和为每个场景准备一个事件跟踪图为每个系统准备一个事件流图为每个有重要的动态行为的类开发一个状态图检验状态图之间的共享的事件的一致性和完整性。,OMT方法,3.功能模型对象模型指出事件要发生在什么方面,动态模型指出什么时候发生,功能模型则指出要发生什么。功能模型表示怎样从输入值得到输出值。包括函数、映射、约束和功能性依赖。功能模型由多个DFD组成,它们表示从外部输入,通过操作和内部数据存储,到外部输出这样一个流。DFD不表示控制或对象结构信息,这些分别属于动态模型和对象模型。功能是由动态模型的动作引起,并在对象模型里表示对对象的操作。一个DFD包括转换数据的过程,移动数据的DF,生产和消费数据的角色对象,以及被动地存储数据的数据存储对象。,OMT方法,建立一个功能模型的步骤确定输入和输出值需要时用DFD表示功能的依赖性描述每个功能干什么确定限制,指定优化准则,OMT方法,4.三个模型之间的关系对象模型、动态模型和功能模型都包含了同样的概念、数据、序列和操作,但它们描述了系统的不同方面,同时也互相引用。对象模型描述了动态模型、功能模型所操作的DS。对象模型中的操作对应于动态模型中的事件和功能模型中的函数。动态模型描述了对象的控制结构,告诉我们哪些决策是依赖于对象值,哪些引起对象的变化,并激活了功能。功能模型描述了由对象模型中操作和动态模型中动作所激活的功能,而功能作用在对象模型说明的数据上,功能模型还表示对对象值的约束。,OMT方法,OMT的开发过程 1、分析阶段分析阶段关心和理解要处理的应用和领域并建模。 分析阶段首先输入的是问题陈述,它主要描述了需要处理的问题,并提供了将要产生的系统概况。分析后的输出是一个描述了系统三个重要方面的形式化模型:对象和对象之间的关系、动态的控制流,以及函数性转换。系统分析文档包括问题陈述和三类模型。,OMT方法,OMT方法,2、系统设计阶段系统设计阶段决定系统的整个体系结构。系统设计是一个用于解决问题和形成解答的高层次的策略。它是最先的设计阶段,在这里将选择解决问题的基本方法。在系统设计阶段,总体的结构和风格被决定,这将为以后的设计阶段中更详细的决定提供依据。通过作出用于整个系统的高层决定,系统设计者以对象模型为依据,将系统划分成子系统,以便以后的工作可以由几个设计者独立地在不同的子系统上完成。系统设计文档包括系统的基本的体系结构以及高层的策略决定。,OMT方法,3.对象设计阶段在对象设计阶段中,从着重于应用概念逐步转移到着重于计算机概念上。对象设计阶段决定实现中所用的类和关系的全部定义,包括接口和用于实现操作的算法。 在对象设计时,设计者执行系统设计期间所选的策略和给出细节。对象设计文档包括详细的对象模型、详细的动态模型和详细的功能模型。,OMT方法,4、实现阶段实现是在良好的面向对象编程风格的编码原则指导下进行的。,OMT方法,