质量保证(Quality Assurance, QA)的目的是提供一种有效的人员组织形式和管理方法,通过客观地检查和监控“过程质量”与“产品质量”,从而实现持续地改进质量。质量保证是一种有计划的、贯穿于整个产品生命周期的质量管理方法。
质量保证过程域是SPP模型的重要组成部分。本规范阐述了质量保证过程域的三个主要规程:
- 制定质量保证计划 [SPP-PROC-QA-PLANNING]
- 过程与产品质量检查 [SPP-PROC-QA-PPQC]
- 问题跟踪与质量改进 [SPP-PROC-QA-TRACKING]
上述每个规程的“目标”、“角色与职责”、“启动准则”、“输入”、“主要步骤”、“输出”、“完成准则”和“度量”均已定义。
本规范适用于国内IT企业的软件研发项目。建议用户根据自身情况(如商业目标、研发实力等)适当地修改本规范,然后推广使用。
18.1 介绍
过程质量与产品质量存在某种程度的因果关系,通常“好的过程”产生“好的产品”而“差的过程”将产生“差的产品”。人们销售的是产品而不是过程,用户关心的是最终产品的质量,而开发者(团队)既要关心过程质量又要关心产品质量。
提高产品质量有三种基本方法:
- 质量保证。质量保证人员通过有计划地检查“工作过程以及工作成果”是否符合既定的规范,来监控和改进“过程质量”与“产品质量”。
- 技术评审。请同行专家、技术人员对工作成果进行评审,尽早发现工作成果中的缺陷。
- 测试。通过运行测试用例来找出软件中的缺陷。例如单元测试、集成测试、系统测试、验收测试等。
质量保证既关心过程质量又关心产品质量。如果“工作过程以及工作成果”不符合既定的规范,那么产品的质量肯定有问题。基于这样的推理,质量保证人员即使不是技术专家,他也能够客观地检查和监控产品的质量。这是质量保证方法富有成效的一面。但是“工作过程以及工作成果”符合既定的规范却并不意味着产品的质量一定合格,因为仅靠规范无法识别出产品中可能存在的大量缺陷。这是质量保证方法的不足之处。所以单独的“质量保证”其实并不能“保证质量”。技术评审与测试关注的是产品质量而不是过程质量,两者的技术强度比质量保证要高得多。技术评审和测试能弥补质量保证的不足,三者是相辅相成的质量管理方法。我们在实践中不能将质量保证、技术评审和测试混为一谈,也不能把三者孤立起来执行。让质量保证人员参加并监督重要的技术评审和测试工作,这是很好的方法。把三者有机地结合起来,可提高工作效率,降低成本。
质量保证小组(Quality Assurance Group, QAG)有如下特点:
- 质量保证小组在行政上独立于任何项目。这种独立性有助于质量保证小组客观地检查和监控“过程以及产品的质量”。
- 质量保证小组有一定的权利,可以对质量不合格的工作成果做出处理。这种权利使得质量保证小组的工作不会被轻视,并有助于加强全员的质量意识。需要强调的是,提高产品质量是全员的职责,并非只是质量保证小组的职责。
质量保证过程域有3个主要规程:“制定质量保证计划”、“过程与产品质量检查”和“问题跟踪与质量改进”,如图18-1所示。
一、制定质量保证计划
质量保证小组为每个项目指定一名质量保证员(即接口人)。质量保证员撰写《质量保证计划》,项目经理和质量经理审批该计划。《质量保证计划》的主要内容是“过程与产品质量检查计划”、“参与技术评审计划”和“参与测试计划”。
二、过程与产品质量检查
质量保证员客观地检查项目成员的“工作过程”和“工作成果”是否符合既定的规范,并与项目成员协商改进措施。质量保证员记录本次检查的结果和经验教训,并及时通报给所有相关人员。
三、问题跟踪与质量改进
质量保证员设法先在项目内部解决质量问题,如果在项目内部难以解决,则提交给上级领导处理。质量保证小组分析机构内共性的质量问题,给出质量改进措施。
质量保证过程域产生的主要文档有:
- 《质量保证计划》,模板见[SPP-TEMP-QA-PLAN]。
- 《质量保证检查表》,模板见[SPP-TEMP-QA-CHECKLIST]。
- 《质量保证报告》,模板见[SPP-TEMP-QA-REPORT]。
- 《质量问题跟踪表》,模板见[SPP-TEMP-QA-TRACKING]。
18.2 制定质量保证计划
18.2.1 目的
- 制定关于检查和改进过程质量、产品质量的计划。
18.2.2 角色与职责
- 质量保证小组为每个项目指定一名质量保证员(即接口人)。
- 项目的质量保证员制定《质量保证计划》。
- 项目经理和质量经理(如果存在的话)审批《质量保证计划》。
18.2.3 启动准则
- 《项目计划》已经制定。
- 该项目的质量保证员已经确定。
18.2.4 输入
- 《项目计划》
18.2.5 主要步骤
[Step1] 制定过程与产品质量检查计划
- 质量保证员根据本项目的特征,确定需要检查的主要过程域和主要工作成果,并估计检查时间和人员。注意,对某些过程域的检查应当是周期性的而不是一次性的,例如配置管理、需求管理等。
- 质量保证员确定相应的检查表(模板见SPP-TEMP-QA-CHECKLIST)。
[Step2]制定“参与技术评审”的计划
- 《技术评审计划》一般由项目经理或者项目的技术骨干制定。
- 质量保证员应当参与并监督重要工作成果如需求、设计、代码的技术评审。质量保证员根据《技术评审计划》,制定“参与技术评审”的计划。
[Step3]制定“参与测试”的计划
- 一般地,项目开发小组自己负责单元测试和集成测试,机构独立测试小组负责最终产品的测试(如系统测试和验收测试)。由于测试的种类比较多,《测试计划》也可能有多个。
- 质量保证员应当参与并监督重要工作成果的测试。质量保证员参考各种《测试计划》,制定“参与测试”的计划。
[Step4]审批质量保证计划
- 虽然质量保证小组在行政上独立于任何项目,但是质量保证员的工作与项目紧密相关,所以《质量保证计划》应当经过项目经理的审批才能生效,以确保《质量保证计划》与《项目计划》一致。
- 如果机构存在质量经理,那么质量经理也要审批《质量保证计划》,以确保《质量保证计划》符合机构的要求(避免过于宽松而流于形式)。
18.2.6 输出
- 《质量保证计划》
18.2.7 结束准则
- 《质量保证计划》已经制定,项目经理和质量经理(如果存在的话)批准该计划。
18.2.8 度量
- 质量保证员统计工作量和上述文档的规模,汇报给项目经理和质量经理。
18.3 过程与产品质量检查
18.3.1 目的
- 客观地检查项目开发小组的“工作过程”和“工作成果”是否符合既定的规范。
18.3.2 角色与职责
- 质量保证员负责过程与产品质量检查。
18.3.3 启动准则
- 根据《质量保证计划》执行质量检查。
18.3.4 输入
- 《质量保证计划》
- 质量保证检查表
18.3.5 主要步骤
[Step1] 准备
- 质量保证员和项目经理确定本次质量检查的时间、地点、参加人员等。
[Step2] 客观地检查过程质量
- 质量保证员根据检查表,和相关的项目成员交谈,检查项目的实际执行过程(包括项目管理过程、项目研发过程、机构支撑过程等)是否符合既定的规范。如果发现不一致,质量保证员应当与相关人员分析原因并协商改进措施。
[Step3] 客观地检查工作成果的质量
- 质量保证员根据检查表,和相关的项目成员交谈,检查项目的工作成果是否符合既定的规范(一个产品包含很多工作成果)。如果发现不一致,质量保证员应当与相关人员分析原因并协商改进措施。
[Step4] 记录检查结果
- 质量保证员如实记录本次质量检查结果,并总结经验教训。该信息保存在《质量保证工作报告》中。
[Step5] 通报结果
- 质量保证员及时将本次质量检查的结果、经验教训通报给所有项目成员、上级领导和其他相关的人员。
18.3.6 输出
- 《质量保证报告》
18.3.7 结束准则
- 质量保证员已经客观地检查了过程质量和工作成果的质量。
- 质量保证员把本次PPQC结果、经验教训通报给所有相关人员。
18.3.8 度量
- 质量保证员统计工作量和上述文档的规模,汇报给项目经理。
18.4 问题跟踪与质量改进
18.4.1 目的
- 识别质量问题并跟踪问题的解决过程;分析共性质量问题,给出质量改进措施。
18.4.2 角色与职责
- 项目的质量保证员识别质量问题并跟踪问题的解决过程。
- 质量保证小组分析机构内共性的质量问题,给出质量改进措施。
18.4.3 启动准则
- 有关人员已经执行质量检查、技术评审或者产品测试。
18.4.4 输入
- 质量检查、技术评审或者产品测试的报告
18.4.5 主要步骤
[Step1] 记录质量问题
- 质量保证员记录在质量检查、技术评审和产品测试过程中发现的质量问题。
[Step2] 确定解决措施
- 质量保证员首先设法在项目内解决已经发现的质量问题,与项目成员们协商解决措施。
- 质量保证员识别出那些在项目内难以解决的质量问题,将这些问题递交给上级领导,由上级领导给出解决措施。
[Step3] 跟踪问题的解决过程
- 质量保证员跟踪问题的解决过程,记录问题的状态,直到问题被解决为止。
[Step4] 分析共性问题,给出改进措施
- 质量保证小组分析机构内共性的质量问题,给出质量改进措施。
18.4.6 输出
- 《质量问题跟踪表》
18.4.7 结束准则
- 所有已经识别出来的质量问题都得到妥善的解决。
18.4.8 度量
- 质量保证员统计工作量和上述文档的规模,汇报给项目经理。
18.5 实施建议
- 企业根据自身的实力、人力资源组建质量保证小组,人员可以是全职的也可以是兼职的。一般地,质量保证小组和SEPG之和占企业总人数的5%左右。
- 质量保证小组应当拥有直接向上级领导反映情况、提出建议的权利,如果质量保证小组的地位无足轻重,他的工作很容易被项目成员轻视或抵制。
- 先对质量保证小组进行培训,让他们掌握必要的工作技能。
- 选用合适的软件工具,尽量减少质量保证的工作量。