文档介绍:面向对象和面向过程的系统开发方法比较
作者:吴迪
摘要:本文为了讨论这一改变对系统开发现状的影响, 对面向对象的开发方法和面向时象与过程相结合的开发方法进行了比较。在面向对象的开发中最显著的特点是它依赖于商业信息系统结构, 它是完整商业企业的一个实体关系模型。特别是在应用系统开发中要考虑这个商业模型所需的变化。
本文分析了传统数据处理和面向对象计算之间的区别, 以及这些区别对系统开发的影响。结合一些面向对象技术的结构化设计方法与纯粹的面向对象的系统设计途径是截然不同的。本文描述了面向对象的方法在系统开发生命周期各阶段的含义, 并指出了这种方法在生命周期早期阶段的优势。尤其是用于系统开发早期阶段的工具用面向对象的方法在这些阶段中可以达到较高的生产率和较好的质量保证。
在分析用于系统开发的面向对象的含义之前, 先回顾一下面向对象的计算基础。本文只考虑那些与系统开发相关的概念,而忽略掉程序设计上的技术含义。
面向对象的基础和系统设计
面向对象的系统使用执行方法的对象来模拟商业行动。尽管对象能执行与传统的输人
—处理—输出过程相同的操作, 但对象执行一个方法与过程调用仍有一些差别, 其区别在于对结果的判定上在调用一个过程时, 这个过程势必遵循一种模式。比如一个数学函数, 对于一个给定值的独立变量, 与它相关的变量值是不变的然而, 一个对象对请求的响应依赖于请求发出时它的状态。这个状态可用对象的属性值来定义即, 变量, 当一个对象和其它对象相互作用时, 它的属性值可发生变化。
下面的例子说明了一个对象的响应是如何依赖于其变量状态的。一个发送消息的系统是以对象为基础的,这些对象可响应下列请求创建、发送和显示消息及对象的建立和删除。一用户发出命令创建并把消息发送给另一用户, 他就可以通过发出一个显示消息的请求看到这条消息如果没有生成或传送消息, 那么显示消息的命令也就显示不出消息了。因此说, 对显示请求的响应依赖于消息对象的状态。
使用对象来模拟商业活动就会使系统的定义和组织不同于使用传统的输人—处理—输出的方法。面向对象的方法依照可变数据来组织对象。相反, 输入—处理—输出方法依照使用它的过程来组织数据。
这些区别从根本上改变了定义和规划计算机应用系统的方法。从面向对象的观点上来说, 是把应用系统看作一组状态变化着的对象, 而不是处理数据的过程。当把一个系统定义为一个对象集合时, 所有相关的对象也同时进行了定义例如, 一个存货单系统包括存货项目
,存货地点和存货补充。一个顾客发票系统包括顾客、销售额和存货项目。在存货单系统定义中, 一个存货项目如果存放在某个地点, 那么它就和存货地点有关。一个存货补充对象和存放在某个地点的项目通过改变存放于该地点的货物相互作用。
如果一个对象和多个应用系统相关, 那么这个对象就应包含在所有需要它的系统定义中例如, 卖给某顾客的销售额与一个存货单控制系统相关, 而它又与顾客发票系统密切相关, 所以它既包含在存货单控制系统, 也包含在顾客发票系统中。用输人—处理—输出方法来规划同样的系统时, 包含在存货单和顾客发票系统中的销售额数据就会产生冗余和不协调的问题。而采用面向对象的方法时, 两个系统都调用同一个销售额对象, 就能避免这样的问题。
(1)商业领域的信息结构。使用面向对象的方法来进行系统规划时, 就需要所有相关商业实体和活动的信息。用这些信息就可以定义实体和关系, 从而决定对象;特殊应用系统正是依据模拟特定实体和活动的对象来进行定义正如前面所指出的, 同一个对象可以为多个系统确定因此, 对象的定义包括了所有相关系统所需要的行为能力。在年代, 评估实现商业系统所需的信息成为众所周知的战略数据规划。
用于模拟商业实体及其活动的一组对象称为商业领域的信息结构。由于没有完全定义对象及其是如何联系的, 所以它不是一个数据库。在本文后面的章节中将介绍, 它的特性, 及它不同于传统系统开发概念的有关方面。
面向对象和面向过程系统开发的结合。面向过程的系统开发方法首先依据过程, 其次依据这些过程所使用的数据来定义系统。相反, 面向对象的方法首先依据数据, 其次才依据操纵数据的过程来定义系统。给出这些根本的区别之后, 是应该把这两种方法看作只能二选其一的, 还是可以把它们组成一个集成方法呢?
IBM的商业系统规划方法学将这两个开发方法看成一种方法学的两个组成部分。面向过程的方法主要用来定义组织, 而面向对象的方法则用来定义数据需求。因此系统体系结构就被定义成了二维的。
在系统设计级上, 这两种方法的结合比较困难, 因为这会使分析过程变得更为复杂, 而且它的满意程度也不如单纯用面向过程或面向对象的方法好。为说明这一点, 本文将对用结合的方法和单纯面向对象的方法进行比较。在这两种方法的讨论