接上文
软件的生产方式也发生了巨大的变化。开始时是手工业生产方式,软件的质量依赖于软件编制者个人的技艺和才智。后来,演变为工业化的规模生产,软件成为软件公司一批开发人员共同协作的产品。这时,软件产品的质量在很大程度上取决于软件公司实施的开发过程的优化程度和具体的管理水平。现在,又进一步扩展为软件生产的社会化。一个软件系统常常要由不同软件专业公司生产的软件构件产品集成而成。于是为保证软件的质量,又要求有相关的统一标准和协议,以及按照标准进行的测试和认证。软件质量的控制和管理技术是一门实践的技术,它是根据软件开发的大量实践经验积累而来的。这其中有很多成功的经验,也不乏惨痛的失败教训,例如:
(1)在美国宇航局的"旅行者"计划中,天王星探测器就是因为深度太空网络软件发送信息迟缓和能力衰竭而处于危险之中。
(2)软/硬件干扰问题是使一些航天飞机经常推迟发射时间的主要原因。
(3)在美国国防部某项工程中,事先设计好的先进程序无一可用,从而导致AFTI/F-16的首航时间耽搁了一年。坦诚地讲,我们国家软件产业发展较晚,目前真正能称得上是有一定规模的,具有大型自主软件开发能力的软件公司还不多,还缺乏这种规模化开发软件的实践经验。因而,人们往往对软件质量管理的重要性和必要性认识不足,理解不深。
近年来,软件质量问题对整个软件产业的影响日益加深,软件质量控制工作已经成为其中不可或缺的部分。同时,进行软件质量控制也是软件项目中比较繁重的工作,涉及质量计划编制、质量保证、质量控制等多个方面。
在很多软件企业里,软件质量管理在内部开发产品时做的相对较好:因为产品开发通常在各个软件企业的研发中心进行,涉及的人员以内部为主,进度压力相对较小,可以投入时间和精力来开展软件质量管理。对于有客户进行参与的软件实施项目,多数企业为了节省成本和赶进度,往往会忽略质量管理,实际上,很多企业通过ISO9001、CMM、CMMI等质量认证的目的就不是为了提高质量:有的企业是为了跟风,有的企业则是为了向客户展示证书。
在软件开发实践中,软件质量管理可以依靠流程管理(如缺陷处理过程、开发文档控制管理、发布过程等),严格按软件工程执行,来保证质量。如:
·通过从"用户功能确认书"到"软件详细设计"过程的过程定义、控制和不断改善,确保软件的"功用性";
·通过测试部门的"系统测试"、"回归测试"过程的定义、执行和不断改善,确保软件的"可靠性"和"可用性";
·通过测试部门的"性能测试",确保软件的"效率";
·通过软件架构的设计过程及开发中代码、文档的实现过程,确保软件的"可维护性";
·通过引入适当的编程方法、编程工具和设计思路,确保软件的"可移植性"等等。
本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2009/12/17/1626482.html,如需转载请自行联系原作者