C++基础---面向对象建模方法

1. 面向对象建模方法

1.1 OMT/Rumbaugh方法

  • OMT(Object Modeling Technique)方法:
    (1)OMT方法最早是由Loomis,Shan和Rumbaugh在1987年提出的,曾扩展应用于关系数据库设计。Jim Rumbaugh在1991年正式把OMT应用于面向对象的分析和设计。这个方法是在实体关系模型上扩展了类、继承和行为而得到的。
    (2)OMT方法覆盖了分析、设计和实现三个阶段,它包括一组相互关联的概念:类(class)、对象(object)、一般化(generalization)、继承(inheritance)、链(link)、链属性(link attribute)、聚合(aggregation)、操作(operation)、事件(event)、场景(scene)、属性(attribute)、子系统(subsystem)、模块(module)等。
    (3)OMT方法包含分析、系统设计、对象设计和实现四个步骤,它定义了三种模型,这些模型贯穿于每个步骤,在每个步骤中被不断地精化和扩充。
  • OMT方法从三个方面对系统进行建模,每个模型从一个侧面反映系统的特性,三个模型分别是:
    (1)对象模型:用类和关系来刻画系统的静态结构;
    (2)动态模型:用事件和对象状态来刻画系统的动态特性;
    (3)功能模型:按照对象的操作来描述如何从输入给出输出结果。
    注:分析的目的是建立可理解的现实世界模型。系统设计确定高层次的开发策略。对象设计的目的是确定对象的细节,包括定义对象的界面、算法和操作。实现对象则在良好的面向对象编程风格的编码原则指导下进行。

1.2 OOD/Booch方法

  • OOD(Object Oriented Design)方法:
    (1)OOD方法是Grady Booch从1983年开始研究,1991年后走向成熟的一种方法。
    (2)OOD方法主要包括下述概念,类(class)、对象(object)、使用(uses)、实例化(instantiates)、继承(inherits)、元类(meta class)、类范畴(class category)、消息(message)、域(field)、操作(operation)、机制(mechanism)、模块(module)、子系统(subsystem)、过程(process)等。其中,使用及实例化是类间的静态关系,而动态对象之间仅有消息传递的连接。元类是类的类。类范畴是一组类,它们在一定抽象意义上是类同的。物理的一组类用模块来表达。机制是完成一个需求任务的一组类构成的结构。
    (3)OOD方法方法在面向对象的设计中主要强调多次重复和开发者的创造性。方法本身是一组启发性的过程式建议。
  • OOD方法的一般过程如下:
    (1)在一定抽象层次上标识类与对象;
    (2)标识类与对象的语义;
    (3)标识类与对象之间的关系(如继承、实例化、使用等);
    (4)实现类与对象。

1.3 RDD/Wirfs-Brock方法

  • RDD(Responsibility-Driven Design)方法:
    (1)RDD方法是Wirfs-Brock在1990年提出的。这是一个按照类、责任以及合作关系对应用进行建模的方法。首先定义系统的类与对象,然后确定系统的责任并划分给类,最后确定对象类之间的合作来完成类的责任。这些设计将进一步按照类层次、子系统和协议来完善。
    (2)RDD方法主要包含以下概念:类(class)、继承(inheritance)、责任(responsibility)、合作(collaboration)、合同(contract)、子系统(subsystem)。对每个类都有不同的责任或角色以及动作。合作是为完成责任而需要与之通信的对象集合。责任进一步精化并被分组为合同。合同又进一步按操作精化为协议。子系统是为简化设计而引入的,是一组类和低级子系统,也包含由子系统中的类及子系统支持的合同。
    (3)RDD方法按照类层次图、合作图、类规范、子系统规范、合同规范等设计规范来完成实现。
  • RDD方法分为探索阶段和精化阶段:
    (1)探索阶段:确定类、每个类的责任以及类间的合作;
    (2)精化阶段:精化类继承层次、确定子系统、确定协议。

