软件工程运用工程学的基本原理和方法来组织和实施软件生产,其后又发展了与软件有关的心理学、生理学和经济学等方面的学科。在此期间,研究软件工程学的科学家们陆续提出了 100 多条有关软件工程的准则,1983年美国TRW公司B.W.Boehm将它们概括为著名的软件工程7条原则。
(1)按软件生存周期分阶段制订计划并认真实施。一个软件从定义、开发、运行和维护,直到最终被废弃,要经历很长的时间,通常称这样一个时期为软件生存周期。在软件生存周期中需要完成许多不同性质的工作,所以应把软件生存周期划分为若干阶段,并制订出相应的可行计划,且按照计划对软件的开发和维护活动进行管理。不同层次的管理人员都必须严格按照计划各尽其职地管理软件的开发和维护工作,不应受客户或上级人员的影响而擅自背离预定计划。
(2)坚持进行阶段评审。软件的质量保证工作不能等到编码阶段结束之后再进行。因为大部分错误是在编码之前造成的,而且错误发现得越晚,为改正它付出的代价就越大。因此,在每个阶段都要进行严格的评审,以尽早发现在软件开发过程中产生的错误。根据统计,设计错误占软件错误的63%,编码错误仅占37%。
(3)坚持严格的产品控制。在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。但是,由于外界环境的变化或软件工作范围的变化,在软件开发过程中改变需求又是难免的,不能硬性规定禁止客户改变需求,只能依靠科学的产品变更控制技术来适应需求变更。就是说,当变更需求时,为了保持软件各个配置成分的一致性,必须实施严格的产品控制,其中主要是实施基线配置管理。所谓基线配置,是经过评审后的软件配置成分,包括各个阶段产生的文档或源代码。一切有关软件修改的建议,特别是涉及对基线配置的修改建议,都必须按照严格的规程进行审查,获得批准之后才能实施修改。
(4)使用现代程序设计技术。自从提出软件工程的概念以来,人们一直致力于研究各种新的程序设计技术。1960 年代末提出的结构化程序设计(Structural Programming,SP)技术,已经成为大多数人公认的能够产生高质量程序的程序设计技术。随着软件建模技术的兴起,继而出现了结构化设计技术,接着又出现了结构化分析技术。实践表明,采用先进的技术可提高软件开发的生产率,还可提高软件的可维护性。
(5)结果应能清楚地审查。软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员或开发小组的工作进展情况可见性差,难以准确度量,使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,有效地进行管理,应当根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使得工作结果能够得到清楚的审查。
(6)开发人员少而精。合理安排软件开发小组人员的原则是参与人员应当少而精,即小组的成员应当具有较高的素质,且人数不应过多。人员素质高能大大提高软件开发的生产率,明显减少软件中的错误。此外,随着开发小组人数的增加,因交流开发进展情况和讨论遇到的问题而造成的通信开销也急剧增加。因此,应当保证软件开发小组人员少而精。
(7)不断改进开发过程。为保证软件开发的过程能够跟上技术的进步,必须不断地灵活地改进软件工程过程。为了达到这个要求,应当积极主动地采用新的软件技术,注意不断总结经验。此外,需要注意收集和积累出错类型、问题报告等数据,用以评估软件技术的效果和软件人员的能力,确定必须着重开发的软件工具和应当优先研究的技术。