软件质量管理实践 ——软件缺陷预防、清除、管理实用方法 前言 故事发生在 2001年初,周一早晨,新上任的质量保证部经理召集部门的全体人员开会。当时该部门有 8个测试人员和 5个文档、3个美工。对于一个刚刚成立的拥有员工 70多人的软件公司来说,该部门人员占比达 23%之多,其投入的规模和同行小公司相比不算小。与会过程中,就软件质量问题,大家各抒己见。 经理说:“公司自从转向软件开发以来,开发工作开展很顺利,我们质量保证部主要工作是测试,尽快、尽多、尽早地发现程序中的错误,保证开发出来的产品质量,其责任重大。” 测试工程师甲说:“缺陷就是 Bug,程序员开发完产品后,咱们测试人员尽可能多地发现其中的 Bug,遗留在产品中的 Bug就会越少,产品质量就会越高。” 测试工程师乙说:“只要我们发现了所有的 Bug,让程序员改正过来,我们就可以放心地对用户说,我测过的软件你放心,绝对不会再有质量问题。” „„. 会议在经理的主持与分配任务中告一段落。 上述对软件产品和软件产品质量的说法,从事软件研发的人可能都听到过。相隔 7年之后,回首往事,仔细思考一下,其中类似说法有多少是完全正确的呢?软件质量真的像他们说的那样吗? 在 20世纪 90年代中期,几次著名的分析都得到了相同的具有普遍性的结论,即软件项目的成功率非常低。著名的观点如,软件开发仍然具有高度的不可预知性,只有大约 10%的软件项目在最初估计的预算和进度内成功地交付;与其说管理规范是技术进步,还不如说是成功和失败的鉴别器;软件废品和返工的程度是不成熟过程的象征。 目前,随着软件工程技术的不断发展,人们已经逐渐认识到,软件质量是多方面的活动协力构建起来的,由软件开发整个过程的质量所决定,质量问题不是仅仅通过测试就能发现并解决的。大量实践证明,软件产品与传统产品有着不同的特征,如不可见性、灵活性、复杂性等,所以软件缺陷的预防自始至终是重要的,广义的软件开发质量保证活动,更多地强调软件缺陷的预防、及时发现与剔除。 因此,不像建筑工程那样精确地衡量、计算出每一元钱在软件产品中是如何花费的,软件开发过程的控制和软件质量也要远比其他工程制品的管理复杂得多。 那么,什么是“软件产品质量”呢? Crosby将质量定义为“符合需求”,而 Juran认为是“适于使用”。质量的这两个定义相互关联,已经被人们广泛采纳和使用。 “符合需求”隐含着需求必须明确陈述出来,使之不被误解...