几种典型的面向对象开发方法_第1页
几种典型的面向对象开发方法_第2页
几种典型的面向对象开发方法_第3页
几种典型的面向对象开发方法_第4页
几种典型的面向对象开发方法_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

几种典型的面向对象开发方法 摘 要 自 80 年代后期以来,相继出现了多种面向对象开发方法,文章主要介绍了其中六种典型的面向对 象开发方法,并对它们进行了比较。UML 的出现意味着开发方法统一化、标准化的新发展,标志着软件自 动化的进程又迈进了一步。 关键字 面向对象开发方法 典型 比较 一、引言 随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当 计算机硬件有了飞速发展之后,各种应用领域对软件提出了更高的要求。结构化程序设计 语言和结构化分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发周期, 发展软件可靠性、可扩充性和可重用性迫使软件界人士不断研究新方法、新技术,探索新 途径。 面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追 求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的 方法。也就是使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致。其基本 思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客 观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造 出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。 面向对象程序设计方法起源于六十年代末期的语言 SIMULA67,到了七十年代末期,软 件行业正受到软件危机的困扰,结构化的开发方法不能够很好地解决软件危机。面向对象 语言 Smalltalk 的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象也和 开发方法开始结合,出现了面向对象的开发方法。自 80 年代后期以来,相继出现了多种面 向对象开发方法,现将其中几种典型的方法作一个简介和比较。 二、六种典型的面向对象开发方法 1、OMT/Rumbaugh OMT1(Object Modeling Technique)方法最早是由 Loomis,Shan 和 Rumbaugh 在 1987 年提出的,曾扩展应用于关系数据库设计。Jim Rumbaugh 在 1991 年正式把 OMT 应用于 面向对象的分析和设计。这个方法是在实体关系模型上扩展了类、继承和行为而得到的。 OMT 覆盖了分析、设计和实现三个阶段,它包括一组相互关联的概念:类(class) 、对象 (object) 、一般化(generalization) 、继承(inheritance) 、链(link) 、链属性(link attribute) 、聚合(aggregation) 、操作(operation ) 、事件(event ) 、场景(scene ) 、属性 (attribute) 、子系统(subsystem) 、模块(module)等。 OMT 方法包含分析、系统设计、对象设计和实现四个步骤,它定义了三种模型,这些模型 贯穿于每个步骤,在每个步骤中被不断地精化和扩充。这三种模型是: 对象模型:用类和关系来刻画系统的静态结构; 动态模型:用事件和对象状态来刻画系统的动态特性; 功能模型:按照对象的操作来描述如何从输入给出输出结果。 分析的目的是建立可理解的现实世界模型。系统设计确定高层次的开发策略。对象设计的 目的是确定对象的细节,包括定义对象的界面、算法和操作。实现对象则在良好的面向对 象编程风格的编码原则指导下进行。 2、 OOD/Booch OOD3(Object Oriented Design)方法是 Grady Booch 从 1983 年开始研究,1991 年后走向 成熟的一种方法。 OOD 主要包括下述概念:类(class) 、对象(object) 、使用(uses) 、实例化(instantiates) 、 继承(inherits ) 、元类(meta class) 、类范畴(class category) 、消息(message ) 、域(field) 、 操作(operation) 、机制(mechanism ) 、模块(module ) 、子系统(subsystem) 、过程 (process )等。其中,使用及实例化是类间的静态关系,而动态对象之间仅有消息传递的 连接。元类是类的类。类范畴是一组类,它们在一定抽象意义上是类同的。物理的一组类 用模块来表达。机制是完成一个需求任务的一组类构成的结构。 Booch 方法在面向对象的设计中主要强调多次重复和开发者的创造性。方法本身是一组启 发性的过程式建议。OOD 的一般过程如下: (1)在一定抽象层次上标识类与对象; (2)标识类与对象的语义; (3)标识类与对象之间的关系(如继承、实例化、使用等) ; (4)实现类与对象。 3、 RDD/Wirfs-Brock RDD2(Responsibility-Driven Design)方法是 Wirfs-Brock 在 1990 年提出的。这是一个按 照类、责任以及合作关系对应用进行建模的方法。首先定义系统的类与对象,然后确定系 统的责任并划分给类,最后确定对象类之间的合作来完成类的责任。这些设计将进一步按 照类层次、子系统和协议来完善。 RDD 方法主要包含以下概念:类(class ) 、继承(inheritance) 、责任(responsibility) 、合 作(collaboration) 、合同(contract) 、子系统(subsystem) 。对每个类都有不同的责任或角 色以及动作。合作是为完成责任而需要与之通信的对象集合。责任进一步精化并被分组为 合同。合同又进一步按操作精化为协议。子系统是为简化设计而引入的,是一组类和低级 子系统,也包含由子系统中的类及子系统支持的合同。 RDD 分为探索阶段和精化阶段: (1)探索阶段:确定类、每个类的责任以及类间的合作; (2)精化阶段:精化类继承层次、确定子系统、确定协议。 RDD 按照类层次图、合作图、类规范、子系统规范、合同规范等设计规范来完成实现。 4、 OOAD/Coad-Yourdon OOAD3(Object-Oriented Analysis and Design)方法是由 Peter Coad 和 Edward Yourdon 在 1991 年提出的。这是一种逐步进阶的面向对象建模方法。 在 OOA 中,分析模型用来描述系统的功能,主要包括以下概念:类(class) 、对象 (object) 、属性(attribute) 、服务( service) 、消息(message) 、主题(subject) 、一般/ 特 殊结构(Gen-Spec-Structure) 、全局/部份结构(Whole-Part-Structure) 、实例连接(instance connection)和消息连接(message connection)等。其中,主题是指一组特定的类与对象。 OOA 使用了基本的结构化原则,并把它们同面向对象的观点结合起来。 OOA 完成系统分析,包括以下五个步骤:确定类与对象、标识结构、定义主题、定义属性 和定义服务。OOA 本质上是一种面向对象的方法,适用于小型系统的开发。 OOD 负责系统设计,包括以下四个步骤: (1)设计问题域(细化分析结果) ; (2)设计人机交互部分(设计用户界面) ; (3)设计任务管理部分(确定系统资源的分配) ; (4)设计数据管理部分(确定持久对象的存储) 。 5、 OOSE/Jacobson OOSE3(Object-Oriented Software Engineering)是 Ivar Jacobson 在 1992 年提出的一种使 用事例驱动的面向对象开发方法。 OOSE 主要包括下列概念:类(class ) 、对象(object) 、继承(inherits) 、相识 (acquaintance) 、通信(communication) 、激励(stimuli) 、操作(operation ) 、属性 (attribute) 、参与者(actor) 、使用事例(use case) 、子系统(subsystem) 、服务包 (service package) 、块(block) 、对象模块(object module) 。相识表示静态的关联关系, 包括聚合关系。激励是通信传送的消息。参与者是与系统交互的事物,它表示所有与系统 有信息交换的系统之外的事务,因此不关心它的细节。参与者与用户不同,参与者是用户 所充当的角色。参与者的一个实例对系统做一组不同的操作。当用户使用系统时,会执行 一个行为相关的事物系列,这个系列是在与系统的会话中完成的,这个特殊的系列称为使 用事例,每个使用事例都是使用系统的一条途径。使用事例的一个执行过程可以看作是使 用事例的实例。当用户发出一个激励之后,使用事例的实例开始执行,并按照使用事例开 始事物。事务包括许多动作,事务在收到用户结束激励后被终止。在这个意义上,使用事 例可以被看作是对象类,而使用事例的实例可以被看作是对象。 OOSE 开发过程中有以下五种模型,这些模型是自然过渡和紧密耦合的: 需求模型包括由领域对象模型和界面描述支持的参与者和使用事例。对象模型是系统的 概念化的、容易理解的描述。界面描述刻画了系统界面的细节。需求模型从用户的观点上 完整地刻画了系统的功能需求,因此按这个模型与最终用户交流比较容易。 分析模型是在需求模型的基础上建立的。主要目的是要建立在系统生命期中可维护、有 逻辑性、健壮的结构。模型中有三种对象。界面对象刻画系统界面。实体对象刻画系统要 长期管理的信息和信息上的行为。实体对象生存在一个特别的使用事例中。第三种是按特 定的使用事例作面向事务的建模的对象。这三种对象使得需求的改变总是局限于其中一种。 设计模型进一步精化分析模型并考虑了当前的实现环境。块描述了实现的意图。分析模 型通常要根据实现作相应的变化。但分析模型中基本结构要尽可能保留。在设计模型中, 块进一步用使用事例模型来阐述界面和块间的通信。 实现模型主要包括实现块的代码。OOSE 并不要求用面向对象语言来完成实现。 测试模型包括不同程度的保证。这种保证从低层的单元测试延伸到高层的系统测试。 6、 VMT/IBM VMT1(Visual Modeling Technique)方法是 IBM 公司于 1996 年公布的。VMT 方法结合 了 OMT、OOSE、RDD 等方法的优点,并且结合了可视化编程和原型技术。VMT 方法选 择 OMT 方法作为整个方法的框架,并且在表示上也采用了 OMT 方法的表示。VMT 方法 用 RDD 方法中的 CRC(Class-Responsibility-Collaboration)卡片来定义各个对象的责任 (操作)以及对象间的合作(关系) 。此外,VMT 方法引入了 OOSE 方法中的使用事例概 念,用以描述用户与系统之间的相互作用,确定系统为用户提供的服务,从而得到准确的 需求模型。 VMT 方法的开发过程分为三个阶段:分析、设计和实现。分析阶段的主要任务是建立分析 模型。设计阶段包括系统设计、对象设计和永久性对象设计。实现阶段就是用某一种环境 来实现系统。 7、六种方法的比较 OMT 方法覆盖了应用开发的全过程,是一种比较成熟的方法,用几种不同的观念来适应 不同的建模场合,它在许多重要观念上受到关系数据库设计的影响,适合于数据密集型的 信息系统的开发,是一种比较完善和有效的分析与设计方法。 Booch 方法并不是一个开发过程,只是在开发面向对象系统时应遵循的一些技术和 原则。 Booch 方法是从外部开始,逐步求精每个类直到系统被实现。因此,它是一种分治法,支 持循环开发,它的缺点在于不能有效地找出每个对象和类的操作。 RDD 是一种用非形式的技术和指导原则开发合适的设计方案的设计技术。它用交互 填 写 CRC 卡片的方法完成设计,对大型系统设计不太适用。RDD 采用传统的方法确定对象 类,有一定的局限性。另外,均匀地把行为分配给类也十分困难。 在 OOAD 方法中,OOA 把系统横向划分为五个层次,OOD 把系统纵向划分为四个部分, 从而形成一个清晰的系统模型。OOAD 适用于小型系统的开发。 OOSE 能够较好地描述系统的需求,是一种实用的面向对象的系统开发方法,适合于商 务处理方面的应用开发。 VMT 基于现有面向对象方法中的成熟技术,采用这些方法中最好的思想、特色、观点以 及技术,并把它们融合成一个完整的开发过程。因此 VMT 是一种扬长避短的方法,它提 供了一种实用的能够处理复杂问题的建模方法和技术。 三、建模语言 UML 建模语言 UML4最初仅仅是 OMT 方法、Booch 方法的统一。1995 年 10 月,Grady Booch 和 Jim Rumbaugh 联合推出了 Unified Method 0.8 版本。这个方法力图实现 OMT 方法和 Booch 方法的统一。同年秋天,Ivar Jacobson 加入了 Booch 和 Rumbaugh 所在的 Rational 软 件公司,于是 OOSE 方法也加入了统一的过程中。1997 年 9 月 1 日产生了 UML 1.1,并被 提交到了 OMG(Object Management Group) ,同年 11 月被 OMG 采纳。 按照 UML 文件的说法:UML 是一种用于软件系统制品制约的、可视化的构造及建档语言, 也可用于业务建模以及其它非软件系统。 从系统模型这一级别上看,UML 表示法由 9 种图构成,它们是:静态结构图(Static Structure Diagram) ,其中包括类图( Class Diagram)和对象图(Object Diagram) ;使用事 例图(Use Case Diagram) ;顺序图(Sequence Diagram) ;协作图(Collaboration) ;状态图 (Statechart Diagram) ;活动图(Activity Di

温馨提示

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

评论

0/150

提交评论