1.4 OOAD/Coad-Yourdon方法

  • OOAD(Object-Oriented Analysis and Design)方法:
    (1)OOAD是由Peter Coad和Edward Yourdon 在1991年提出的。这是一种逐步进阶的面向对象建模方法。
    (2)在OOA中,分析模型用来描述系统的功能,主要包括以下概念:类(class)、对象(object)、属性(attribute)、服务(service)、消息(message)、主题(subject)、一般/特殊结构(Gen-Spec-Structure)、全局/部份结构(Whole-Part-Structure)、实例连接(instance connection)和消息连接(message connection)等。其中,主题是指一组特定的类与对象。
    (3)OOA使用了基本的结构化原则,并把它们同面向对象的观点结合起来。
    (4)OOA完成系统分析,包括以下五个步骤:确定类与对象、标识结构、定义主题、定义属性和定义服务。OOA本质上是一种面向对象的方法,适用于小型系统的开发。
  • OOD负责系统设计,包括以下四个步骤:
    (1)设计问题域(细化分析结果);
    (2)设计人机交互部分(设计用户界面);
    (3)设计任务管理部分(确定系统资源的分配);
    (4)设计数据管理部分(确定持久对象的存储)。

1.5 OOSE/Jacobson方法

  • OOSE(Object-Oriented Software Engineering)方法:
    (1)OOSE是Ivar Jacobson在1992年提出的一种使用事例驱动的面向对象开发方法。
    (2)OOSE主要包括下列概念:类(class)、对象(object)、继承(inherits)、相识(acquaintance)、通信(communication)、激励(stimuli)、操作(operation)、属性(attribute)、参与者(actor)、使用事例(use case)、子系统(subsystem)、服务包(service package)、块(block)、对象模块(object module)。相识表示静态的关联关系,包括聚合关系。激励是通信传送的消息。参与者是与系统交互的事物,它表示所有与系统有信息交换的系统之外的事务,因此不关心它的细节。参与者与用户不同,参与者是用户所充当的角色。参与者的一个实例对系统做一组不同的操作。当用户使用系统时,会执行一个行为相关的事物系列,这个系列是在与系统的会话中完成的,这个特殊的系列称为使用事例,每个使用事例都是使用系统的一条途径。使用事例的一个执行过程可以看作是使用事例的实例。当用户发出一个激励之后,使用事例的实例开始执行,并按照使用事例开始事物。事务包括许多动作,事务在收到用户结束激励后被终止。在这个意义上,使用事例可以被看作是对象类,而使用事例的实例可以被看作是对象。
  • OOSE开发过程中有以下五种模型,这些模型是自然过渡和紧密耦合的:
    (1)需求模型包括由领域对象模型和界面描述支持的参与者和使用事例。对象模型是系统的概念化的、容易理解的描述。界面描述刻画了系统界面的细节。需求模型从用户的观点上完整地刻画了系统的功能需求,因此按这个模型与最终用户交流比较容易。
    (2)分析模型是在需求模型的基础上建立的。主要目的是要建立在系统生命期中可维护、有逻辑性、健壮的结构。模型中有三种对象。界面对象刻画系统界面。实体对象刻画系统要长期管理的信息和信息上的行为。实体对象生存在一个特别的使用事例中。第三种是按特定的使用事例作面向事务的建模的对象。这三种对象使得需求的改变总是局限于其中一种。
    (3)设计模型进一步精化分析模型并考虑了当前的实现环境。块描述了实现的意图。分析模型通常要根据实现作相应的变化。但分析模型中基本结构要尽可能保留。在设计模型中,块进一步用使用事例模型来阐述界面和块间的通信。
    (4)实现模型主要包括实现块的代码。OOSE并不要求用面向对象语言来完成实现。
    (5)测试模型包括不同程度的保证。这种保证从低层的单元测试延伸到高层的系统测试。

