怎样建立有效的QA组织
一、 概述
许多企业在建立研发管理体系时,尤其是实施CMMI时,都需要建立一个QA组织。但由于缺乏经验和指导,只能摸着石头过河,先从各个部门抽调一些新人和“闲人”成立一个部门,按照规范要求试试再说。这样尝试的结果,往往是走了弯路,一切回到原点。
还有一些企业已经成立了QA部门,QA的职责就是保证过程体系一板一眼地得到严格执行。而研发人员却认为QA只会站在研发环节之外指手画脚,像警察一般指责研发人员的不是。而QA人员对此也相当委屈,“我是照章办事啊”,得罪了人不说,还可能对自己的工作内容感到迷惘。这样的QA部门,在其它部门的眼中“可有可无”,在老板的眼中是“白白增加了管理成本”。
二、QA在不同组织结构中的组织形式
质量体系的建设是一个系统工程,它存在的形式不仅是一套质量体系文件和质量管理部,它更体现为一个企业的质量文化和质量文化在企业的贯彻实施。软件企业在规划质量体系时往往会选择一个模型,如ISO9000、CMMI、XP等。具体选择何种模型,还要看企业的实际情况,充分协调人、技术、过程三者之间的关系,使质量体系能够充分发挥作用,促进企业生产力的发展。质量文化的形成和贯彻实施与QA组织的人员构成、角色定位有着密切的关系。同时,不同企业的各种组织结构也影响着QA组织的建立和作用。根据对一些企业实际情况的调查,以下分别介绍职能型组织结构和矩阵型组织结构中,QA组织的区别和各自的优缺点。
1. 职能型组织结构中的QA组织
在职能型组织结构中,各个职能部门可能会设立自己的QA岗位。QA独立于项目组,直接向部门主管报告,但在业务上也向项目经理进行汇报。如图1所示。在职能型组织结构下QA组织的优点是:因为同属于一个部门,QA人员容易深入项目组的具体工作,容易发现项目的实际问题,项目组对问题的处理也更快捷。缺点是各职能部门相对独立,部门之间缺乏经验的交流和共享。不同部门还可能重复进行过程、方法和工具的研究。而且,企业中普遍存在“重业务,轻过程”的现象,QA的工作与业务工作相比显得无足轻重,QA人员的职业发展更容易受到忽视,很难接受应有的培训和提升。
图1 职能型组织结构下的QA组织
2. 矩阵型组织结构中的QA组织
在矩阵型组织结构中,企业设立了专门的质管部,QA人员由质管部指派到各个项目组。QA独立于项目组和职能部门,在行政上向QA经理报告,业务上向项目经理报告。如图2所示,在矩阵型组织结构中,项目经理对QA的工作绩效有建议权,但由QA部经理对QA进行直接考评,这既有利于保证QA工作的独立性和评价的客观性,也可以保证QA组织的长期利益与项目的短期利益之间的平衡。QA资源的分配是根据项目特点、工作量和进度而确定的,同时考虑项目优先级,对QA人员进行动态调配,保证更加充分地利用资源。一个软件QA通常可以负责5个左右的软件项目的质量保证工作,硬件QA可以负责2、3个项目的工作。
此外,由于QA人员直接面对项目组开展工作,非常了解过程运行的情况,更容易发现过程改进的“短板”,所以QA是改进过程实施的重要推动力量。因此,许多企业的质管部还担负了组织级质量体系的优化、过程资产库和度量数据库的建立、维护和使用的职能。质管部甚至还可能包括了企业级IT系统规划、建立和推广实施的职能。这种情况下,质管部成为QA人员的资源池,一方面负责为项目输送QA人员,另一方面关注培养QA人员。可以有效避免职能型组织结构中不同部门重复投资于质量体系、忽视QA职业发展的问题。
在矩阵型组织结构中也有一个问题,由于QA和项目组分别向不同的领导负责,因此相对而言,QA较难融入项目组深入发现问题,而且可能常常遇到QA与项目经理很难就一个问题是否成其为问题而达成共识的扯皮情况。对于这种情况,可以通过问题的“上报”机制来解决,即对于QA与项目组协商后仍不能解决的问题,QA可以直接报告职能部门主管和质管部经理,通过高层协商和协调资源来寻求问题的解决。
图2 矩阵型组织结构下的QA组织
三、QA的三大角色和职责
1. QA的三大角色
CMMI标准文件说,QA是高级经理的“ears and eyes”。研发人员眼中的QA往往也是“警察”, QA的作用似乎仅限于发现和报告项目的问题。其实,一个合格的QA在项目中会充当三种角色:
角色1-老师,具备学习和培训的能力。
角色2-医生,通过度量数据对项目过程进行诊断,帮助分析原因,开处方。
角色3-警察,以企业流程为依据,但要告诉大家流程背后的原因;如果和项目组针对某些问题意见相左,可以直接汇报高层。
典型的QA的职责包括了:过程指导、过程评审、产品审计、过程改进、过程度量。
◆ 老师的角色——在项目前期,QA辅助项目经理制定项目计划,包括根据质量体系中的标准过程裁剪得到项目定义的过程,帮助项目进行估算,设定质量目标等;对项目成员进行过程和规范的培训以及在过程中进行指导等。 ◆ 警察的角色——在项目过程中,QA有选择性地参加项目的技术评审,定期对项目的工作产品和过程进行审计和评审。 ◆ 医生的角色——在项目过程中,QA也可以承担收集、统计、分析度量数据的工作,用于支持管理决策。 在CMMI中,度量分析是一个单独的过程域。CMMI成熟度等级越高,对度量分析提出的要求也越高,难度越大。相应地,QA人员应该具备的能力要求就更高。那么,在企业的实际操作中,QA到底是老师、医生还是警察?或者三者皆
如果企业计划进行CMMI评估或者经过评估已经达到了某个成熟度等级,那么这些企业中的QA应该做到以上所列的所有工作,这是为了满足CMMI要求的必须。但如果仅从企业自身业务和管理的需要出发,考虑到企业文化,就不一定非得要求QA既当警察又当老师和医生了。例如,企业认为同行评审投入资源多,产生效益却不明显,QA应加强对同行评审过程的监控,因此QA可以承担同行评审会议的组织和协调工作。而有些企业则是由项目组按照流程自行组织同行评审,QA只是抽样参与评审过程进行审计。如果企业有外包业务,则QA应该作为外包过程和产品质量监控的主力。
2. 不同过程成熟度等级对QA职责的要求
CMMI不同成熟度等级对QA职责的要求有较大的不同,过程成熟度是影响QA工作分布很重要的因素。成熟度等级较低时,由于过程体系尚处于建立过程中,员工的过程意识不强,所以QA的工作主要集中在收集最佳实践、定义过程体系和培养员工建立过程意识方面。随着过程体系的实施、完善和制度化,QA的工作重点转移到过程评审和产品审计。当企业达到了高成熟度等级,即4、5级时,过程的执行已经高度制度化,成为员工的工作习惯,因此过程评审和产品审计所需要的工作量也大量减少,而定量管理需要QA作为专业人员更多地投入度量分析工作中。组织级的过程变革、技术变革等过程改进工作是5级企业对QA最主要的要求。如下图所示,随着成熟度等级的变化,QA花费在过程指导、过程评审、产品审计、过程度量和过程改进方面的工作量分布也不同。
图3 不同成熟度等级对QA职责的要求
五、谁是合适的QA人选
QA人员可以来自于企业的各个部门,既可以由专职人员担任,也可兼职。但很多企业的经验证明,选择一些新人和“闲人”组成的QA部门往往只能构成形式上的QA组织,却不能胜任企业对质量体系寄予的重任——保证逐步实现产品零缺陷、工作零错误。那么,企业应该选择什么样的人来担任QA才能有效地行使QA的职能?
1. QA应该具备的能力
在选择合适的QA人选时,企业应首先考虑他们的知识、技能和素质能否满足组织和岗位的要求。具体而言,可以从软能力、项目管理经验、软件工程经验、项目业务知识,以及对过程体系的熟悉程度等方面来考察。“软能力”是指创新、团队精神等不太容易评估但又非常重要的素质,软能力的培养不是一朝一夕的事情,而是一个潜移默化的渐进过程,它的形成则更多依赖于自我修炼。这好比我们在政治课上能学到政治常识,却不一定能提高政治觉悟一样。QA人员如果没有实际参与过项目/产品的开发,没有从事过项目管理工作,或是从有些部门抽调来的工作相对比较“轻松”的人员,即便他们熟读背诵了整个过程体系,仍然很难成为企业真正需要的合格的QA。
企业由于成熟度和企业文化的不同,对QA的期望也很不同。比如一个沟通协作差、部门墙林立的企业,QA的软能力,尤其是团队精神和沟通协调能力可能是最重要的要求;对于一个高过程成熟度的企业,对QA的要求则不仅仅是对过程体系的熟知,而要求QA同时具备深入的业务领域知识,并且是一位度量分析的专家。
2. EPG和QA人员的7种素质
EPG,即工程过程组,是过程改进的主体,QA是过程改进实施的重要推动力量,他们应该具备以下7种基本的素质:
1. 真正相信过程改进-只有发自内心的相信才能感染别人。 2. 自我激励-即便身处逆境,也可以克服不良情绪振作起来。 3. 不畏惧失败-我们的任何工作在第一次做时不可能完美。 4. 引导和激励其他人-只有几个人的改变不代表整个组织的成功。 5. 分清工作轻重缓急层次清晰-平衡工作的长期目标和短期利益。 6. 不断充电-不断学习、思考、实践、再学习。 7. 开心地工作。
六、总结
企业在建立QA组织时,应根据自身的需要,考虑到企业文化、成熟度等级,以及可获得的资源等因素,因地制宜。“抓壮丁”式地选择QA人员,绝无利于企业的质量体系发挥作用。只有选择了合适的QA组织形式,QA人员具备相应的能力和素质,才能保证质量管理体系良好地运作,从而现产品零缺陷、工作零错误的最终目标。
CMM类体系下的QA价值所在
QA到底是什么?它是做什么的?能带来什么好处?相信接触过CMM的人对其中这个核心角色应该不感到陌生,可能也或多或少地知道它的一些工作内容。尽管如此,很多人对这个角色的价值以及必要性可能还并不真正地理解,这里作者结合多年的质量管理经验总结了QA的十大价值所在,希望能帮助大家更进一步地了解QA。 1、保障制度体系 无论是CMM/CMMI还是ISO9000等其他管理思想,它都是强调法治而非人治,实施CMM也是希望能通过它将一些优秀的软件工程化开发经验用一套合理、规范的制度沉淀固化下来,使项目的成功不再成为一种偶然。这其中体现了一个三权分立的思想:SEPG(软件工程过程组)相当于是立法机构,负责建立、维护、改进企业的开发过程体系;SEG(软件工程组)则是执行机构,来执行这套开发过程,按照软件工程化的思想来实施项目;而QA则是督促这些规范贯彻实施的监督机构了。作为一个国家,监督机构的必要性和重要性不必多说。同样,作为一个企业,监督机构也是非常必要的。试想一下,如果企业花了大量的人力物力建立了一套规范的开发制度,每个项目启动时也制定了各种周密的计划,却缺少相应的机构来进行督促,那么项目在实施过程中是很容易由于这样或那样的原因而偏离既定轨道的,导致项目难于得到有效地控制。而企业的制度、项目的计划也就变得形同虚设。企业的制度实际上就相当于企业的法律,如果有法不依,执法不严,违法不究,久而久之这套制度就只是一纸空文了,浪费了大量的人力物力来建立却毫无用处。所以就非常需要存在QA这么一个机构来维护企业开发制度的权威性,并督促项目计划得到有效地实施。 2、促使过程改进 SEPG建立了一套规范过程后,并不表示这个过程就一成不变了,规范自身也必须不断地得到改进才能保证它的正确性和有效性。虽然过程规范在发布之前都必须经过评审,但并不表示只要通过评审就能发现所有的问题,还必须经过实践的检验才行。正所谓没有最好只有更好,所以过程的改进也是永无止境的。它的改变往往是来自两个方面,一方面可能是这个过程本身存在的缺陷和错误暴露出来了,促使SEPG必须去完善性的改进;另一方面可能是当时过程制定所依赖的情况发生了变化,现有的过程已不适应当前项目实施的需要,甚至还阻碍了项目的发展,这也会促使SEPG去进行适应性的改进。但是改进的来源从哪来呢?表面上好像项目组可以向SEPG提出, SEPG自己也可以去发现。但是实际情况往往是一方面项目组成员尤其是成熟度等级较低企业的项目组成员缺乏质量意识,只关注与自身相关的开发工作,对过程改进工作缺乏应有的认识,提不出问题或者有问题也不愿提出来。而另一方面SEPG却又往往苦于不了解项目情况而找不到关键问题所在。而QA的存在恰好就可以解决这一矛盾,因为QA经常要参与过程改进工作,又常常参与项目的活动,既熟悉过程体系又熟悉项目情况,刚好起到充当SEPG和项目组之间桥梁的作用。QA在项目实施过程中经常会发现很多问题,有些问题有些是因为项目组本身执行得不够规范而产生的,而另一些问题则是由于过程本身存在着一些缺陷引起的,如可操作性不强或前后矛盾等而让项目组无法实施。所以QA在工作当中,会将这些问题记录下来并反映给SEPG,以促使过程改进。另外项目实施过程中值得借鉴的一些经验做法QA也反映给SEPG,以便SEPG在企业范围内进行推广。如果过程完善了,反过来也会更好促进项目工作的开展,这就是一个良性循环。 3、 指导项目实施 QA对项目有督促的作用,但是仅仅督促是不够的,还需要给予项目组在过程实施上的指导。虽然在项目过程实施之前会要接受相应的培训,但是工作的顺利开展并不是光靠几堂理论课就能解决问题的,很多具体的做法需要在实践中才能真正理解应用,而且每个项目组成员接受培训的程度不同,对过程的理解可能存在一些偏差。因此还需要QA人员在项目实施过程中给以解答和指导,将这些规范真正地贯彻下去。QA对于项目组来说就象一把双刃剑,既有监督的一面也有指导的一面。既能帮助项目顺利的开展工作,也能使不规范不合格的项目暂停甚至关闭。这其中项目经理的指导思想非常重要,如果项目经理是抱着积极合作的态度,决心要真正按企业规范化过程来实施项目的话,那么QA将成为最有力的帮手和支持者。如果项目经理抱着消极对抗的态度,置企业管理制度不顾,欺上瞒下自行一套的话,则QA就是他们最大的障碍和绊脚石。 4、增加透明度 软件开发活动存在于人的大脑中,不象工业生产中在流水线上的工作情况令人一目了然。正是因为这一特点使得软件项目难于控制。而QA的存在则可以提高这种透明度、增加项目的可视性。让高级经理和相关工作人员能从项目组以外的第三方得到一个独立的视角和渠道,能从多方面客观地了解项目的过程、产品、服务等情况,以便做出正确的判断,及时发现问题及时进行纠正,使项目尽可能朝着良性的方向发展。 5、评审项目活动 评审项目活动是QA的核心工作之一,也是QA实施质量保证的一个重要手段,评审项目活动的目的是为了检查项目的活动是否符合企业制定的规范和项目既定的计划,及早发现可能存在的问题,并通报给相关人员以便及时纠正。虽然质量保证的最终目的是希望能保证质量,但质量是过程、人、技术三者的函数,除了过程外,还与人员、技术有关,而人员素质和技术水平的提高并不是依赖QA就能保证的,所以QA虽名为质量保证,实际上它直接保证的是决定质量好坏的一个重要因素——过程。过程不仅仅指活动,它还包括了产品,产品是一系列活动后的产物,所以保证过程要先从活动开始入手,因为控制得越早,发现问题越早,所付出的代价就越小,当产品出来之后再去控制就已经晚了。虽然单有好的过程不一定就会有产生好的质量,它还必须依赖人员和技术这两大因素,但是一个不好的过程肯定难产生好的质量,因为过程、人员、技术这个质量铁三角缺一不可。所以QA需要评审项目的活动,从保证活动入手来保证过程进而保证最终的质量。QA评审项目活动时应该做到独立、客观、公正,评审的时机和频率可按预定的检查点进行抽查。需要指出的一点是QA评审项目活动和同行评审不同,同行评审是指同行评审人员从技术角度对产品进行评审,而QA评审项目活动则是从规范角度对活动进行评审,这两者有本质的区别。 6、审核工作产品 评审完项目的活动,那么QA接下来就需要审核活动的产物——产品了,审核工作产品是QA的另一个核心工作。项目组在开发过程中会产生大量的工作产品,如需求、设计、代码、用户文档等。同行评审、测试等手段可以从技术角度对产品质量进行把关。而过程方面的质量,如符合性、规范性、一致性等则需要由QA来把关,产品的技术性与规范性不可或缺。最终的产品质量是由单个的软件工作产品质量组成的,所以QA也必须从审核单个的软件工作产品开始来保证最终的产品质量。审核产品也应该做到独立、客观、公正,它的重点在于产品规范性、符合性、一致性、完整性、可追溯性等方面。对于同一工作产品,如果QA代表参加该产品的同行评审工作,则可以视情况不对该产品进行独立QA审核,以免重复工作。 7、协助问题解决 QA无论是评审项目活动还是审核工作产品,都是为了发现问题并及早解决。QA发现问题后会将问题记录在报告中并提交给项目经理确认。然后还会协助项目经理一起找出问题的原因。如果在项目一级问题能得到妥善解决则应尽量在项目内解决,如果项目组一级不能解决,则QA会上报给高级经理以寻求更高一级的支持。QA问题的上报并不能看成是在向高级经理打小报告。其出发点也是为了更好地协助项目解决问题,有问题要及时发现,发现了问题就要及时解决,越早越好,否则小问题发展成大问题很可能就会给项目和企业带来无可挽回的损失。QA应客观地报告问题,报告用语应做到客观、公正、规范、严谨、准确、清楚。并且跟踪这些问题直到它们被妥当地解决为止。 8、提供决策参考 在那些没有专职度量分析人员的软件企业中,QA还承担了数据采集、统计、分析的工作。在项目一级,QA采集项目相关的数据并对其进行统计和分析。从分析的结果项目经理可以看出现阶段哪些方面做得还不够,哪些方面还存在着问题,哪些方面还需要改进,并为项目下一步的工作重点提供决策参考。在组织层面,QA也会收集组织的过程数据,并将统计分析的结果反馈到高层领导,用数据说话,用事实说话,为高层的决策提供有力的参考和依据。 9、进行缺陷预防 从长远来看,企业要降低成本、提高质量就必须要进行缺陷预防。消除产生缺陷和问题的根本原因并且防止将来这类缺陷和问题的再次发生,以优化项目及企业的规范过程。缺陷预防并不是简单对缺陷进行发现和纠正。等到缺陷被发现时,实际上缺陷已经发生过了,对节省项目成本和控制进度来说作用并不是显得特别大,缺陷预防重在预防,防范于未然才真正有效。通常的做法是要求在开发周期的每个阶段实施缺陷预防和原因分析,吸取其他项目或本项目前期的一些经验教训,并使原因分析和缺陷预防成为一种机制。在项目过程实施当中,QA会指导并协助项目组积极地开展缺陷预防活动,采集问题和缺陷相关数据,并对缺陷和问题的类型进行分析,了解问题的趋势,确定这些缺陷的根源和将带来的影响,并通过共同决策分析,得出所需要采取的措施并具体去实施。 10、实现质量目标 经过了一系列质量相关的活动后,最根本目的还是要通过这些活动来达到项目乃至组织的预期质量目标。只有达到目标了,一切的努力才没有白费,工作才显现了应有的价值。项目启动时,QA会和项目经理一起结合企业的过程能力基线来制定项目的质量目标。在项目实施过程中,QA会指导项目按阶段、里程碑等控制点对质量目标进行定量控制,定期将项目运行情况和质量目标进行比较,及时发现偏差,及时进行调整,以保证项目最终能达到质量目标。如果项目的质量目标都达到了,那么企业的质量目标也就容易实现了,并提升了整个企业的能力基线。 经过总结,大家可能已经认识到QA在企业中是一个不可缺少的角色了。但是从理论上来说,当企业的成熟度发展到很高等级,人人都具有很强的质量意识,人人都能自觉提维护质量体系,人人都充当起QA角色的时候,也许就不需要专职的QA了。正如国家机器的功能会随着社会文明的高速发展变得弱化甚至是消亡的道理一样。但是,就目前来说这还仅仅只是一种理想的状态,正如国家机器在若干年之后都不会退出历史的舞台一样,作为企业机器的QA在相当长的时间内也应该还会继续存在。而且随着我国软件业工程化思想的普及,软件企业对QA的需求也会相应地增大,QA这一新兴岗位也将越来越有发展前途。
一、 前言 本人在企业从事SQA工作,同时兼任SEPG的工作进行基于CMM3的过程改进,在实践过程中,对SQA的工作有了较多的想法和认识。本文是个人看法,请大家指教,如果要和本人联系,请发Email到:heqingemail@163.net。
二、SQA的理论探索
2.1、过程的认识
我们都知道一个项目的主要内容是:成本、进度、质量;良好的项目管理就是综合三方面的因素,平衡三方面的目标,最终依照目标完成任务。项目的这三个方面是相互制约和影响的,有时对这三方面的平衡策略甚至成为一个企业级的要求,决定了企业的行为,我们知道 IBM的软件是以质量为最重要目标的,而微软的“足够好的软件”策略更是耳熟能详,这些质量目标其实立足于企业的战略目标。所以用于进行质量保证的SQA工作也应当立足于企业的战略目标,从这个角度思考SQA,形成对SQA的理论认识。
软件界已经达成共识的:影响软件项目进度、成本、质量的因素主要是 “人、过程、技术”。首先要明确的是这三个因素中,人是第一位的。
现在许多实施 CMM的人员沉溺于CMM的理论过于强调“过程”,这是很危险的倾向。这个思想倾向在国外受到了猛烈抨击,从某种意义上各种敏捷过程方法的提出就是对强调过程的一种反思。 “XP”中的一个思想“人比过程更重要” 是值得我们思考的。我个人的意见在进行过程改进中坚持“以人为本”,强调过程和人的和谐。
根据现代软件工程对众多失败项目的调查,发现管理是项目失败的主要原因。这个事实的重要性在于说明了 “要保证项目不失败,我们应当更加关注管理”,注意这个事实没有说明另外一个问题“良好的管理可以保证项目的成功”。现在很多人基于一种粗糙的逻辑,从一个事实反推到的这个结论,在逻辑上是错误的,这种错误形成了更加错误的做法,这点在SQA的理解上是体现较深。
如果我们考证一下历史的沿革,应当更加容易理解 CMM的本质。CMM首先是作为一个“评估标准”出现的,主要评估的是美国国防部供应商保证质量的能力。CMM关注的软件生产有如下特点:(1)质量重要(2)规模较大
这是 CMM产生的原因。它引入了“全面质量管理”的思想,尤其侧重了“全面质量管理”中的“过程方法”,并且引入了“统计过程控制”的方法。可以说这两个思想是CMM背后的基础。
上面这些内容形成了我对软件过程地位、价值的基本理解;在这个基础上我们可以引申讨论 SQA。
2.2、生产线的隐喻
如果将一个软件生产类比于一个工厂的生产。那么生产线就是过程,产品按照生产线的规定过程进行生产。 SQA的职责就是保证过程的执行,也就是保证生产线的正常执行。
抽象出管理体系模型的如下,这个模型说明了一个过程体系至少应当包含 “决策、执行、反馈”三个重要方面。
QA的职责就是确保过程的有效执行,监督项目按照过程进行项目活动;它不负责监管产品的质量,不负责向管理层提供项目的情况,不负责代表管理层进行管理,只是代表管理层来保证过程的执行。
2.3、SQA和其他工作的组合
在很多企业中,将 SQA的工作和QC、SEPG、组织级的项目管理者的工作混合在一起了,有时甚至更加注重其他方面的工作而没有做好SQA的本职工作。
根据 hjhza 的意见“中国现在基本有三种QA(按照工作重点不同来分):一是过程改进型,一是配置管理型,一是测试型”。我个人认为是因为SQA工作和其他不同工作组合在一起形成的。
下面根据本人经验对它们之间的关系进行一个说明。
2.4、QA和QC
两者基本职责
QC:检验产品的质量,保证产品符合客户的需求;是产品质量检查者;
QA:审计过程的质量,保证过程被正确执行;是过程质量审计者;
注意区别检查和审计的不同
检查:就是我们常说的找茬,是挑毛病的;
审计:来确认项目按照要求进行的证据;仔细看看CMM中各个KPA中SQA的检查采用的术语大量用到了“证实”,审计的内容主要是过程的;对照CMM看一下项目经理和高级管理者的审查内容,他们更加关注具体内容。
对照上面的管理体系模型,QC进行质量控制,向管理层反馈质量信息;QA则确保QC按照过程进行质量控制活动,按照过程将检查结果向管理层汇报。这就是QA和QC工作的关系。
在这样的分工原则下, QA只要检查项目按照过程进行了某项活动没有,产出了某个产品没有;而QC来检查产品是否符合质量要求。
如果企业原来具有 QC人员并且QA人员配备不足,可以先确定由QC兼任QA工作。但是只能是暂时的,独立的QA人员应当具备,因为QC工作也是要遵循过程要求的,也是要被审计过程的,这种混合情况,难以保证QC工作的过程质量。
2.5、QA和SEPG
两者基本职责
SEPG:制定过程,实施过程改进;
QA:确保过程被正确执行
SEPG应当提供过程上的指导,帮助项目组制定项目过程,帮助项目组进行策划;从而帮助项目组有效的工作,有效的执行过程。如果项目和QA对过程的理解发生争持,SEPG作为最终仲裁者。为了进行有效过程改进,SEPG必须分析项目的数据。
QA本也要进行过程规范,那么所有QA中最有经验、最有能力的QA可以参加SEPG,但是要注意这两者的区别。
如果企业的 SEPG人员具有较为深厚的开发背景,可以兼任SQA工作,这样利于过程的不断改进;但是由于立法、执法集于一身也容易造成SQA过于强势,影响项目的独立性。
管理过程比较成熟的企业,因为企业的文化和管理机制已经健全, SQA职责范围的工作较少,往往只是针对具体项目制定明确重点的SQA计划,这样SQA的审计工作会大大减少,从而可以同时审计较多项目。
另一方面,由于分工的细致化,管理体系的复杂化,往往需要专职的 SEPG人员,这些人员要求了解企业的所有管理过程和运作情况,在这个基础上才能统筹全局的进行过程改进,这时了解全局的SQA人员就是专职SEPG的主要人选;这些SQA人员将逐渐的转化为SEPG人员,并且更加了解管理知识,而SQA工作渐渐成为他们的兼职工作。
这种情况在许多 CMM5企业比较多见,往往有时看不见SQA人员在项目组出现或者很少出现,这种SEPG和SQA的融合特别有利于组织的过程改进工作。SEPG确定过程改进内容,SQA计划重点反映这些改进内容,从保证有效的改进,特别有利于达到CMM5的要求。从这个角度,国外的SQA人员为什么高薪就不难理解了,也决定了当前中国SQA人员比较被轻视的原因;因为管理过程还不完善,我们的SQA人员还没有产生这么大的价值嘛!
2.6、QA和组织级的监督管理
有的企业为了更好的监督管理项目,建立了一个角色,我取名为 “组织级的监督管理者”,他们的职责是对所有项目进行统一的跟踪、监督、适当的管理,来保证管理层对所有项目的可视性、可管理性。
为了有效管理项目, “组织级的监督管理者”必须分析项目的数据。
他们的职责对照上图的模型,就是执行 “反馈”职能。
QA本身不进行反馈工作,最多对过程执行情况的信息进行反馈。
SQA职责最好不要和“组织级的项目管理者”的职责混合在一起,否则容易出现SAQ困境:一方面SQA不能准确定位自己的工作,另一方面过程执行者对SQA人员抱有较大戒心。
如果建立了较好的管理过程,那么就会增强项目的可视性,从而保证企业对所有项目的较好管理;而 QA来确保这个管理过程的运行。
三、SQA的工作内容和工作方法
3.1、 计划
针对具体项目制定 SQA计划,确保项目组正确执行过程。制定SQA计划应当注意如下几点:
有重点:依据企业目标以及项目情况确定审计的重点
明确审计内容:明确审计哪些活动,那些产品
明确审计方式:确定怎样进行审计
明确审计结果报告的规则:审计的结果报告给谁
3.2、审计/证实
依据 SQA计划进行SQA审计工作,按照规则发布审计结果报告。
注意审计一定要有项目组人员陪同,不能搞突然袭击。双方要开诚布公,坦诚相对。
审计的内容:是否按照过程要求执行了相应活动,是否按照过程要求产生了相应产品。
3.3、问题跟踪
对审计中发现的问题,要求项目组改进,并跟进直到解决。
四、SQA的素质
过程为中心:应当站在过程的角度来考虑问题,只要保证了过程, QA就尽到了责任。
服务精神:为项目组服务,帮助项目组确保正确执行过程
了解过程:深刻了解企业的工程,并具有一定的过程管理理论知识
了解开发:对开发工作的基本情况了解,能够理解项目的活动
沟通技巧:善于沟通,能够营造良好的气氛,避免审计活动成为一种找茬活动。
QA活动的理解与实施
摘要:QA活动是CMMI实施中较难贯彻的过程。本文针对目前国内的QA过程实施情况,从QA的地位、原则、活动、实施等方面进行了阐述。同时讨论了QA与QC、测试之间的关系,以及实施QA活动的最佳实践,为组织实施过程改进提供了基础。
1 概述
在使用CMMI模型实施过程改进时,需建立QA(Quality Assurance)的组织职能和角色,并实施“过程和产品质量保证”活动。这些活动目的在于使项目工作人员和所有各层管理者能适当地了解整个项目生存周期中工作产品和过程的情况,从而支持交付高质量的产品和服务。
由于CMMI模型是建立在西方的企业文化背景下,包含有三权分立的思想,所以对于国内IT及软件企业而言,如何理解和建立QA机制,更好地利用CMMI模型进行过程改进就显得非常重要。但是,目前国内IT及软件企业对于QA的意义和认识存在误区,导致在实施过程改进活动中,QA活动流于形式或没有发挥出其真正作用。到底QA在组织中应扮演什么样的角色,CMMI的QA的与ISO9000的QA或QC(Quality Control)概念有何区别,QA与测试是什么关系,如何实施QA活动,等等,本文针对这些进行阐述,以解决企业CMMI实施过程中的薄弱环节。
2 QA的地位及活动
2.1 QA的地位
图1显示了在CMMI实施过程中QA所处的地位。
图1 QA的组织结构
QA活动的目标是以独立审查方式,从第三方的角度监控软件开发任务的执行,就项目是否正遵循已制定的计划、标准和规程给开发人员和管理层提供反映产品和过程质量的信息和数据,提高项目透明度,同时辅助软件工程组交付高质量的软件产品。所以对过程和产品质量保证的客观评价是项目成功的关键,一般是通过独立于项目的QA小组来提供这种客观性。每个从事QA活动的人都要进行质量保证方面的培训。从事某个产品的QA活动的那些人不应该是直接介入该工作产品开发或维护的人。同时,应该有一条向适当的管理层独立报告问题的渠道,以便在必要时逐级上报不符合问题。
不过,在某些组织里,不要求这种独立性而实现过程和产品质量保证角色可能更合适。例如,在一个具有开放的、面向质量的文化环境的组织里,可以由同行担任(部分或全部)过程和产品质量保证角色,可以把质量保证功能镶嵌在过程中。
QA应具备以下职责:
通过监控开发过程来保证工作产品质量
保证开发出来的产品和开发过程符合相应标准与规程;
保证产品、过程中存在的不符合问题得到处理,必要时将问题反映给高级管理者
确保项目组制定的计划、标准和规程适合项目组需要,同时满足评审需要
向开发人员提供反馈
2.2 QA的活动
QA的工作内容为:
1) 客观评价过程和工作产品:对于所实施的过程和相关工作产品以及服务对适用的过程描述、标准和规程的遵循情况进行客观评价。
2) 提供客观情况:客观地跟踪和通报不符合问题,并且确保解决它们。 因此,QA的活动步骤如图2所示。 图2 QA的活动步骤
由上可知,QA涉及以下活动:
对照适用的过程描述、标准和规程客观地评价所执行的过程、工作产品和服务;
识别不符合问题,并形成文件:
向项目工作人员和管理者反馈质量保证活动情况;
确保不符合问题得到处理。
3 QA与QC、测试之间的关系
3.1 QA和QC
QA和QC区别在于:
QC:检验产品的质量,保证产品符合客户的需求;是产品质量检查者;
QA:评审过程和产品的质量,特别要保证过程被正确执行,通过保证过程质量来保证产品质量 。
由上面的区别可知,QC进行质量控制,向管理层反馈质量信息;QA则确保QC和过程实施者按照过程进行质量控制活动,按照过程将检查结果向管理层汇报。软件开发过程和的QC工作通常就是对软件工作产品的技术评审(如同行评审等)。
在这样的原则下,简单而言QA只要检查项目按照过程进行了某项活动没有,产出了某个产品没有;而QC来检查产品是否符合质量要求。
3.2 QA与测试
下图显示了一个企业的开发过程、支持过程的关系。
从现代软件工程的观点来看,测试应是软件生命周期过程的一个不可缺少的阶段,是确保规定的需求得以满足,上图的流程模型体现了这一点。而QA活动则是贯穿于整个软件生命周期过程及其支持过程,包括培训、采购等活动,以确保所策划的过程得以实施。QA活动和测试过程可能同时关注同一个产品,但是关注的角度不同。
应该在项目的早期阶段开始QA过程,以便确定有益于项目的计划、过程、标准和规程并且满足项目需求和组织方针。从事质量保证的人要参加计划、过程、标准和规程的确定,以确保它们适合于项目的需要和适合于进行质量保证评价。
4 实施QA活动的方法
4.1 QA的工作流程
图4描述了QA的一般工作流程。 图4 QA的工作流程
应指定在生存周期中将进行评价的特定过程和产品。可以根据抽样方式或客观准则进行指定;这些准则要与组织的方针和项目需求以及需要一致。
识别出不符合问题后,首先是在项目内部处理,如果可能,就地加以解决。任何不能在项目组内部解决的不符合问题,要逐级上报适当的管理者予以解决。
在过程中,QA一般比较注重的是过程是否符合规范?测试是否合理、充分?评审是否及时、有效等,这些是重要的“检验”过程,可以列为重点。过程是否符合规范,一般要看过程有没有计划,计划详细与否,可行与否,工作量评估是否可行(主要是检查评估方法)?日常管理是否可行?配置管理是否可行?过程遵循那些标准?实施什么样的裁减,等等。
在整个QA过程的评审活动中,QA需要具备一定的数据意识,要不断的收集各种数据,尤其是质量数据。最好具备一定的项目管理经验,要不然,只能是一种边缘参与,是进入不了项目的。QA最好能帮助PM将问题分析清楚。PM会思考要将问题做成什么样子,而QA可以思考如何去做,这样就可以达到一种配合的效果。
其次还要注意一点,就是QA以什么心态去监控项目组,我们公司提出的是“质量服务”,也就是说,项目组是我们的客户,我们是为他们提供质量服务的。
4.2 最佳实践
实施QA活动的最佳实践应该根据不同的企业情况而不同,但以下几条是实施过程改进活动中总结出来的,具有一般意义。
1) QA人员要求
服务精神:QA应定位为教练、服务的角色,而不是警察的角色。
了解过程:熟悉过程规范。
了解开发:如果QA有过开发经验,则可更好地实施评审活动。
沟通技巧:通过好的沟通技巧发现问题,解决问题。
专门培训:QA人员最好经过专门的培训,以提高评审技巧。
2) 制定QA计划
计划中可能包含以下内容:
质量目标(与度量的数据相关联)
人员安排
时间
检查工具(检查表)
检查对象(活动和产品)
检查点及频次
3) 编制检查表
检查表是QA人员进行评审活动的工具。编制检查表时应考虑以下问题:
何时需要检查表
检查表包括什么内容
如何使用检查表
如何调整检查表
4) 形成QA报告
QA应对检查的结果形成报告,以便跟踪、解决、关闭所发现的问题。形成QA报告时应考虑:
报告目的
报告内容
问题沟通
问题跟踪
问题上报
5) 几个参见问题
QA价值开始不被项目组认可
一个全职的QA可以同时兼任多少个项目的QA工作
QA与项目组的关系难处理
项目组有了QA,可是需求文档和设计文档的质量还是不高
5 结束语
总之,QA活动对于过程改进具有重要的意义,这是由人治到法治的一个必经阶段。所以,只要国内IT及软件企业能够认真贯彻CMMI模型规范的要求,持之以恒,随时解决实施中发现的问题,就会体会到QA活动的巨大效益。