软件工程中程序设计方法的比较
2017-07-20刘琴
刘琴
摘 要: 分析了软件工程中的程序设计方法,将面向对象、面向过程和泛型化这三种方法进行对比,阐述这三种方法各自的特征及存在的联系,以便在应用时选择。
关键词: 软件工程; 程序设计; 结构化; 对象化; 泛型化
中图分类号:TP3-05 文献标志码:A 文章编号:1006-8228(2017)07-53-03
Comparison of programming methods in software engineering
Liu Qin
(Qinghai Nationalities University School of Computing, Xining, Qinghai 810007, China)
Abstract: The programming methods in software engineering are analyzed, and the object-oriented, process-oriented and generic, the three methods are compared. The characteristics of each of the three methods and the relationships in between the three methods are described, so as to make choice when needed.
Key words: software engineering; programming; structure-oriented; object-oriented; genericity
0 引言
软件工程实际出现在1960年末,在软件不断发展过程中其问题也逐渐凸显,以致于造成了“软件危机”,也正是软件危机的出现才造就了软件工程。后来软件工程逐渐被人们所熟知和认可,并被广泛的应用,一直到信息化发展的今天,软件工程也是作为软件和计算机技术发展的根本。在软件工程中所包含的一项重要内容就是程序设计,程序设计的好坏、是否科学直接关系到软件开发的质量,影响到用户的需求,因此必须要引起对程序设计的重视,只有形成良好的设计意识、规范化思想,才可以让程序设计更加完善,提高软件的生产效率和质量。以下主要针对程序设计中几种常用的方法进行比较和分析,从而为软件工程的发展奠定良好的基础。
1 软件工程的概述
1.1 软件工程的概念
软件工程实际上所研究的是软件的开发和后期维护,与规范化、系統性、可定量的特点相结合以此实现软件实际开发和维护的价值,并且可以将现阶段的技术与以往较好的技术有效的结合起来,以便于可以更好的保证软件的质量。软件工程包含多项内容,主要有数据库、软件开发工具、程序语言设计、系统平台等等。在现代化信息化时代,各个领域都离不开软件的应用,应用最为普遍的软件主要有操作系统、游戏、办公软件、电子邮件以及人工界面等[1]。软件工程的出现和应用不仅提升了软件生产效率,减小了成本投入,也在一定程度上促进了经济和我国社会的发展,对人们生活品质的改善起到了推动作用。
1.2 软件工程的基本目标及原则
软件工程也可以被看作是解决软件问题的一项工程,就是对软件中所遇到的问题进行指导和处理。在软件工程概念中,对软件进行开发要依据市场的需求来进行,并且在开发过程中虽然是以团队为主,但依然要充分的考虑到客户的需求,依据客户的要求和标准,在成本以及进程给定的情况下,开发出可以与客户需求相一致的,具有高效率、适应能力强、可靠性和可维护性高、易操作的相关产品。但是应该注意的是,在软件工程落实的过程中,必须要依照相关原则来完成,主要的原则包括:信息隐蔽、模块化、抽象、确定性、一致性、局部化、可验证性及完备性。
⑴ 信息隐蔽所讲的就是利用封装技术,来完成对程序模块细节的隐蔽,从而将模块的接口简易化。
⑵ 模块化就是将程序分成若干个单独的体系,每个个体都有其独立的编程,应注意的是模块量要掌握好,不可过大也不可过小,太大容易造成内部复杂性增强,太小容易导致整体系统复杂性的增强。
⑶ 抽象原则就是要保持事物最基础的特点,运用分层次抽象的方法从上到下逐一将其细化,并以此来完成对软件开发过程的管控,将复杂简易化。
⑷ 确定性原则,就是在软件开发过程中所应用到的相关概念的表述必须要保证其准确、规范且无歧义。
⑸ 一致性原则,要求的就是外部的接口要与内部接口相一致,系统的要求要与操作流程相一致。
⑹ 局部化原则,要确保模块之间和内部要拥有松耦合性和高内聚性。
⑺ 可验证性原则,在软件开发完成后,要对其进行全面的检查、测试、审核等,以保证整个软件系统的性能。
⑻ 完备性原则,就是要保证软件内部相关功能、组成的完整性。
2 程序设计概述及其方法种类分析
2.1 程序设计的概念
所谓程序设计就是针对某一问题所采取的解决方式的过程,它在软件结构中有着十分重要的作用。通常情况下,程序设计都是以语言为基础的,利用相应的语言进行编程,其过程主要包括设计、分析、编码、检测、排查错误等环节[2]。因程序编写需要很强的逻辑性思维,因此必须要对其加以规范,主要从以下几个方面来规范:一是对源程序中的文档进行规范,就是规范标识的名称、注释、以及程序的视觉组织等;二是对数据信息进行规范,也就是将程序所显示的变量、次序等进行严格要求,以便于可以依照顺序查找变量,对于较为复杂的数据应标记注释;三是对语言的结构进行规范,即任何一条语言都不能过长,要简洁明了,尽可能地减少对GOTO语句的使用,编程最多选用三种最为基本常用的方法;四是对输入和输出数据的规范,每条出入数据都应进行校验个检查,使其出入相一致,以保证报表的准确性[3]。
2.2 程序设计方法对需求的分析
所谓的需求分析就是依据客户的需求,根据客户在软件方面的功能、操作、设计等方面的要求来进行设计和分析。分析的过程实际就是发现需求、完善需求、建立模型和完成需求的过程。模型通常包括三种:功能、控制和数据模型。在进行需求分析的过程中,必须要经过四个环节,分别是:了解需求、需求分析、需求标准、要求的编写和需求的审核。通常情况下,在进行程序设计时会用到三种较为常用的方法,分别是过程化程序设计方法、对象化设计方法和泛型化设计方法。针对其需求分析我们主要采用结构化分析方法。结构化分析方法又可以成为程序化分析方法,它的主要作用就是全面的了解用户,掌握用户对软件的整体需求。经常采用的工具有数据字典、数据流图、判定表和判定树[4]。①数据流图就是将数据在系统中的运动情况用图形的方式将其表示出来,主要体现的是系统的逻辑性能,也是逻辑模型的工具之一。在进行数据流图绘画时,应以从上到下、从外向内的方式逐一地将其内容细化,以保证数据整体的准确性和可靠性。②数据字典是指集系统相关数据为一体的程序列表,主要包括五个组成部分:数据流、数据项、数据构造、处理和存储。通过这样的方式对客户需求进行分析,不仅可以准确全面的了解客户所需,还可以提高软件的开发质量,有利于软件效率的提高。
3 程序设计方法之间的比较
过程化的设计方法又可以被称为是结构化方法,它最早起源于1970年后,并在软件工程中有着重要的地位。过程化方法的设计原则是从上向下、精益求精和模块化,所谓的模块化就是将软件系统分别单独的设立子模块,在所有的模块拼接完成后就会构成一个完整的软件系统。但在软件工程不断发展的过程中,问题也逐渐暴露,其中软件的生产效率低下、维护困难等最为常见。也正因其自身的抽象性较低,便于实现的特点,所以比较适用于处理一些比较简单、规模较小的问题。
对象化设计方法最早是在1980年被人们所发现和应用的,它的出现改善了过程化程序设计中存在的问题,大大提高了软件的生产效率,为软件的维护提供了便捷。在现阶段也已经成为了人们最常用的设计方法。对象化设计就是把软件系统划分成单个的对象,而各个对象的存在都是依靠对外界的分析而存在的,可以说它与我们认知的方式更为相似,而且它可以利用继承和类来实现与现实世界相符合的软件系统的建立[5]。与程序化方法相比较,对象化设计方法用对象替代了以往的功能分解,它的主要特征就是封装,也就是把代码和相关数据存放到对象当中,用对象将其进行封装,使数据和代码不受外部作用的影响,无法对其进行修改或访问。继承也是对象化的一大特点,即在父类方面所获取的相应操作或属性可以进行再次定义;另一个特点是多态,即父对象所定义的方法,子对象也可以按照自身的需求和方式对其进行改进,以自身去完成相应的动作。对象化设计方法更加重视对象的分析和设计,抽象性高,且实现过程较为复杂。它主要适用于相对复杂的问题,尤其是对象间关系形成层次的问题。
随着我国软件技术的不断发展,泛型化的设计方法随之发展起来,并得到了廣泛的应用。泛型化的设计方法是依据类型的需求,对其需求之间的关系进行分析来完成的软件结构和逻辑的设立。泛型设计方法的主要目的是把算法从对象行为当中分离开来,让算法的设计与数据的整体构造毫无联系,通过改变二者之间的关系,将强或和关系转变为弱或和关系以保证软件复用功能[6]。主要包括三个部分,一是概念,也就是和目标数据无实际关联的一组定义,但实际却可以进行数据操作;二是模型,也就是在数据应用到相应的概念时所形成的模型;三是强化,当其中的一个概念融合了其他概念的全部功能,则这一个概念就是其他概念的强化。泛型化设计方法所重视的是软件的抽象性和通用性,其优点在于抽象性高,程序应用范围较广泛,可以满足多数据分类的操作,同时保证原有的效率,但也因此使其实现变得更加复杂。所以,它主要的适用对象是通用性和抽象性高的问题。综上所述,这三种方法有着不同的特点,也有共同的特点,即可靠性和安全性好。三种方法的比较见表1。
4 结束语
根据上述对程序设计方法的对比分析,我们在进行程序设计时可以依据客户的需要、特点等来选择出适合的方法,提升用户的满意度。对程序设计方法进行比较和分析对软件开发是十分有益的。深刻理解这些方法,在以后的发展中以其为基础,充分发挥不同方法的作用,相信一定会走的更远。但是尽管如此,也避免不了问题的存在,所以也要不断完善和创新,将问题逐一击破,从而为其发展起到推动的作用。
参考文献(References):
[1] 王林章,何剑涛,韩志雄,卜磊,赵建华,李宣东.设计模式指导
的软件分簇方法[J].中国科学:信息科学,2014.1:37-53
[2] 常浩浩,覃征.基于EMF和OCL的MDA软件工程方法研究[J].
计算机科学,2007.1:268-271
[3] 李志辉,崔洪芳.组件化程序设计方法和面向对象程序设计
方法的比较[J].福建电脑,2004.11:21
[4] 王斌.软件工程程序设计中几种常用算法的比较研究[J].电
脑知识与技术,2012.18:4425-4427
[5] 李新.“程序设计方法学”双层次并行教学模式探讨[J].汕头
大学学报(自然科学版),2012.2:63-67,80
[6] 杜欣,丁立新,谢承旺,陈莉.基于EDA的并行基因表达式程
序设计方法[J].计算机科学,2010.2:196-199