1
 软件工程
1.3.3.3 1.3.3 软件工程的基本原理

1.3.3 软件工程的基本原理

著名软件工程专家B.W.Boehm于1983年综合了软件工程专家、学者们的意见,并总结了开发软件的经验,提出了软件工程的7条基本原理。这7条原理被认为是确保软件产品质量和开发效率的原理的最小集合,又是相互独立、缺一不可、相当完备的最小集合。

下面简要介绍软件工程的7条基本原理。

1)用分阶段的生命周期计划严格管理

在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分为若干个阶段,并相应地提出切实可行的计划,然后严格按照计划对软件的开发和维护工作进行管理。Boehm认为,在软件的整个生命周期中,应该制订并严格地执行6类计划,它们是项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划及运行维护计划。

不同层次的管理人员都必须严格按照计划各尽其责地管理软件开发与维护工作,绝不能受客户和上级人员的影响而擅自背离预定计划。

2)坚持进行阶段评审

软件的质量保证工作不能等到编码工作结束之后再进行。这样说至少有两个理由:第一,大部分错误是在编码之前造成的,有统计表明,设计错误占软件错误的63%,编码错误仅占37%;第二,错误发现与改正的时间越晚,所付出的代价就越高。因此,每个阶段都要对软件的质量进行严格的评审,以便尽早地发现在软件开发工作中所犯的错误,这是一条必须遵循的重要准则。

3)实行严格的产品控制

在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。但是,在软件开发过程中改变需求又是不可避免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,显然不能硬性禁止客户提出改变需求的要求,而只能依靠科学的产品控制技术来顺应这种要求。

4)采用现代程序设计技术

从提出软件的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。20世纪60年代末提出的结构程序设计技术,已经成为公认的、先进的程序设计技术,后来又进一步发展出各种结构分析(SA)与结构设计(SD)技术。实践表明,采用先进的技术既可以提高软件开发的效率,又可以提高软件维护的效率。

5)结果应能清楚地审查

软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难以评价和管理。为了提高软件产品开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使所得到的结果能够清楚地审查。

6)开发小组的人员应该少而精

这条基本原理的含义是,软件开发小组组成人员的素质要好,而人数不宜过多,开发小组素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误数量明显少于素质低的人员所开发的软件中的错误数量。此外,随着开发小组人员数目的增加,交流情况、讨论问题而造成的通信开销也急剧增加。当开发小组人数为N时,可能的通信路径有N(N-1)/2条,可见随着人数N的增大,通信开销将急剧增加。因此,人员少而精的开发小组是软件工程的一项基本原则。

7)承认不断改进软件工程实践的必要性

遵循上述1)~6)条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但是仅有上述1)~6)条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,也不能保证能跟上技术的不断进步。因此,Boehm提出应把承认不断改进软件工程实践的必要性作为软件工程的第7条基本原理。按照这条原理,不仅要积极主动地采纳新的软件技术,而且要不断地总结经验,例如,收集进度和资源耗费数据,收集出错类型和问题报告数据,等等。这些数据不仅可以用于评价新的软件技术的效果,而且可以用于指明必须着重开发的软件工具和应该优先研究的技术。