一、软件企业的质量保证体系

我们知道质量保证体系的建设是一个系统工程,质量的保障不是某些人或者某些部门的工作,而是整个企业的文化,理念的贯彻。如果一个企业在进行质量保证体系的建设和推广过程中,只是在强调方法,强调规范,而不是把质量意识,企业文化贯穿其中,那质量保证体系是否能持续的发挥作用,并形成为企业的核心竞争力值得怀疑了。

一般软件企业在规划质量保证体系的时候都会选择一个模型,目前比较流行的模型有:ISO9000:2000、CMMI、RUP、XP等,具体选用那种模型,还需要看企业的实际情况,并且能充分的协调:人、技术、过程三者之间的关系,使之能充分的发挥作用,促进生产力的发展。

在软件企业的质量保证体系建设过程中,一般需要独立完成以下几个流程:项目管理流程、软件开发流程、软件测试流程、质量保证流程、配置管理流程。

以上这些流程需要相辅相成,各自之间都有相应的接口,通过项目管理流程将所有的活动贯穿起来,共同来保证软件产品的质量。

整个软件质量保证体系中,所有的流程围绕软件开发流程展开,的目标是保证软件开发的质量,所以在众多的流程中,软件开发流程为质量保证体系中的主流程,其它的流程为辅助流程。之所以我们需要建立众多的辅助流程,是为了让软件开发过程透明、可控,通过多角色之间的互动,来有效的降低软件开发过程中的风险,持续不断的提高软件产品的质量。

二、QA、QC的职责

在我们开始讨论QA、QC的职责之前,我们先假定一个前提条件,即:企业内部的质量保证体系已经建设完毕,即上述的五个流程已经编写完毕,并且通过了试运行,目前正在按部班的执行。

QA的英文为:Quality Assurance 我们翻译为“质量保证”;

QC的英文为:Quality Control 我们翻译为“质量控制” 。

我们将这两个角色之间进行一下职责划分,以方便我们后续的讨论。

QA:监控公司质量保证体系的运行状况,审计项目的实际执行情况和公司规范之间的差异,并出具改进建议和统计分析报告,对公司的质量保证体系的质量负责。QC:对每一个阶段或者关键点的产出物(工件)进行检测,评估产出物是否符合预计的质量要求,对产出物的质量负责。

通过上面的职责划分,我们发现,如果我们将软件的生产比喻成一条产品加工生产线的话,那QA只负责生产线本身的质量保证,而不管生产线中单个产品的实际质量情况。QA通过保证生产线的质量来间接保证软件产品的质量。

而QC不管生产线本身的质量,而只关注生产线中生产的产品在每一个阶段的质量是否符合预期的要求,如果我们生产的是杯子,那QC只关注:生产的材料是否是预期的,每个杯子瓶口的直径是否符合要求,杯子把手是否符合设计要求等等具体的、可量化的点。

针对软件企业的软件开发过程而言:

QA可以进一步明确为SQA,即:软件质量保证,只负责软件开发流程的质量,企业内相对应的角色为:软件质量保证人员,有的企业直接称之为SQA。