无论是ISO9000还是CMMI,都是以过程为中心。也就是说,通过过程的持续改进来提高产品质量。而过程质量与产品质量如何正向关联呢?就需要质量保证(QA),这也是ISO9000和CMMI都很推崇的方法。但从国内软件企业的现状来看,很多企业的过程体系都相差无几,而开发出来的产品质量却千差万别。导致这种差别的原因有很多,过程及其执行方式的生搬硬套就是其中很重要的原因之一。
在建立QA组织的时候,多数企业也这样实行“拿来主义”。就像看着别人穿着一双非常漂亮的鞋,就想拿过来自己穿,一般都不会适合自己。其结果要么是打肿脚穿大鞋,要么是削足适履,效果可想而知。我们应该做的是“量脚买鞋”、“量体裁衣”。QA组织的建立也一样,应先了解企业的文化、可获得的资源以及过程成熟度水平等,再据此选择适宜的QA组织。SEI的CMM模型中强调的是软件质量保证(SQA)的独立性,即SQA要独立于其所进行质量保证的项目和项目的所在部门。也就是说,SQA要在行政管理上不隶属项目和项目的负责部门。CMM所要求的另一个SQA发挥职能的独立上报渠道,尤其是发现的不符合问题要逐级上报并跟踪问题的处理直致结束。如果SQA受技术高层的管理,而且技术高层之间对SQA职能和价值有很好的理解,如刘总说,SQA和项目间的对立和协调就会顺畅和协调一致得很好。SQA的价值和作用的有效发挥,还受到企业从上到下各个层面对SQA价值和作用的认识、SQA资源的选择和投入的影响。
在一个企业中,QA也好、开发工程师也好、或承担其他角色的员工,他们的目标都是一样的,他们都是企业的产品或服务质量链条上紧密相连和不可或缺的各个环节,他们之间没有完全或绝对的对立的关系。SQA要对项目相关的各种过程活动要遵循过程和规程进行评审,并对工作产品应遵循的标准规范进行审核。SQA除了工作能力、经验之外,还要对已建立过程和技术的了解。QA对整个商业目标和高层领导负责。CMMI模型进一步强调的是过程和产品质量保证和评价,即PPQA。虽然对QA的独立性放宽了要求,提高了实施PPQA的灵活性,但更加强调了PPQA功能的客观性。PPQA人员可以在项目间交叉,但还是不允许项目成员做本项目的QA。
QA做检查或评审与审核,并不是他们想查什么就查什么。QA要检查的内容在公司的过程、标准与规范、或质量体系中已经完全定义好了,并遵循QA的计划来执行的。QA要对过程活动评审和工作产品的审核,他们除了对过程和规范要熟练掌握外,其开发等各个环节的工作经历、经验,软件工程的知识,沟通能力也是十分重要的。