站内导航

沟通世界 连接未来

 

面向对象的软件工程方法

1 概述

  八十年代末以来,随着面向对象技术的成熟,研究热点从编程语言逐渐转移到设计与分析上来,出现了几十种支持软件开发的面向对象方法。其中,Booch、Coad/Yourdon、OMT 和Jacobson方法在面向对象软件开发界得到了广泛的认可。

  面向对象方法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。

  为了发现对象和类,开发人员要在系统需求和系统分析的文档中查找名词和名词短语,如事物、角色、事件、互相作用、人员、场所、组织、设备和地点等。浏览目标系统的脚本,发现重要的对象及其作用,是面向对象分析和设计初期至关重要的工作。

  当重要的对象被发现后,就要着手建立一组互相关联的模型,详细表示类之间的关系和对象的行为。这些模型从四个不同的侧面表示了软件的体系结构:静态逻辑模型、动态逻辑模型、静态物理模型和动态物理模型。   静态逻辑模型描述类与对象的属性与服务,以及对象之间的关联、聚集(整体/部分关系)、继承(一般化)等关系,因而也称为对象模型。定义对象模型的符号体系通常是从用于数据建模的实体关系图导出的。

  动态逻辑模型描述与时间和变化有关的对象之间的互相作用。动态建模的重点在于控制,即通过描述系统的操作次序来定义系统运行的行为,这些操作都是对外部触发的响应。动态模型的基本要素是事件(表示外部触发)和状态(表示对象属性),通常用基于有限状态机的状态转移图表示。

  静态物理模型为软件划分模块,描述代码的布局。

  动态物理模型描述软件的进程和线程等体系结构设计。

2 Booch方法

  Grady Booch所提出的方法,其分析与设计过程包括以下步骤:

  a. 在给定的抽象层次上识别类和对象;

  b. 识别这些对象和类的语义;

  c. 识别这些类和对象之间的关系;

  d. 实现类和对象。

  这四种活动不仅仅是一个简单的步骤序列,而是对系统逻辑和物理视图不断细化的迭代和渐增的过程。   类和对象的识别包括找出问题空间中关键的抽象和产生动态行为的重要机制,开发人员可以通过研究问题域的术语来发现关键的抽象。

  语义的识别主要是明确前一阶段所识别出的类和对象的含义,开发人员确定类的行为(即方法)和类及对象之间的互相作用(即行为的规范描述)。该阶段利用状态转移图描述对象状态的模型,利用时态图(系统中的时态约束)和对象图(对象之间的互相作用)描述行为模型。

  在关系识别阶段描述静态和动态关系模型。这些关系包括封装、实例化、继承、关联和聚集等。类和对象之间的可见性也在此时确定。

  在类和对象的实现阶段要考虑如何用选定的编程语言实现,如何将类和对象组织成模块。

  Booch方法提供了丰富的符号体系,包括:类图(类结构,静态视图)、对象图(对象结构、静态视图),状态转移图(类结构、动态视图),时态图(对象结构、动态视图),模块图(模块体系结构),进程图(进程体系结构)等。用于类和对象建模的符号体系使用注释和不同的图符(如不同的箭头)表达详细的信息。Booch本人曾建议在设计的初期可以用符号体系的一个子集,随后不断添加细节。对每一个符号体系还有一个文本的形式,由每一个主要结构的描述模板组成。符号体系由大量的图符组成,但其语法和语义并没有严格地定义,有较大灵活性。

  Booch方法强调基于类和对象的系统逻辑视图与基于模块和进程的系统物理视图之间的区别,同时也区别了系统的静态和动态模型。但是,这种方法偏向于系统的静态描述,对动态描述支持相对较少。

3 Coad/Yourdon方法

  Peter Coad和Edward Yourdon的方法严格区分了面向对象分析(OOA)和面向对象设计(OOD)。

  在分析阶段,该方法用五个层次及相关活动定义并记录系统行为,以及系统的输入和输出。这五个层次及活动如表1所示。                  

