软件工程中程序设计方法的比较
2012-04-29陈蓉,陈烽
陈蓉,陈烽
摘要:在软件工程领域方面,先后出现了三类程序设计方法,分别是面向过程程序设计方法、面向对象程序设计方法、泛型程序设计方法。该文对三类程序设计方法进行了深入分析和比较。
关键词:面向过程;面向对象;泛型;软件工程;程序设计方法
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)02-0333-02
Comparison of Program Design Method in Software Engineering
CHEN Rong, CHEN Feng
(Department of Information Engineering, Tibet University for Nationalities, Xianyang 712082, China)
Abstract: In the field of software engineering, has appeared three kinds of program design method, they are process-oriented program? ming method, object-oriented programming method and generic programming method. This paper analyzed and compared three kinds of program design methods deeply.
Key words: process-oriented; object-oriented; generic; software engineering; programming method
20世纪60年代中期,随着软件系统的规模和复杂程度的不断增加,软件可靠性问题也不断突出,出现了“软件危机”。1968年,正式提示“软件工程”一词,并形成一门新的工程学科[1]。在软件工程领域,先后出现了三种程序设计方法,分别是面向过程的程序设计、面向对象的程序设计和泛型程序设计。
本文对三类方法——面向过程程序设计方法、面向对象程序设计方法、泛型程序设计方法,进行了深入分析和比较。
1面向过程、面向对象、泛型概述
20世纪70年代,面向过程的程序设计方法(也称结构化方法)出现并在早期的软件工程领域占用主导地位。面向过程采用是自顶向下、逐步求精、模块化等设计原则,将软件系统分解为若干可独立的子模块。各个模块完成后组合起来,成为一个最终的软件系统。随着软件工程的发展,出现了软件生产率低、软件维护困难等难以解决的问题[1]。
20世纪80年代,面向对象的程序设计方法应运而生,它解决了面向过程的程序设计方法的缺点,提高了软件的生产率和方便软件的维护。现在已成为目前主流的程序设计方法。面向对象将软件系统分解成一个个的对象,每个对象都是通过对现实世界的分析、理解而得出的。面向对象更接近于人类认知世界的方式,并通过以类和继承为构造机制将现实世界构建成对应的软件系统。对于面向对象一些难以克服的缺点,如它不能将所有关系都用继承来实现,抽象程度不够高,通用性不足等问题,提出了泛型程序设计[2-3]。
近年来,泛型程序设计出现并发展。泛型的特点是抽象程度很高,将程序写得尽可能通用,可适合多种数据类型的操作,同时不损失效率。泛型程序设计的过程是发现类型需求、分析类型需求之间的关系,并运用这种类型需求关系实现软件系统的结构和逻辑[2]。
2面向过程、面向对象、泛型的比较
面向过程程序设计以模块为中心,采用自顶向下、逐步求精的开发方法,将软件系统分解为若干可独立的子模块,这些模块形成树状结构,表现了各个模块相互调用的关系;每一个模块内部均由顺序、选择和循环三种基本结构组成。各个模块完成后组合起来,成为一个最终的软件系统。面向过程注重实现过程的顺序,它的抽象层次低,实现简单。它适合解决简单问题和小规模的问题。
面向对象程序设计以对象为中心,将软件系统分解成一个个的对象,把属性和这组属性上的专用操作进行封装放在一起作为一个对象,以类和继承为构造机制将客观世界构建成软件系统。同一个对象间通过消息传递来实现服务的请求。和面向过程相比,面向对象使用对象分解取代了传统的功能分解。面向对象的特征是封装(将数据和代码放到对象里面,从对象外部不能直接访问或修改数据和代码)、继承(从父类直接获得的属性和操作,可重新定义)、多态(父对象定义的一个方法,允许子对象以适合自己的方式去实现消息)等。面向对象注重对象的分析和设计,它的抽象层次高,实现复杂。它适用于复杂问题,特别是对象间形成层次关系的问题。
泛型程序设计以类型需求为中心,将程序写得尽可能通用,可适合多种数据类型的操作,同时不损失效率。泛型程序设计的过程是发现类型需求、分析类型需求之间的关系,并运用这种类型需求关系实现软件系统结构和逻辑的过程。泛型设计的目标是将算法从对象的行为中分离出来,做到算法的设计与数据结构无关,从而实现软件的复用。它通过将数据结构与算法之间的强祸合关系削弱为弱祸合关系,来实现软件的复用。它有三个重要概念:概念、模型、强化[2],概念是与具体数据类型无关的一组定义,支持数据类型的操作。模型是当某数据类型使用此概念时,称为此概念的一个模型。如果某个概念拥有了其他一个或概念的所有功能,称为这个概念是其他一个或多个概念的强化。泛型注重软件的高度抽象和通用性,因而实现很复杂。它适用于很复杂问题,特别是需要高度抽象和通用性的问题。
同时,三类程序设计方法在安全性和可靠性方面都是安全和可靠的。表1给出三类程序方法的比较。
表1三类程序设计方法的比较
通过上面的分析,我们得出,三种方法各有其优点。对于简单的、小规模的问题域,面向过程的程序设计是最合适的;对于继承和行为多态起主要作用的应用域,面向对象的程序设计是最合适的;而对于那些需要解决一类相似需求的应用域,泛型程序设计是最合适的。
3结束语
软件工程为研究和克服“软件危机”而出现,在软件工程领域的程序设计方法方面,先后出现了三种程序设计方法,面向过程的程序设计、面向对象的程序设计和泛型程序设计。本文对三类方法——面向过程程序设计方法、面向对象程序设计方法、泛型程序设计方法,进行了深入分析和比较。三种方法各有其特点,如果能将三种方法的优点结合,将会更好地解决软件开发领域的实际问题。
参考文献:
[1]李惠明,敖广武.软件工程[M].沈阳:东北大学出版社,2010.
[2]孙斌.面向对象、泛型程序设计与类型约束检查[J].计算机学报,2004(11).
[3]包得海,刘昉.面向过程、面向对象与泛型程序设计的对比分析[J].电脑与信息技术,2011(3).