ccidnet????

出版日期:2004-05-17 总期号:1313 本年期号:34

本期导读
要闻综合
中国信息化
网络与通信
软件与服务
产品与应用
渠道与市场
华东专刊
华南专刊
西北专刊
东北专刊
西南专刊
SQA
正确把握自己的职责
刘文威


  当CMM之风吹遍神州大地之时,一大堆与CMM配套的角色随之诞生了,其中就有SQA(软件质量保证)和SCM(软件配置管理)。

  然而,大多数软件公司为了达到CMM的标准,在形式上设了这些职位,但在实际项目开发过程中,SQA却难以把握这一角色,发挥应有的作用。所以,在中国的软件开发行业,经常会听到这样一种说法:“在中国做不了编程的人去做测试,做不了测试的人去做SQA。”这句话虽然有点片面,但也从侧面反映了SQA的作用并没有得到大家的认同。

  SQA(Software Quality Assurance,软件质量保证)的目的,是为管理人员提供软件项目所用流程和正在构建的产品的可见度。

  软件质量保证涉及审查和核实软件工作产品及其活动,验证它们与项目采用的过程与标准的一致性,软件质量保证是为了确保对项目进行客观、公正的审查。其基本任务就是:SQA人员在参与制定软件开发计划的同时,制定该项目的质量保证计划;制定完毕后由公司高层经理和软件项目经理评审;SQA人员根据计划进行质量保证活动;当软件开发计划发生变更时,质量保证计划作相应的变更;SQA人员在对软件项目进行验证后,填写检查报告,及时通报给软件项目经理,如果问题得不到解决,再将报告提交给上级管理部门,并跟踪解决问题。

  在CMM标准中,SQA人员的职责描述是非常简明扼要的,参照这些简单的指导性说明,很多SQA人员在实际的软件项目开发过程中,难以把握质量保证的活动要点,实施的效果也就大打折扣。如何在SQA的岗位上发挥自己的作用并得到项目组成员的认同,这是摆在SQA人员面前的一道难题。

  根据本人从事质量保证的多年经验,SQA必须对自己的活动、实施方法和心态有正确的认识,这样才不至于在工作中感觉毫无头绪。


  SQA的责任


  参考一些软件质量保证方面的经验,我们可以总结出,实际软件项目开发中,质量保证活动可以包括以下内容:

  需求阶段:参与评审项目需求,确保内部评审排除了二义性和不明确的需求,确定了需求的可测试性和对需求的跟踪方法,并参与用户对需求文档的正式评审活动。

  分析设计阶段:评审软件设计以及分配给各个系统的需求,召集同行评审,跟踪问题的解决,并参与用户对设计的正式评审活动。

  编码实施阶段:根据编码标准评审代码(抽查方式),组织对关键模块代码的同行评审活动,监督单元测试(抽查或交叉测试)的执行情况,并跟踪问题的解决。

  测试阶段:评审测试步骤,查看需求和功能的覆盖程度,确保SCM对测试结果、测试记录、准备情况、针对测试问题的纠正措施、问题结束等记录。

  部署阶段(交付使用):评审交付客户的文档,跟踪关键度量(项目问题与解决状态、需求跟踪结果、缺陷与修复率、纠正措施等),并定期维护项目数据库。

  在以上各个阶段中,SQA根据检查结果生成审计报告,说明其中的强项和弱项。SQA将审计报告提交给项目经理之后,与项目组成员一同讨论,如何改进并调整相关计划和步骤,以达到项目改进的目的。

  SQA人员不仅要清楚地知道自己在每个KPA中的职责与活动,而且要知道项目组中各个角色的工作流程和规范,要知道每一种软件工作产品的质量标准,才能提高自身的工作效率。只有熟练掌握这些内容,在项目组成员对执行情况有异议时,才能够据理力争。


  SQA的方法


  尽管当SQA熟练掌握其活动,也未必能在工作中得心应手——在实际的软件项目开发过程中,SQA人员的活动涉及方方面面,职责更广泛,难度更高,所以掌握一些必要的工作方法是SQA顺利开展工作,减少在实施过程中难度的一个重要因素。

  首先,在项目组开展下一个活动之前,SQA人员要先和项目组成员特别是项目经理进行交流,确认项目组成员的活动符合CMM的标准,如果不符合,就要耐心协调和指导项目组成员如何去完成才更好,力求符合已定义的规范。这要求SQA人员要有一定的耐心。我们公司提出的是“质量服务”,也就是说,项目组是我们的客户,我们是为他们提供质量服务的。

  其次,SQA人员发现问题后,应及时和项目经理进行沟通,争取对这些问题达成共识,不要轻易上报,否则很容易引起抵触情绪。有时候,当SQA人员针对某些问题提出改进建议后,项目经理出于进度的压力或其他原因,并不引起重视甚至不采取任何措施,这是很正常的现象。SQA人员也不要立即上报,否则更加不利于问题的解决。

  这时候,SQA人员要理解项目经理,为他们提供更为方便的服务,尽量减少他们的工作量。例如,提供其他项目的同类文档以供参考,协助或引导项目经理共同完成文档工作,将模板进一步细化,使其更清晰易懂。一般情况下,项目经理在这样的引导下还是会尽量去改进的,除非极端情况下,才向高层管理人员汇报。

  另外,SQA人员最好具备一定的项目管理经验,要不然,只能是一种边缘参与,是进入不了项目的。最好能帮助项目经理将问题分析清楚。项目经理会思考要将问题做成什么样子,而SQA可以思考如何去做,这样就可以达到一种配合的效果。


  SQA的心态


  SQA的主要任务是项目审计,是“间谍”,所处的地位很微妙,也很尴尬:开展项目前,组织非常希望有一个耳目来监控项目的开发情况,项目组也希望有一个角色协助使开发和管理更加规范有序。项目启动后,SQA人员真正负担起项目的质量保证工作时,可能又是另一种局面:不管你对项目开发管理有多大帮助,只要你打了项目组的“小报告”,受到项目组成员排挤是很正常的事。对于组织而言,报告的不符合、建议多了,高层会嫌你罗嗦;漏报了,又会说你不够尽职尽责,两头不讨好。当你看到一堆问题时只能干着急,却没有权力去纠正,所能做的只是报告、建议、协调。而且向管理层报告了,也不一定马上处理。

  做SQA一定要有良好的心态,看到的,要报。说了,有人不服,可以讨论,也可以据理力争。但是,不要闹情绪,不要因为组织存在太多的问题、建议没有被采纳而灰心,因为这些问题正是需要你去发现、去建议、去跟踪改进的。也不要和项目组、高层管理人员发生顶撞,那不是SQA的存在目的,意气用事只能导致相反的结果。

  SQA是一个服务者,要得到上司和同事的肯定,就要做一些真正有价值的事情。比如协助完成一些测试、配置管理的工作,引进实用的新工具,改进一下开发环境和工作过程,甚至可以帮助项目经理汇总一下文档、总结实施经验、协助客户培训……。其实,就SQA工作而言,也有很多可以深入的地方,比如项目计划是否符合实际,分工是否合理,任务是否可以进一步优化,软件工作产品的评审是否有效,测试方法与过程是否可以改进,数据的来源是否真实,哪些活动数据可以作为度量数据收集……

  因此,作为一名SQA人员,不仅要熟练掌握业务知识,还要具有一定的技巧,只有灵活运用CMM的标准,才能将CMM标准贯彻落实到软件项目中去,从而逐步提高软件过程的成熟度。

  最后,给所有SQA人员或即将成为SQA的人员一个小小建议:在进行质量保证活动的同时,每天计划自己当天应完成的任务,记录自己的工作量和问题,并及时跟踪工作记录,在每周/月/里程碑时进行统计分析,不仅有助于获取SQA活动的经验值,并对个人能力的提高帮助极大。

  作为一名SQA人员,要正确把握自己的职责,熟练掌握业务知识,并且要有一定的业务技巧,灵活运用CMM的标准,才能将CMM标准贯彻落实到软件项目中去,从而逐步提高软件过程的成熟度。在软件项目组所有成员按照CMM标准完成一两个项目之后,对这种工作流程和标准会比较熟悉,而且执行之后的优越性会逐渐体现出来,SQA人员的工作会慢慢变得轻松一些。 (D5)

  SQA(Software Quality Assurance),软件质量保证,其目的是为管理人员提供软件项目所用流程和正在构建的产品的可见度。