软件质量管理的方法、工具和保证
中国科学院软件研究所.北京市软件生产与质量保证联合实验室 第一作者简介:
李怀璋 博士 副研究员 高级项目经理
现就职于中国科学院软件研究所、北京市软件生产与质量保证联合实验室。
主要研究方向为软件工程,尤其是软件质量管理和软件过程改进等方面的理论研究、工具开发和相关培训等工作。已经和正在主持、负责多项国家“863”项目。在国内重要核心期刊发表相关学术论文十几篇。出版的著作包括《软件质量管理标准、技术和实践》(合著)和《软件质量保证指南》(译著,即将出版)等。 写在前面的话:
我们中国的软件产业是如此之年轻,如同一个年轻人,一个富有青春气息的朝气蓬勃的年轻人,在其发展中,是否也容易忽略了一些很基本的东西?
当我们热衷于追求某种时尚和新技术时,是否也容易忽略了一些最基本但却非常重要的东西,而且这些东西往往是来自于我们的生活经验。 1、从问题入手
对于一个发展中的组织,问题的暴露是很自然的,改进的过程实际上就是在按照计划执行与跟踪的过程中进行问题的发现、纠正和预防的过程。那么,发现问题、收集和整理问题、分析问题、排列问题重要性、提出解决措施、在部分区域演练、全面推广就成为过程改进的一个系统化的步骤。
图1 面向问题的软件质量保证框架 实际上,无论是W.Edward Deming博士提出的Deming环,即PDCA(Planning, Do, Check, Action)环,还是后来SEI(美国卡耐基梅隆大学的软件工程研究所)在此基础上提出的IDEAL(Initiating, Diagnosing, Establishing,Acting, Leveraging)模型,都是软件过程改进的一个基本过程和方法。
实际上,无论是高层管理者,还是SQA、项目经理、软件工程师将自己工作中经常犯的错误随时记录下来,都是一个问题的收集过程;在此基础上再进行问题归类、问题统计和原因分析,然后再进行问题排序、针对问题进行纠正、纠正措施或预防措施等,并形成这样一个自反馈系统,就可以实现持续的过程改进。面向问题的软件质量保证框架如图1所示。 2、运用统计与度量技术
Deming是一位将统计方法用于质量控制的咨询专家。他说:“统计质量控制是统计原理和技术的一次实践,这种方法可以用于生产的所有阶段以及维护和服务,其目的是经济的满足需求。”
诸如SPC(统计过程控制)、头脑风暴法、鱼刺图、PARETO原理、层次图等方法都是统计控制理论和度量理论的一些基本方法。 头脑风暴法(Brainstorming)
头脑风暴法的一般步骤可以概括为: (1) 确定质量问题。
(2) 尽可能找出影响质量问题的因素。
(3) 找出各原因之间的关系,在因果图上以因果关系用箭头连接起来。 (4) 根据对结果影响的程度,将认为有显著影响的因素标出来。 (5) 在因果图上标出必要的信息。
此方法实际上包含两项活动,一是用头脑风暴法找原因,二是对原因进行系统整理、归类,即先放开思路,进行开放式、创造性思维,然后再根据概念间的层次关系整理成型。它是用来表示质量波动特性与其潜在原因的关系,即表达和分析因果关系的一种图表。 鱼刺图
鱼刺图(Cause-effect diagram)又叫因果图、石川图、特性要因图、树形图,最先由日本东京大学石川馨教授于1953年提出。此后,很快在日本企业界得到广泛的应用。 PARETO原理
Pareto分析是一种识别消耗了最多成本的少部分的角色的统计分析方法。J.M.Juran是质量管理中Pareto原理之父。他首先提出了术语vital few 和trivial many,并应用到Pareto原理中。Pareto原理强调了将精力集中在少数重要的事情上(vital few),而不是在多数琐碎的事情上(trivial many)。
Boehm给出的度量中的头10个表示软件现象遵守Pareto分布: 20%的模块消耗80%的资源; 20%的模块包含80%的错误; 20%的错误消耗80%的修改成本;
20%的改进包含了80%的适应性为主的成本; 20%的模块占用了80%的执行时间;
20%的工具使用占80%的整个工具使用时间。
产品质量是由质量形成过程中许多因素共同作用的结果。质量有了问题,特别是主要质量问题,就要进一步找原因,并针对原因采取措施,才能解决问题。有些质量问题的原因一目了然,而有些质量问题的原因,就必须借助图形的方式来分析原因,这样就能帮助我们理清思路,从而对症下药。
而发现问题后,识别关键、把握关键是项目成败的关键,也是我们日常工作的关键所在。如不要为过于细节的讨论耗费太多时间。在CMM模型中提到的“关键成功要素”(Critical Success Factors)实际上就是一种基本的统计控制方法。
实际上,无论是我们的各种生活常识、管理经验、统计方法,还是古人早已提出的“孙子兵法”、“三十六计”等,都可能成为指导我们提高过程和改进质量的重要手段。比如是否可以考虑建立一个更好的质量体系框架,设立一些其它的关键过程区域,建立一套科学的裁剪准则等等,以便于更好地支持国内的软件组织进行过程改进。 3、必要的工具支持
软件过程改进的过程中,组织会产生大量的有关问题的历史数据,可以称为知识库;这些问题数据的采集和管理,就成为了一个重要的问题。组织可以通过这些知识库实现员工自我培训,从而实现知识的高效积累和复用。当然,工具不能解决所有问题,但必要的工具支持可以大大提高管理的效率。有了它,可以使组织的员工很快地学习到公司以前的经验知识,让错误不再重犯。它应该成为一种快速和有效的员工培训介质。 4、全员参与的质量保证
Lennart Sandholm在1978年东京召开的国际质量控制大会上,注意到了日本高层对质量做出的承诺。Lennart Sandholm注意到日本的与会人员有一半是高层管理者-总裁、总经理、部门经理、主任等等。在欧美召开的大会的与会人员则主要是质量工作者-质量保证工程师、可靠性工程师、质量经理等。很少有高层经理。
Deming说:“管理者们的到来不是仅仅听一下,而是要工作。他们已经从自身的实践中知道,他所做的是一个链式反应。随着质量的提高,成本开始下降。进而你可以降低价格。美国人不明白这一点。美国人认为提高质量会增加成本。”这段话一针见血地指明了问题的关键所在。
西方组织的一个弱点是其质量部门非常庞大而且是集中式的,职能也很多,如质量计划、协调、审计、审查和测试等。而日本的质量功能则由生产线上的人员(这些人受过必要的培训)实现的。日本公司也有质量部门,但人数很少,而且职能有限,主要集中于计划、审计和咨询等。高层管理者的质量审计评估组织的有效性,而且只有高层才能够授权进行重大变革。正是这种无所不在的质量意识让日本的产品质量远远走在了世界的前面。 可以看出,质量绝对不仅仅是质量部门的事情,以质量为核心的企业文化在未来将成为决定企业兴衰的关键因素。质量不是依赖于某个或某几个高手,而是依赖于整个过程。谁都会发现问题,项目经理、QA、高级管理者、程序员、设计人员、系统分析员等都具有质量保证的职责,并能起到质量保证的作用。好的过程是好产品的必备条件,这一点要成为企业文化的一部分,让质量文化深深地扎根于每个员工的心中。