1.6 VMT/IBM方法

  • VMT(Visual Modeling Technique)方法:
    (1)VMT是IBM公司于1996年公布的。VMT方法结合了OMT、OOSE、RDD等方法的优点,并且结合了可视化编程和原型技术。VMT方法选择OMT方法作为整个方法的框架,并且在表示上也采用了OMT方法的表示。VMT方法用RDD方法中的CRC(Class-Responsibility-Collaboration)卡片来定义各个对象的责任(操作)以及对象间的合作(关系)。此外,VMT方法引入了OOSE方法中的使用事例概念,用以描述用户与系统之间的相互作用,确定系统为用户提供的服务,从而得到准确的需求模型。
    (2)VMT方法的开发过程分为三个阶段:分析、设计和实现。分析阶段的主要任务是建立分析模型。设计阶段包括系统设计、对象设计和永久性对象设计。实现阶段就是用某一种环境来实现系统。

1.7 六种方法的比较

  • OMT方法覆盖了应用开发的全过程,是一种比较成熟的方法,用几种不同的观念来适应不同的建模场合,它在许多重要观念上受到关系数据库设计的影响,适合于数据密集型的信息系统的开发,是一种比较完善和有效的分析与设计方法。
  • Booch方法并不是一个开发过程,只是在开发面向对象系统时应遵循的一些技术和 原则。Booch方法是从外部开始,逐步求精每个类直到系统被实现。因此,它是一种分治法,支持循环开发,它的缺点在于不能有效地找出每个对象和类的操作。
  • RDD是一种用非形式的技术和指导原则开发合适的设计方案的设计技术。它用交互 填写CRC卡片的方法完成设计,对大型系统设计不太适用。RDD采用传统的方法确定对象类,有一定的局限性。另外,均匀地把行为分配给类也十分困难。
  • 在OOAD方法中,OOA把系统横向划分为五个层次,OOD把系统纵向划分为四个部分,从而形成一个清晰的系统模型。OOAD适用于小型系统的开发。
  • OOSE能够较好地描述系统的需求,是一种实用的面向对象的系统开发方法,适合于商务处理方面的应用开发。
  • VMT基于现有面向对象方法中的成熟技术,采用这些方法中最好的思想、特色、观点以及技术,并把它们融合成一个完整的开发过程。因此VMT是一种扬长避短的方法,它提供了一种实用的能够处理复杂问题的建模方法和技术。

1.8 统一建模语言UML

  • 统一建模语言UML最初仅仅是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 Diagram);实现图(Implementation Diagram),其中包括成分图(Component Diagram)和展开图(Deployment Diagram)。UML的通用表示还有:串(String)、名字(Name)、标签(Label)、关键字(Keyword)、表达式(Expression)、注释(Note)等。
  • UML作为一种建模语言,具有以下特点:
    (1)UML结合了Booch方法、OMT方法和OOSE方法的概念,是一个单一的通用的建模语言;
    (2)UML的建模能力比其他面向对象方法更强,不仅适合于一般系统的开发,更擅长于并行、分布式系统的建模;
    (3)UML是一种标准的建模语言,而不是一个标准的开发过程,它完全独立于开发过程。
    注:要想实现软件生产自动化,实现开发方法的统一化、标准化是基本的一条。实现面向对象开发方法的标准化以后,就可以避免不同方法的差异,提高软件重用效率。此外,统一面向对象开发方法,也就是综合每个面向对象方法的优点,最大限度地发挥各种方法的长处。UML是一种表达能力丰富的建模语言,而不是一种方法,因此,目前它还不能取代现有的各种面向对象的分析与设计方法。但是,随着UML工作的进一步展开,必将有助于实现软件自动化。

参考文献:
[1] 百度搜索关键字:面向对象的开发方法、OMT/Rumbaugh方法、OOD/Booch方法、RDD/Wirfs-Brock方法、OOAD/Coad-Yourdon方法、OOSE/Jacobson方法、VMT/IBM方法、统一建模语言UML

你可能感兴趣的:(面向对象的建模方法,统一建模语言UML)