软件企业质量保证的基石
――QA、QC的良性协作
国内的软件产业发展了20多年的时间,已经由个人英雄时代步入到中、小团队协作时代。相信不久的将来,国内一定会出现航母级的软件企业,那时候我们会迎来集团军作战的时代。不同的时代表明软件规模的不同,也标志着软件质量管理的复杂度急剧上升,同时对软件质量的保障方法也提出了更高的要求。
本文并不打算系统的阐述软件企业的质量保证体系,而是想从另一个侧面同大家分享软件企业在软件开发过程中两个重要角色之间的协作关系,以两个角色之间高效的互动来说明在开发过程中,我们如何来有效的保障软件产品的质量。
软件企业的质量保证体系
我们知道质量保证体系的建设是一个系统工程,质量的保障不是某些人或者某些部门的工作,而是整个企业的文化,理念的贯彻。如果一个企业在进行质量保证体系的建设和推广过程中,只是在强调方法,强调规范,而不是把质量意识,企业文化贯穿其中,那质量保证体系是否能持续的发挥作用,并形成为企业的核心竞争力就值得怀疑了。
一般软件企业在规划质量保证体系的时候都会选择一个模型,目前比较流行的模型有:ISO9000:2000、CMMI、RUP、XP等,具体选用那种模型,还需要看企业的实际情况,并且能充分的协调:人、技术、过程三者之间的关系,使之能充分的发挥作用,促进生产力的发展。
在软件企业的质量保证体系建设过程中,一般需要独立完成以下几个流程:
项目管理流程、软件开发流程、软件测试流程、质量保证流程、配置管理流程
以上这些流程需要相辅相成,各自之间都有相应的接口,通过项目管理流程将所有的活动贯穿起来,共同来保证软件产品的质量。
整个软件质量保证体系中,所有的流程围绕软件开发流程展开,唯一的目标就是保证软件开发的质量,所以在众多的流程中,软件开发流程为质量保证体系中的主流程,其它的流程为辅助流程。之所以我们需要建立众多的辅助流程,就是为了让软件开发过程透明、可控,通过多角色之间的互动,来有效的降低软件开发过程中的风险,持续不断的提高软件产品的质量。
QA、QC的职责
在我们开始讨论QA、QC的职责之前,我们先假定一个前提条件,即:企业内部的质量保证体系已经建设完毕,即上述的五个流程已经编写完毕,并且通过了试运行,目前正在按部就班的执行。
QA的英文为:Quality Assurance 我们翻译为“质量保证”
QC的因为为:Quality Control 我们翻译为“质量控制”
我们将这两个角色之间进行一下职责划分,以方便我们后续的讨论
QA:监控公司质量保证体系的运行状况,审计项目的实际执行情况和公司规范之间的差异,并出具改进建议和统计分析报告,对公司的质量保证体系的质量负责。
QC:对每一个阶段或者关键点的产出物(工件)进行检测,评估产出物是否符合预计的质量要求,对产出物的质量负责。
通过上面的职责划分,我们发现,如果我们将软件的生产比喻成一条产品加工生产线的话,那QA只负责生产线本身的质量保证,而不管生产线中单个产品的实际质量情况。QA通过保证生产线的质量来间接保证软件产品的质量。
而QC不管生产线本身的质量,而只关注生产线中生产的产品在每一个阶段的质量是否符合预期的要求,如果我们生产的是杯子,那QC只关注:生产的材料是否是预期的,每个杯子瓶口的直径是否符合要求,杯子把手是否符合设计要求等等具体的、可量化的点。
针对软件企业的软件开发过程而言:
QA可以进一步明确为SQA,即:软件质量保证,只负责软件开发流程的质量,企业内相对应的角色为:软件质量保证人员,有的企业就直接称之为SQA。
QC可以进一步明确为SQC,即:软件质量控制,只负责软件开发过程中各个阶段产出的工件的质量,产出的工件可能是相关的文档或者代码等,企业内相对应的角色为:软件测试人员。
由于各个企业采用的开发流程和测试流程不一样,在各个阶段SQC的对应人员不一定都为测试人员,如在需求阶段,产生的工件为《需求规格说明书》,对该文档的主要质量控制手段为评审,这时候在此阶段担任SQC职责的就是评审小组的成员。
QA、QC的良性协作
通过以上分析发现,SQA和SQC虽然主要的工作都是为了保证软件的质量,但是着眼点不尽相同。
SQA通过控制过程来保证软件产品的质量,而SQC是通过控制每个阶段的“结果”来保证软件产品的质量。
如果在软件开发过程中我们只要SQA或者SQC是否可以保证软件产品的质量那?答案一定是不可以的,通过下面的分析我们看看原因到底是什么。
软件企业中只有SQA的角色
如果企业中只有SQA的角色而没有SQC,我们假设企业对SQA的投入力度很大,于是企业得到了一个很好的流程(生产线),但是这个时候软件的产品是否就没有问题了那?如果我们的生产源头没有得到有效的控制,进入生产线的材料是残次品,那不管我们的流程控制的多好,那最终的产品的质量都不会高。
可能有朋友会说,如果我进行了很好的流程控制,对原材料的控制方法当然也纳入到了我们的流程之中,原材料没有了问题,那这件事情是不会发生的。
如果是制造业,这件事情可能会存在,但是在软件产业中,这件事情几乎不会发生。
因为在软件产品的开发过程当中,几乎所有的原材料都是自己生产的,如需求规格说明书、概要设计、详细设计等,单靠过程的控制无法得到无缺陷的“原材料”。由于软件开发的固有特性,我们在每一步的生产加工过程中,都会引入新的缺陷,不管我们的流程规划的多么完美。所以,在每一阶段完成后,都需要对上一阶段的工作产品进行检验,评估这个阶段的工作产品是否符合预定的质量要求,只有这样才能保证最终软件产品的质量。
软件企业中只有SQC的角色
如果企业当中只有SQC而没有SQA的角色,我们也假设企业对SQC的投入力度很大,在每一个阶段SQC都找出了相应的缺陷,这时候企业的质量保证是否就没有问题了那?
如果纯从质量保证的观点来看,在理想情况下,上述的软件企业的质量的确是没有问题,因为在每一个阶段,通过大量专业SQC(测试)的努力工作,找出了软件产品中的“全部”缺陷,这样的产品的质量当然没有问题了。
但是我们从另外一个角度看一下这个问题:首先软件中的缺陷在理论上是不可能被全部找出来的,由于软件测试的不可遍历性。其次,如果我们维护一个上述的软件测试团队,成本是相当高的,目前国际上还没有那个商业性的公司能够维护的起(微软的产品还会有大量的缺陷),也就是说在实际操作过程中几乎没有公司会同意上述的做法。另外,如果我们在软件生产的过程中,只单一的强调对结果的检验环节,而忽视过程控制,会造成持续的返工、极大的推迟交付产品的日期,最终造成软件开发的失败。这样的做法就像我们想减肥,不是去节食、多做运动,而是去不断的称体重想达到减肥的目的一样可笑。所以,我们想提高软件的质量,不是持续不断的进行测试,而是要改变软件开发的方式,改变我们的流程,在过程中保证软件产品的质量。
通过以上分析发现,如果想有效的保证软件产品的质量,SQA和SQC缺一不可,两种角色必须相互配合,在“过程”和“结果”都正确的基础上,才能有效改善软件产品的质量。
质量的持续改进
软件质量的提高,过程的改进是一个循序渐进的过程,不可能一蹴而就。针对软件企业而言,如何调配有限的资源,针对质量保证的短板,来有针对性的做出质量改进的规划才是企业迫切需要解决的问题。
首先,企业必须对软件质量的保证提出切实的目标,质量保证的目标绝对不是为了过级,拿到认证,这些只是附带的结果。企业质量保证的目标应该是提高产品的竞争力,重塑企业的文化。
其次,在质量保证的技术层面,SQA人员和SQC人员的互动,会为企业选择质量保证的短板提出建设性的意见。
SQC(测试)人员在工作过程中会产生出大量的过程数据,SQA人员通过对这些数据的统计分析,发现企业的问题所在,进而反馈到流程的改进活动中,再通过SQC人员搜集的大量数据来验证流程改进的有效性,最终达到质量的持续改进。
质量是企业的根本,不管我们现在的产品销售情况如何,企业之间的竞争早晚会过渡到质量的竞争上来,所以只有我们自己练好内功,才有希望打造出我们自己的百年老店。
作者介绍:
国内知名软件测试主题社区——测试时代(ltesting.net)工作室成员。
北京慧灵科技有限公司高级顾问,软件测试培训、咨询讲师,ISO9000注册外审员,北京软件行业协会测试工作委员会副秘书长。先后在北大方正,神州数码等国内知名企业从事测试管理工作。精通测试体系建设/测试人员管理/测试工具的选择与使用/测试过程管理与控制/测试过程的监控方法与评估/测试体系的优化与改进。
推荐测试时代的软件测试技术主要栏目:
软件测试技术: 软件测试工程师 测试用例 功能测试 测试管理 缺陷管理 手机测试 自动测试 单元测试 性能测试 安全测试 软件测试环境: Windows Unix 网络知识 服务器 开源测试:开源功能测试 开源性能测试 开源缺陷管理 开源配置管理 开源解决方案 测试开发: JAVA .net UML 脚本语言 数据库 中间件 测试资料: 商业测试工具 开源测试工具 软件测试教程 质量保证: 项目管理 需求管理 软件度量 项目估算 质量模型 解决方案 测试工具: Mercury测试工具 Rational测试工具 Segue测试工具 其它
分享到:
相关推荐
“Ch13 高质量的软件需求分析.ppt”可能会讲解如何通过清晰、完整的需求定义来保证软件质量,因为需求分析是软件开发的基石,对后续设计、编码和测试有直接影响。 “Ch14-提高软件设计质量.ppt”可能介绍了设计原则...
总结,软件质量保证体系是保障软件产品高质量、高稳定性的基石。通过建立和实施有效的质量管理体系,可以减少错误、提高效率,最终提升客户满意度,增强企业的市场竞争力。企业应持续优化和更新这套体系,以应对不断...
《软件质量保证与测试》是一门专注于提升软件产品质量和可靠性的学科。在当前的互联网时代,软件已经成为各行各业不可或缺的一部分,其复杂性和重要性日益增长。软件质量不仅影响用户体验,更关乎企业的声誉和生存。...
基石调参软件GLINTTiAOCAN是一款专为基石无人机飞控系统设计的参数调整工具。这款软件的主要功能是帮助用户对基石无人机的飞行控制器进行精细化设置,以优化飞行性能,确保无人机在各种环境和任务下的稳定性和安全性...
在IT行业中,软件质量与质量保证是至关重要的环节,它们构成了软件开发过程中的基石,确保了软件产品能够满足用户需求、性能稳定且易于维护。本篇将深入探讨这两个概念及其相关知识点。 首先,我们需要理解软件质量...
总之,计算机软件质量保证计划规范为软件开发质量保证提供了坚实的基石。它不仅是一份必要的文件,更是一套全面的方法论,指导着软件开发团队走向专业化、标准化的高质量开发之路。在这个高度依赖软件的时代,遵循...
这些知识领域构成了软件质量保证的基石。 首先,软件需求是整个过程的起点,清晰、完整的需求定义是保证质量的基础。软件设计阶段涉及将需求转化为可实施的结构和方案,设计的合理性直接影响软件的质量。软件构造是...
在当今这个信息技术飞速发展的时代,软件产品的质量直接关系到企业的竞争力以及...在实际工作中,无论是大型企业还是中小型企业,都应当重视并认真落实软件开发的质量保证体系,以适应不断变化的市场需求和技术进步。
因此,确保软件产品的质量,不仅关乎开发者的信誉和用户的使用体验,更是行业发展的重要基石。《软件质量保证管理办法》就是这样一份关键性的文档,它为软件开发提供了全面的质量管理框架,确保了产品质量的同时,也...
《浅谈软件质量保证计划》 软件质量保证(Software Quality Assurance, SQA)是软件开发过程中不可或缺的一部分,它旨在确保软件产品的质量和满足预定的需求。本文档详细阐述了【项目名称】的软件质量保证计划,...
近年来,随着对软件产品质量要求的不断提高,编码过程质量保证(Quality Assurance, QA)的重要性日益凸显。虽然业界已经普遍认同通过质量教育、技能培训和代码编写规范等手段来提升编码质量,但是在编码流程控制...
有效的沟通和准确的需求记录是实现高质量软件的前提。需求工程的进程涉及多个步骤,包括需求获取、需求分析、需求规格化、需求验证和需求管理。其中,需求分析的过程尤为关键,开发者需要判断需求的可行性、一致性、...
在软件企业建立质量体系的过程中,需要注意以下几个关键点,这些要点是确保软件产品质量和企业运营效率的基础。 首先,软件企业建立质量体系应遵循的主要标准和要求是GB/T19001-2000《质量管理体系 要求》或 TL9000...
综上所述,质量保证体系及保证措施在企业的运行中起到基石作用,它通过规范化和程序化的工作流程,确保了从决策到执行的每个环节都符合质量标准,从而提升了企业的竞争力和客户满意度。对于IT行业,类似的体系可以...
总结来说,软件测试是软件质量保证的基石,它确保软件的正确性、可靠性和用户满意度。通过不同测试模型的应用,可以更早、更全面地发现问题,提高软件质量,保障开发过程的效率和效果。因此,软件测试人员必须深入...
在软件开发过程中,质量保证是至关重要的环节,而测试风险管理则是确保软件质量的基石。本章我们将深入探讨测试风险管理的各个方面,以期为软件项目的成功实施提供有力保障。 首先,我们了解测试风险的基本概念。...
软件测试与质量保证是确保软件质量的关键步骤,它涉及到从单元测试到系统级别的多个阶段,运用白盒测试和黑盒测试技术,并结合有效的缺陷管理策略,以期发现并修复潜在的问题,最终提供满足用户需求的高质量软件产品...
总之,《产品质量保证基本手册范本》是企业质量管理的基石。它体现了企业对质量的承诺和对顾客的责任。通过这种标准化和规范化管理,企业能够在激烈的市场竞争中站稳脚跟,赢得消费者的信任,并为企业的长远发展奠定...
近期收藏的一份七页文档――《民营企业发展十问――不得不回答的问题》――针对这一问题进行了深刻的剖析,并提出了四个关键的知识点,为民营企业的发展指明了方向。 首先,文档强调了企业文化的重要性。企业文化是...
在整个学习过程中,理解并熟练掌握这些基本操作,是成为QC专家的基石。此外,持续学习和实践,熟悉各种QC工具和方法,如六西格玛、PDCA循环、鱼骨图等,将有助于提升你在质量管理领域的专业素养。通过不断地探索和...