表1 Coad/Yourdon方法中的OOA层次模型

  经过五个层次的活动后,分析结果是一个分成五个层次的问题域模型,包括主题、类及对象、结构、属性和服务五个层次,由类及对象图表示。五个层次活动的顺序并不重要。

  在设计阶段,OOD模型是OOA模型的扩展。OOD模型同样包括OOA模型的五个层次,但同时又引进了四个部分:

  • 问题域部分(PDC):面向对象分析的结果直接放入该部分。
  • 人机交互部分(HIC):包括对用户分类、描述人机交互的脚本、设计命令层次结构、设计详细的交互、生成用户界面的原型、定义HIC类等。
  • 任务管理部分(TMC):识别任务(进程)、任务所提供的服务、任务的优先级、进程的驱动模式,以及任务与其它进程和外界如何通信等。
  • 数据管理部分(DMC):确定数据存储模式,如使用文件系统、关系数据库管理系统还是面向对象数据库管理系统等。

  Coad/Yourdon方法强调技术独立性,从而实现了包括OOA/OOD本身在内的可复用性。例如,当一个给定的应用系统从图形用户界面(GUI)升级到声音响应接口时,只需替换其中的人机交互部分,其他部分均无需改动,因为用户界面技术的改变对系统的其他部分是透明的。

4 OMT方法

  James Rumbaugh的对象建模技术(OMT)从三个视角描述系统,相应地提供了三种模型,即对象模型、动态模型和功能模型。

  对象模型描述对象的静态结构和它们之间的关系。主要概念包括:类、属性、操作、继承、关联、聚集等。   动态模型描述系统那些随时间变化的方面。主要概念包括:状态、子状态和超状态、事件、行为、活动等。

  功能模型描述系统内部数据值的转换。主要概念包括:加工、数据存储、数据流、控制流、角色等。

  OMT方法将开发过程分为四个阶段:

  a. 分析:基于问题和用户需求的描述,建立现实世界的模型。本阶段的主要产物是:

  • 问题描述
  • 对象模型(对象图+数据词典)
  • 动态模型(状态图+全局事件流图)
  • 功能模型(数据流图+约束)

  b. 系统设计:结合问题域的知识和目标系统的体系结构(求解域),将目标系统分解为子系统。该阶段将形成系统设计文档,描述基本的系统体系结构和高层次的决策。

  c. 对象设计:在分析模型的基础上结合问题域添加实现细节,完成系统设计。主要设计内容是:将对象模型、动态模型和功能模型分别加以细化,奠定实现的基础。

  d. 实现:将设计转换为特定的编程语言或硬件,同时保持可追踪性、灵活性和可扩展性。

  OMT是一种自底向上和自顶向下相结合的方法。OMT的第一步是从问题的陈述入手,构造系统模型,这是一种自底向上的归纳过程;系统模型建立后的工作就是分解,这是一种基于服务(Service)的分解。这种从具体到抽象、再从抽象到具体的分析、设计过程符合人类的思维规律,使得需求分析更为彻底,系统可维护性也得以改善。

5 Jacobson方法(OOSE)

  Jacobson方法--OOSE(Object Oriented Software Engineering)涉及整个软件生命周期,包括需求分析、设计、实现和测试等四个阶段。

  在Jacobson方法中需求分析和设计密切相关。需求分析阶段的活动包括定义潜在的角色(指使用系统的人和与系统互相作用的软、硬件环境),识别问题域中的对象和关系,基于需求规范说明和角色的需要发现use case,详细描述use case。设计阶段包括两个主要活动:从需求分析模型中发现设计对象,以及针对实现环境调整设计模型。第一个活动包括从use case的描述发现设计对象,描述对象的属性、行为和关联,并把use case的行为分派给对象。

  在需求分析阶段的识别领域、对象和关系的活动中,开发人员识别类、属性和关系。关系包括继承、关联、聚集和通讯。随后,定义use case的活动和识别设计对象的活动,两个活动共同完成行为的描述。Jacobson方法还将对象区分为语义对象(领域对象)、界面对象(如用户界面对象)和控制对象(处理界面对象和领域对象之间的控制)。

  Jacobson方法提出并特别强调了use case的概念。use case是指行为相关的事务(transaction)序列,该序列将在用户与系统交互时执行。因此,每一个use case就是一个使用系统的方式,当用户给定一个输入,就执行一个use case的实例并引发执行属于该use case的一个事务。基于这种系统视图,Jacobson将use case模型与以下五种系统模型相结合:

  • 领域对象模型:根据领域来表示use case模型。
  • 分析模型:通过分析来构造use case模型。
  • 设计模型:通过设计来具体化use case模型。
  • 实现模型:依据具体化的设计来实现use case模型。
  • 测试模型:用来测试具体化的use case模型。

  Use case描述的是现实世界中的一项具体任务如何由一个软件系统来支持,利用use case,需求人员(用户)能够将其要求映射到对象模型中,从而有效地架起了需求人员(用户)、系统分析人员和应用程序开发人员之间交流沟通的桥梁。

