|
为了克服软件危机和提高软件质量,人们进行了大量的研究和实践。最初的重点是着眼于技术革新,从各种软件工具(如编辑、编译、调试工具等等)研制开始,发展成为对开发各阶段进行全面支持的计算机辅助软件工程(CASE)环境。同时,注重软件开发“模型”研究,也就是如何划分软件开发过程的不同阶段,并针对不同阶段开展了有关技术和方法的研究如需求工程、设计工程、程序设计方法学、软件测试等等。通过长期的实践发现,仅仅依靠这些工具环境、模型及方法学来提高效率和质量,并未达到预期的目标。但是,人们逐渐认识到,如果能够同时对软件开发过程的质量加以控制,则可以大幅度的提高软件质量。只有从一开始就在开发过程中严格贯彻质量管理,软件产品的质量才有保证。否则,开发工作一旦进行到后期,无论怎样通过测试和补漏洞,都会无济于事。这就是近年来国际上十分重视的“软件过程管理”思想。这种思想并非凭空想象,而是借鉴了在硬件领域成功实施全面质量管理的经验,对软件开发实行相应的质量保证工作,并已取得了成功的经验。
在实际工作中,可以从两个方面来理解软件质量保证工作。一方面,从顾客驱动观点看,注重于复审和校核方法并保证一致性,其关键是需要一种客观的标准来确定并报告软件开发过程及其工作成果的质量,一般由某个独立的小组(一般称为“软件质量保证小组”)完成,关键步骤包括:
选择项目应遵循的标准。制定项目开发计划,评价其完整性并选择项目将采用的标准。
对软件工程活动进行复审。根据事先制定的计划和选择的标准来复审软件工程活动。
校核工作成果。根据选择的标准来校核软件工作成果。
报告结果。将上述活动的结果(尤其是偏离)汇报给适当的管理层人员。
处理偏离。各种偏离将在适当的管理层次加以处理,若需要则交给上一级管理人员做进一步处理,直至得到解决。
另一方面,从管理者驱动观点看,注重于确定为了产品质量必须做些什么,并且建立管理和控制机制来确保这些活动能够得到执行。它包括确定项目产品必需的质量特性,努力工作以期达到质量要求,并显示已经达到质量要求。关键步骤如下:
建立质量目标 。以客户对于质量的需求为基础,对项目开发周期的各个检查点(如每个阶段结束时)建立质量目标。
定义质量度量(metrics)。定义各种质量度量来衡量项目活动的结果以协助评价有关的质量目标是否达到。
确定质量活动。对于每一个质量目标,确定那些能够帮助实现该质量目标的活动,并将这些活动集成到软件生命周期模型中去。
执行质量活动。执行已经确定的质量活动。
评价质量。在项目开发周期的确定检查点上,利用已经定义好的质量度量来评价有关的质量目标是否达到。
采取修正行动。若质量目标没有达到,采取修正行动。
事实上,以上两种含义的软件质量保证在实际工作均有体现,后者表现为从公司范围建立质量方针和质量保证体系并贯彻实施,前者则依靠某些没有直接执行责任的监督人员来保证质量体系得到有效落实,二者相辅相成。最终理想是每个人都能够自觉遵守有关规范,以主人翁的态度来展开各项质量工作,这也是近年来日益提倡的做法,许多软件企业正在努力营造一种全员参与的文化氛围,最大限度地调动人员的积极性,而这对软件开发的质量以至企业的生存发展都是至关重要的。
值得一提的是,对于软件质量保证工作的开展还存在着许多误解,比如:
只要开发人员写出尽可能多的文档,软件质量就会得到保证。
只要制定出严格的开发过程规范,软件质量问题就可得到彻底解决。
软件质量问题可通过软件测试得到彻底解决。
软件质量就意味着软件质量保证--只是在售出产品必须的认可过程中的另一步骤,是软件质量保证小组的工作。
这些错误观点都对软件质量工作的开展产生负面影响,必须认真对待。 |
|