面向对象的软件工程方法是面向对象方法在软件工程领域的全面运用,涉及到从面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)、面向对象测试(Object Oriented Testing,OOT)到面向对象软件维护(Object Oriented Software Maintenance,OOSM)的全过程。

面向对象的分析
  面向对象的分析(OOA)就是运用面向对象的方法进行需求分析,其主要任务是分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA模型。

面向对象的设计
  面向对象的设计(OOD)就是根据已建立的分析模型,运用面向对象技术进行系统软件设计。它将OOA模型直接变成OOD模型,并且补充与一些实现有关的部分,如人机界面、数据存储、任务管理等。
  OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只有局部的修改或调整,并增加了与实现有关的独立部分,因此,OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,成为面向对象方法的主要优势。

面向对象的编程
  面向对象的编程(OOP)就是用一种面向对象的编程语言将OOD模型中的各个成分编写成程序,从OOA→OOD→OOP的无缝连接和平滑过渡,提高了开发工作的效率和质量。

面向对象的测试
  面向对象的测试(OOT)是指对于运用OO技术开发的软件,在测试过程中继续运用OO技术进行以对象概念为中心的软件测试。它以类作为基本测试单位,集中检查在类定义之内的属性、服务和有限的对外接口,大大减少了错误的影响范围。

面向对象的软件维护
  软件维护的最大难点在于人们对软件的理解过程中所遇到的障碍,在面向对象方法中,各阶段采用的表示是一致的,从而大大降低了理解的难度,无论是从程序中的错误追溯到问题域,还是需求的变化需要从问题域追溯到程序,整个过程都是平坦的。另外,对象的封装性使得一个对象的修改对其他对象的影响很小,不至于牵一发而动全身。

面向对象方法的优点
  面向对象方法与传统的软件开发方法相比,具有许多显著的优点,其主要优点如下:
  (1) 按照人类的自然思维方式,面对客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流。
  (2) 在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡,图4.2显示了传统的软件工程方法与面向对象方法的比较。

图4.2 传统的开发方法与面向对象的开发方法

  在传统的结构化方法中,自然语言与编程语言之间存在差距,开发人员需要将自然语言表示的分析结果转换成计算机的编程语言,工作量巨大且容易出错。在面向对象的方法中,OOA、OOD和OOP采用统一的表示方法,不存在这样的鸿沟。
  (3) 对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用。对象类可以派生出新类,类可以产生实例对象,从而实现了对象类的数据结构和操作代码的软构件的复用。另外,面向对象程序设计语言的开发环境一般预定义了系统动态连接库,提供大量公用程序代码,避免重复编写,提高了开发效率和质量。
  (4) 在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。这样的系统一旦出错,容易定位和修改,系统的可维护性好。