6 UML方法

  统一建模语言(Unified Modeling Language)是一种用于描述、构造软件系统以及商业建模的语言,综合了在大型、复杂系统的建模领域得到认可的优秀的软件工程方法。UML是大多数公司采用的标准,是ANSI和OMG等部门采用的标准。

  1993年Rational公司的Booch、Rumbaugh、Jacobson开始设计UML方法,1995年后期,正式推出0.8版的Unified Method。1996年,改进的Unified Method正式更名为UML(Unified Modeling Language)。1997年UMLl.0被提交给对象技术组织OTG(Object Technology Organization),最后,1997年11月14日,OMG将UML1.作为行业标准。

  UML结合了Booch、OMT和Jacobson方法,统一了符号体系,并从其它的方法和软件工程实践中吸收了许多经过实际检验的概念和技术,UML是Grady Booch、Dr. James Rumbaugh、Ivar Jacobson、Rebecca Wirfs-Brock、Peter Yourdon和许多其他人员集体智慧的结晶。

  UML的产生有三方面的原因:首先,不同的面向对象方法有着许多相似之处,通过这项工作,消除可能会给使用者造成混淆的不必要的差异是非常有意义的;其次,语义和表示法的统一,可以稳定面向对象技术的市场,使工程开发可以采用一门成熟的建模语言,CASE工具的设计者也可以集中精力设计出更优秀的系统;第三,这种统一能使现有的方法继续向前发展,积累已有的经验,解决以前没有解决好的问题。

  UML为软件系统建模提供了以下四个方面的支持:

  • 使用事件模型 (use case):定义系统的使用事件(use case)、角色(actor)及角色与事件之间的交互行为(association)。
  • 类和对象模型:定义类、对象及相互之间的关系。
  • 组件模型:组件是组成应用程序的可执行单元,类被分配到组件中,以提供可重复使用的应用程序结构部件。组件为即插即用的应用程序结构奠定了基础。UML对可重用性的支持,在设计的前期体现在支持可重复使用的类和结构,后期则体现在组件装配。
  • 分布处理模型:将软件系统映射到分布处理结构中。UML能够描述网络拓扑结构的节点,这些节点相互的连接方式以及软件系统在网络中的分布情况。

  利用UML框图可以开发几种不同的可视框图,表示系统的不同方面。这些框图主要有:

  • Use Case框图:显示使用案例Case(系统功能)和角色(表示提供或接收系统信息的用户和系统)之间的交互。
  • Sequence框图。显示使用案例的功能流程。
  • Collaboration框图:显示对象间为完成某个系统功能而进行的交互。
  • C1ass框图:显示系统中类与类之间的交互。
  • State Transition框图:Class框图显示系统中类的静态图形,而State Transition框图显示动态图形,即系统状态分析。
  • Component框图:模型的物理视图,显示系统中的软件组件以及它们之间的相互关系。
  • Deployment框图:显示网络的物理布局和各种组件的位置。

 

Copyright 2000-2015 Gogusoft Software Co.,Ltd
 
 
长春市勾股软件有限责任公司
销售电话:043188833276(长春) 0755-32978958 (深圳)
电子信箱:销售sales@gogusoft.com 技术 tech@gogusoft.com 招聘 job@gogusoft.com
公司地址:长春市绿园区长白公路7777号 邮编:130012