过程质量保证的范围是什么?
过程质量保证是指不同于测试的、主要针对过程和中间工作产物的质量保证,一般而言,早年间的过程质量保证根据最早的CMM,也称为软件质量保证,缩写为SQA。现在最新的CMMI将其对应的过程域称为产品和过程质量保证,缩写是PPQA,这里面的一个P产品包括了最终产物,但其焦点是中间工作产物,所以这个P放在这里反而是带来一些混淆,与测试存在一些重叠。所以过程质量保证(PQA)这个提法恰恰是这么多提法中最没有歧义的提法,因为过程包括并突出了中间工作产物。
过程质量保证的典型工作范围:
1,确保过程是否符合既定的要求,过程包括有立项、项目启动、里程碑评审、打基线、变更、状态报告等等
2,确保中间工作产物是否符合既定的要求,典型的中间工作产物有计划、需求、设计、代码、测试用例等等
过程质量保证的价值体现层次
最基本的价值-第1层:进行符合性检查,对照规范发现项目中的不符合情况,并沟通各方来解决
第2层:理解项目的情况,协助甚至指导项目,比如识别风险,建议风险和问题的应对措施;能够根据规范和实践来修订PQA检查表
第3层:在项目中识别改进机会,能够考虑到同类型项目
第4层:提供项目参照样例和比较基准,辅导项目
第5层:处理项目面临的优先改进机会,管理并提升客户/干系人的满意度
一般而言,普通的PQA人员达到第1层就满足了PQA基本要求,这个要求不高,所以不少组织会安排资历学历都不高的员工来担当PQA。
过程质量保证人员的技能要求
达到第1层要求的PQA人员只需具备基本的技能和沟通能力
达到第5层要求的PQA人员所需技能包括:
1,CMMI、ITIL、PMBOK、Agile等等
2,所服务领域的基本知识
3,所在组织的各项规范
4,项目管理、质量保证
过程质量保证工作的成果展现
归根结底并长时间而言,项目或产品真正的商业成果是过程质量保证工程的终极成果展现,与开发团队、测试团队都是一样的。
但商业成果的展现不是短时间可以判断的。所以在短时间内PQA的成果展现主要依赖于PQA自身工作,典型的成果展现有:
1,PQA工作发现得到及时沟通并解决
2,分析不符合项,提供预防措施
3,分析关键指标,提供优化建议
4,结合项目实践,提出改进建议
5,深入理解项目状态、风险和问题,提出建设性建议和意见
6,将项目层没有及时解决的问题提升到更高管理层
7,分析项目/团队趋势
8,解决项目共性问题,优化相应规范
1、什么是质量保证?
在CMMI中,质量保证的英文全称是Process and Product Quality Assurance,即过程与产品质量保证。一般大家更习惯叫质量保证或QA,它的目的是为员工和管理层提供过程和相关工作产品的客观洞察。之所以说它客观是因为:
1)质量保证人员是一个独立于项目组之外的第三方审计人员,不能是直接参与开发、测试和项目管理的人(当然实际也有例外,有些公司QA可能是兼职的);
2)质量保证人员不受监督对象部门的绩效评价;
3)质量保证人员具有独立的问题汇报渠道(可以跨级上报——QA很重要的特权)。
2、软件质量保证工作内容?
一般设有软件质量保证岗位的公司都有一套依据自己公司实际研发现状制定的完整研发过程体系,所有的软件质量保证人员入职一家新公司,首先需要做的事情就是学习和深刻了解该公司研发过程体系,否则后续工作是无法开展的。
一般软件质量保证工作内容主要分三大块:
1)过程辅导
依据研发过程体系辅导所有开发项目/版本前期及项目过程各个环节及各环节具体活动执行(含流程、方法、模板及过程中相关工具的使用)。
辅导时机:
● 到达项目/版本计划中计划的时间点
● 触发事件驱动(如:邮件)
辅导方式:
● 口头
● 邮件
● 电话
● 通讯工具(如:QQ、RTX等)
● 必要时可以开展正式的课堂培训(一般很少)
2)过程检查
所有开发项目/版本开发过程中,依据当前的研发过程体系客观的对实际执行情况进行检查与评价。
检查的方式:
● 参加项目会议(评审会、周会)
● 与各个环节人员沟通
● 触发事件驱动(如:邮件)地进行检查
● 检查工作产品
3)过程问题记录与跟踪
记录过程检查过程中发现的不符合项,并与相关负责人进行沟通,了解产生问题的原因,跟踪不符合项确保问题得到解决。
伴随上工作过程中还会有一些其他工作内容,如下:
4)向项目组和管理层提供质量保证活动结果——风险预警与问题报告。
预警风险、及早报告项目问题,使项目免受损失或少受损失,是质量保证的重要价值体现。
有经验的质量保证人员能够基于过程中了解到的项目过程质量状况和产品质量状况,及时识别出项目过程中存在的风险和发现过程问题,并定期(一般都是一周)向项目组与管理层预警风险、报告问题。
项目组必须在规定的期限内回复质量保证人员报告的问题。
对于无法协调一致的问题要及时升级。
● 就质量保证问题的认定双方不能达成一致。
● 就质量保证问题的解决计划双方不能达成一致。
● 项目组未按计划解决质量保证问题。
● ……
管理层必须及时处理升级的问题。
● 强制项目组解决。
● 豁免。
5)严重问题根因分析
质量保证人员需要定期(如每月/季度)对记录的问题进行分类与分析,对于过程中发生的严重问题或事故,必须了解问题产生的根源才能够在后续进行规避。一般若公司有多个质量保证人员,应以部门为单位开展问题根因分析活动,必要时还可以邀请EPG小组成员一起),问题根因分析活动结束后应向相关领导出具根因分析报告,提出当前的对策及未来建议。
6)收集与反馈过程改进建议,协助过程改进
一般公司EPG(过程改进小组)大都由其它岗位人员兼职的,我就职的3家公司质量保证人员都会兼EPG中的某个角色。
质量保证人员在项目过程中会与软件生命周期各个环节的人员打交道,有心的质量保证人员在此过程中肯定能够发现很多研发过程体系不合理或不够完善的地方,同时项目结项时质量保证人员要进行质量保证总结,在总结过程中也可以收集到很多过程改进建议,质量保证人员要定期将收集到的过程改进建议反馈给EPG组长,由EPG组长规划过程的改进。
7)其它
其它依据各个公司具体情况而定,如:定期进行交叉检查,开展研发过程体系培训,度量项目过程,协助项目经理监控项目进展。
软件质量保证工作的开展是有计划有序进行的,一般项目初期(如:项目计划阶段)质量保证人员要制订质量保证计划,质量保证计划要得到项目经理、质量部门负责人的评审/审批。
同时在实际检查过程中也是有依据的——QA检查单,一般公司研发过程体系中都会制订一份完整的QA检查单模板,各个项目要依据项目过程定义进行裁剪。
3、质量保证人员的素质和能力要求
软件质量保证工作涉及到软件工程的各个方面,软件质量保证人员要与不同角色的人员进行沟通,因此软件质量保证人员除了要有较高的智商和情商外,还有具备如下的素质和能力:
1)要有控制软件质量的能力
也就是说要熟练掌握公司各种流程、标准和规范,做好第三方独立审计的工作并及时发现、纠正问题。在必要时可以利用向高层领导直接汇报的权力来“威慑”相关人员,以确保软件质量朝好的方向发展。在控制软件质量发展方向的同时要学会控制自己的情绪,因为并不是所有人员都很了解公司的研发流程、软件质量保证的工作以及如何从根本上去提高软件质量,工作中很多时候有“秀才遇到兵,有理说不清”的感觉,这时就更加需要控制自己的言语和情绪,找到合适的方式进行沟通,使问题最终得到解决。
2)对问题根源识别和归纳的能力,即透过现象看本质的能力。
3)举一反三的能力。
4)很强的沟通能力。
5)要适当强势,做好灵活性与原则性间的平衡的能力
6)客观、对事不对人的职业素养
4、质量保证人员的技能要求
● 软件工程/系统工程的理论、方法
● 工作过程标准
● 沟通、协调技能
● 基本的管理知识和技能
● 项目管理的理论、方法
● 质量保证工作的原理、方法
5、软件质量保证岗位等级
1)交警(初级)
像交警查处交通违章那样,直接向所发现的不符合项贴“罚单”即可。
2)医生(中级)
像医生那样对项目进行检查和诊断,发现问题并可以开出“药方”。
3)老师(高级)
像老师那样发现学生的弱项,并找到如何提高学生能力的方案,然后对学生进行辅导和培训。