UML软件工程组织

无所不在的质量保证——营造软件组织的质量文化
来自:中国软件质量保障平台 作者:李怀璋 武占春 王勇
写在前面的话:
我们中国的软件产业是如此之年轻,如同一个年轻人,一个富有青春气息的朝气蓬勃的年轻人,在其发展中,是否也容易忽略了一些很基本的东西?
当我们热衷于追求某种
时尚和新技术时,是否容易忽略了一些最基本却非常重要的东西,而且这些东西往往是来自于我们的生活经验。
1、质量是一种文化
传统的观点认为,质量管理的目的是把错误减至最少,这本身就是一个错误——把错误减少到最少是不够的!。著名的美国质量管理专家Crosby比于1961年创立了“零缺陷”的概念,被称之“质量革命”的概念,1979年他出版了《质量是免费的》(Quality in free)一书,阐述了他的新的质量管理的思想,在国际质量界得到了广泛的认同与赞赏。Crosby方法的基础是预防
,他的"第一次就把事情做对"的商业哲学,也就是达到“零缺陷”的质量管理理念改变了美国人做人做事的方式。
Crosby认为,那些不符合质量标准的工作,那些没有第一次就做好的工作,就必须进行补救,就会使企业产生额外的支出,包括时间、金钱和精力。由此而产生了质量损失。朱兰博士将此类损失喻为“矿中黄金”,其蕴藏量非常"丰富"。这些损失又象一座巨大的“水面冰山”只露出小小一角,而其大部分还深没“水中”未被人们所认识。因此对“矿中黄金”进行开采,将“冰山”全部推出“水面”,并加以挖掘,这就是质量经济性管理的基本思路。
质量成本(COQ)=符合要求的代价(POC)+不符合要求的代价(PNOC)。
其中,“符合要求的代价”是指第一次把事情做对所花费的成本,而“不符合要求的代价”却使管理层意识到成本的存在。这就是为什么当发生返工时,我们才发现成本开始增加了。
似乎人们总是假定质量、成本和进度之间是矛盾的。这是错误的。关注质量的改进能够显著提高进度和成本控制能力。Deming认为,提高劳动生产率和降低成本的唯一途经是提高质量。
即使进行了教育,员工依然有可能在提到质量时口是心非。当人们没有真正认识到质量的时候,他一定会这么做的。口头上关心质量,而实际上仅仅关心成本和进度。
2、围绕问题进行不断的改进
对于一个发展中的组织,问题的暴露是很自然的,改进的过程实际上就是在按照计划执行与跟踪的过程中进行问题的发现、纠正和预防的过程,那么,发现问题、收集和整理问题、分析问题、排列问题重要性、提出解决措施、在部分区域演练、继而全面推广就成为过程改进的一个系统化的步骤。
实际上,无论是W.Edward Deming博士提出的Deming环,即PDCA(Planning, Do, Check, Action)环,还是后来SEI(美国卡耐基梅隆大学的软件工程研究所)在此基础上提出的IDEAL(Initiating, Diagnosing, Establishing,Acting, Leveraging)模型,都是软件过程改进的一个基本过程和方法。
实际上,无论是高层管理者,还是SQA、项目经理、软件工程师等将自己工作中经常犯的错误随时记录下来,就是一个问题的收集过程,在此基础上再进行问题归类、问题统计和原因分析,然后再进行问题排序、针对问题进行纠正、纠正措施或预防措施等,并形成这样一个自反馈系统,从而实现持续的过程改进。面向问题的软件质量保证框架如图1所示。
3、统计控制与度量分析:
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)实际上就是一种基本的统计控制方法。
4、形式主义与内容至上:
无论是在实施ISO9000,还是CMM中,其中都会要求建立一些规范的形式,这些形式可能包括一些规程文件(Procedure)、检查点(Checklist)、质量记录表(Record)等,都是要求对质量的过程按照一定的规定的形式记录下来,并通过一定的形式进行检查,通过这些形式化的工作来确保最终的质量。
形式是一种重要的保障手段,人是容易犯错误的,人实际上就是一个不断犯错误的系统。质量保证的一个重要手段就是通过各种形式上的检查来避免各种错误的发生,如CHEKLIST就是一种避免犯错误的形式检查。形式与内容缺一不可。
例如在同行评审过程中,提供非常正式的评审会议形式往往可以起到很好的效果,而避免了分发给个人下去进行评审而得不到必要的保障。另外有些关键问题的解决必须在非常严肃的形式下进行,这样有利于直接面对并进行正面沟通。而不是绝对强调内容至上,而忽视了形式上的支持。
只有形式与内容的完美结合才是发现问题和解决问题的一个最佳方案。
5、什么是最重要的?
在我看来,CMM中最重要的是一种理念和方法,即来源于实践,解决实践中的问题;有什么问题,就解决什么问题。只要可以很好地解决实践问题,就是好的理论和方法。而不是教条主义地必须严格按照CMM的条文来做。有位主任评估师曾很精辟的说道:“学完CMM应该忘掉CMM”或者可以说,你根本不用考虑CMM中要求了什么,关键是怎么做可以更合理地解决实际存在的问题。
理念比方法重要、方法比操作重要。我们到底用它来干什么?为什么要用它?学会了其中的理念可以解决一切类似的问题,而学会了方法只可以应付一时,学会了操作可能马上就不管用。做什么都讲一个悟性,不需要追求形似,但需要达到神似!即在表面与本质之间,一定要追求本质的东西。
6、不要迷信任何东西
“CMM不是万能的,ISO9000实际上也很不错。”我们不能在选择了一种解决方法的同时,而将其它方法中好的东西一刀切掉,相反,我们应该集大家之所长,为我们的实际需求所用。不管是哪种方法和标准,重要的是解决了我们的实际问题,实践是检验真理的唯一标准。CMM绝对不是万能的,CMM中的很多东西讲的都是管理的问题,针对中国大多数中小型软件组织的质量管理,是需要大家一起进行重新认识和深刻思考的一个课题,是不是CMM就已经足够好了?我们在实施质量管理的过程中,是否也可以象“毛泽东思想是马列主义在中国最成功地运用和实践”那样,提出适合我们自己的思想理论和实践指南,这正是我们需要探索的问题。
实际上,无论是我们的各种生活常识、管理经验、统计方法,还是古人早已提出的“孙子兵法”、“三十六计”等,都可能成为指导我们提高过程改进和质量的重要手段。比如是否可以考虑建立一个更好的质量体系框架,设立一些其它的关键过程区域,建立一套科学的裁剪准则,以便更好地支持国内的软件组织进行过程改进。
7、无处不在的质量改进
IBM创办人T. J. Watson曾说:成功就在失败的另一端。
犯了错却不承认,等于错上加错,自欺欺人。为已造成的错误编织各种理由加以辩解,则形同掩耳盗铃,受害的还是自己。认识到自己错了需要明智,在公众面前承认自己错了需要勇气,改正自己的错误需要意志。最大的敌人往往就是我们自己。
质量绝对不仅仅是质量部门的事情,以质量为核心的企业文化在未来将成为决定企业兴衰的关键因素。质量不是依赖于某个或某几个高手,而是依赖于整个过程。好的过程是好产品的必备条件,这一点要成为企业文化的一部分。让质量文化深深扎根于每个员工的心中。谁都会发现问题:项目经理、QA、高级管理者、程序员、设计人员、系统分析员等都具有质量保证的职责,并起到质量保证的作用。
8、必要的工具支持
软件过程改进的过程中,组织会产生大量的有关问题的历史数据,可以称作为知识库,这些问题数据的采集和管理,就成为一个重要的问题,组织可以通过这些知识库实现员工自我培训,从而实现知识的高效积累和复用。当然,工具不能解决所有问题,但必要的工具支持可以大大提高管理的效率。有了它,可以使让组织的员工很快地学习到公司以前的经验知识,让错误不再重犯。它应该成为一种快速的和有效的员工培训介质之一。
9、让质量成为一种习惯
我们每个人都守着一扇自内开启的“改变之门”。除了自己,每有路人能为你开门,只要你愿意敞开心灵,抛却旧有观念,把良好的准则化为习惯,成功圆满就在掌握之中。
第一次就做对,是一种质量习惯,返工是最不好的质量习惯。实际上,质量更重要的是一种文化,是一种习惯,只有好的习惯就会产生好的质量,它的目标是让问题尽可能在早期得到预防和避免,它是提高软件生产率的最有力方法!
质量是免费的,但需要付出行动,认真地去做,并需要为此付出,付出就会有回报。
国际歌中唱到:“从来就没有什么救世主,…,只有靠我们自己!”。LA(Lead Assessor)和各种各样的大师等都是布道者,最重要的还是解决我们自己的实际问题。
善于学习、思考和总结,当质量已经成为我们工作的一种重要的习惯和文化时,就会持续不断地实现改进。
 

版权所有:UML软件工程组织