软件质量工程师的
工作原则及软件质量保证实施准则
随着科学技术的不断发展进步,企业之间的竞争越来越激烈。软件企业要想在竞争中发展生存,提高软件产品质量已成为必要条件。在一些高能力成熟度软件企业中,专门成立了质量保证和控制职能部门,起着提高项目管理透明性和确保软件产品质量的双重作用。
软件质量工程师是隶属于质量监控部门的工程师,他们独立于项目对质量保证经理负责,以独立审查的方式监控软件生产任务的执行,给开发人员和管理层提供反映产品质量的信息和数据,辅助软件工程组得到高质量的软件产品。每位软件质量工程师可以同时介入多个项目。
软件质量工程师的工作原则是”用过程质量确保产品质量“。软件质量工程师在软件生存期的各个阶段起着不同的作用,是软件项目开发过程中不可或缺的重要成员。
软件质量工程师的职责分为组织相关的职责和项目相关的职责。
一、组织相关的职责
1)与客户及时沟通,确保客户满意
软件质量工程师应当担当”客户代表”的角色,及时与客户进行沟通,了解客户对产品质量、开发进度、开发费用等方面的需求。定期进行客户满意度调查,对客户反馈信息进行分析,为项目管理提供分析结果,及时根据客户需求协助项目经理调整项目开发计划。
2)内部评审
软件质量工程师参与项目的内部评审活动,其职责包括确定评审员,为评审组织确定评审内容,确保评审按既定的过程执行,并向管理团队通报评审结果。
3)审计
软件质量工程师参与改进并跟踪现有审计制度以适应项目和产品解决方案发展的需要。软件质量工程师相互协作以确保不断地改进现有的审计内容和审计制度,提高管理的透明性。
4)度量
其职责主要是进行量化过程管理,包括完善和执行统计过程控制,贯彻执行度量标准,通过数据采集和分析完善度量基准。
二、项目相关的职责
1)为相关项目提供过程管理和质量保证咨询
软件质量工程师参加项目启动会议,为制定项目开发计划提供相关历史数据。为项目开发人员提供质量保证相关知识的咨询。
2)帮助项目建立切实可行的质量保证目标,选择适当的质量保证基准
软件质量工程师根据客户需求、企业内部质量审查标准、行业标准,按照项目类别建立项目质量保证目标,与项目成员一起讨论并进行必要的修改。明确度量标准和数据收集方法,在项目实施过程中根据建立的目标对项目进行实时监控。
3)制定项目质量保证计划
软件质量工程师根据项目类别、质量保证目标、项目开发进度制定相应的质量保证计划。
4)项目审查
软件质量工程师应当参与必要的项目审查。审查内容包括:
- 产品需求说明书
- 软件项目开发计划
- 测试计划
- 测试总结报告
5)数据收集和分析
软件质量工程师负责按软件质量保证计划收集与项目相关的数据,通过对数据进行分析,及时将与质量相关的反馈和建议汇报给项目负责人和高级主管。项目负责人根据反馈数据调整项目开发计划。
6)项目审计
软件质量工程师负责鉴别项目开发中与项目质量保证计划中规定的标准和过程不相符的内容,当这些内容与计划偏离比较多,以至于可能影响到项目的及时高质量完成时,可以考虑召开项目审计会议。
软件质量工程师负责会议的计划、主持,确保审计所有偏离内容,并汇报审计结果。
7)系统测试
软件质量工程师可以介入系统测试,确保软件产品符合质量要求,满足客户需求。软件质量工程师帮助系统测试工程师收集数据,将数据分析结果反馈给项目负责人、系统测试工程师和项目组其他成员。
8)错误预防
软件质量工程师负责提供历史和当前数据,帮助项目了解项目所处状态、进度和存在的弱点。所有的错误预防工作都应由项目负责人计划并跟踪,软件质量工程师负责监督。
三、软件质量保证实施准则
软件企业要从中小规模走向成熟,就需要通过CMMI认证标准的锤炼,这是软件企业逐渐达成的共识。目前,我国大多数软件企业还都属于中小规模,其软件开发团队通常由几人至数十人组成。在这样的企业如何做好软件质量保证工作,笔者根据自己在某大型软件的工作经验谈一些看法。
- 确立工作目标
SQA(Software Quality Assurance,软件质量保证)是CMMI的一个关键过程域,CMMI的每个关键过程域几乎都涉及软件质量的验证,它在软件开发过程中起着非常重要的作用。在CMMI中,软件质量保证的目标是为管理者提供当前软件项目进行过程与最终产品的可视性。它的主要工作包括:评审软件工程活动、审计软件产品、将结果通知项目组成员及相关经理。从CMMI的框架结构来看,软件质量保证人员的主要工作目标是保证软件过程质量。软件最终产品的质量则是项目经理与质量工程师关心的问题,而不是由软件质量保证人员负责。
软件质量保证的价值依赖于一些前提,其中最重要的是以下两个:
- 首先,软件项目开发过程遵循明确定义好的既定规则,由此所获得的利益远大于为它所付出的代价。先有稳定、明确的用户需求再进行开发,虽然进度可能有所延迟,但与开发后发现不是用户所需要的产品相比,这个代价要小得多。
- 其次,在没有独立评价系统的情况下,人们有时候会偏离既定的规则。软件开发人员由于各种各样的原因,总是自觉或不自觉地忽视过程,这时就需要软件质量保证人员来发现问题。
- 确保人员的独立性
好的过程质量并不等于好的产品质量,但是糟糕的过程很难带来好的产品质量。如果一个项目按照既定的过程完成开发工作,没有偏离,说明软件质量保证人员尽到了他的职责。
为了较好地开展软件质量保证工作,软件质量保证人员应该是独立的,与项目经理没有任何行政隶属关系,对他的考核与评价也不应由项目经理做出,同时他也不能承担本项目中除软件质量保证外的其他任何工作,以确保其独立性。
建议在企业中将软件质量保证机构设立成专门的独立机构。如果企业规模较小,可以由测试人员兼任。在某些企业中,测试人员从属于项目组,此时,软件质量保证人员应该由其他项目组的测试人员担任。
- 标准的客观性
软件质量保证的目的是给管理者提供可视性。如果存在主观因素,管理者看到的就不是软件开发过程的真实情况,这一点对软件质量保证工作至关重要。例如,联想公司的软件产品是通过“质量保证检查表”来实现的。针对每个软件工程活动与软件工作产品,都有一个软件质量保证检查表。软件质量保证人员可以根据检查表来判断当前的软件工程活动是否存在偏离以及软件工作产品是否符合要求。软件工程活动是否有所偏离,主要看软件工程活动的进入准则是否达到、输入是否正确、执行任务是否符合要求、结束时是否符合完成准则以及是否具有合乎要求的输出。在审计软件工作产品时,软件质量保证人员主要审计软件产品是否符合规程、标准等要求,一般不考虑技术问题。
所有软件开发人员都应当接受软件质量保证方面的定向培训,了解软件质量保证的目的、工作方式以及其他相关内容。只有所有的人都认识到软件质量保证工作的意义,这项工作才能很好地开展起来。
- 软件质量管理的几个误区
误区之一:软件质量保证人员对软件产品质量负责。
软件质量保证人员一般只对软件过程质量负责,如果一个项目按照既定的过程完成了开发工作,没有发生偏离,软件质量保证人员就算尽到了职责,他的价值主要体现在过程质量上而不是最终的软件产品质量上。
误区之二:软件质量保证人员对软件工作产品的审计包括发现其中的技术问题。
软件质量保证人员对软件工作产品的审计主要是针对过程,例如是否采用过程所规定的模板,所有必要的内容是否都具备等,而不是关注技术问题。
误区之三:软件质量保证人员要负责解决所发现的质量问题。
软件质量保证的最大作用是发现问题,提供可视性,而不是解决问题。软件质量保证人员发现问题后,必须提交到相关责任人那里,由相关责任人给出解决方法并予以解决。软件质量保证人员只是跟踪问题直至得到解决。如果在相关责任人处无法得到解决,则将问题提交给项目经理。如果仍然无法解决,则提交给高层经理。这样一层层提交,直到问题有了结论。至于最终的结论是解决问题还是暂时搁置问题,由做出决策的人员对此负责。如果要求软件质量保证人员负责解决质量问题,他就可能陷入其中,失去了软件质量保证人员最为宝贵的独立性与客观性。
误区之四:软件质量保证人员是专门监督项目组成员的。
软件质量保证人员不是监督项目组成员的,他只是从第三方、客观的角度将项目组的情况反映给管理者,让管理者了解项目与规定过程之间存在的偏差。如果软件质量保证人员将自己放到项目组的对立面,专门去找项目组的毛病,那么项目组成员就可能将真实问题隐藏起来,使问题无法得到解决。软件质量保证人员对项目组是有帮助作用的,他要帮助项目组提高开发和管理活动的规范化、标准化,发现问题时,要首先在项目组内解决。
总之,要在企业内开展软件质量保证工作,最重要的是让所有员工都认识到,质量不是依赖于某个或某几个高手,而是依赖于整个过程。好的过程是好产品的必备条件,这一点要成为企业文化的一部分,深深扎根于每个员工的心中。


