如何实施SQA
SQA(软件质量保证)是CMM2级中的一个重要关键过程区域,它是贯穿于整个软件过程的第三方独立审查活动,在CMM的过程中充当重要角色。SQA的目的是向管理者提供对软件过程进行全面监控的手段,包括评审和审计软件产品和活动,验证它们是否符合相应的规程和标准,同时给项目管理者提供这些评审和审计的结果。因此,满足SQA是达到CMM2级要求的重要步骤之一。
背景
对任何制造业企业来说,质量保证活动都是必不可少的。第一个正式的质量保证和控制职能部门于1916年在贝尔实验室出现,此后迅速风靡整个制造业。软件的质量标准首先出现在20世纪70年代军方的软件开发合同中,此后得到了广泛的应用。在软件越来越普及的今天,"软件质量保证"更成为软件开发企业和最终用户所关心的问题。
实践证明,软件质量保证活动在提高软件质量方面卓有成效。IBM360/370系统软件的开发经验证明了这一点,IBM的有关报告指出,在8年的时间里,软件质量提高了3~5倍,而SQA是其质量体系中的一个重要组成部分。
目标
SQA组织并不负责生产高质量的软件产品和制定质量计划,这些都是软件开发人员的工作。SQA组织的责任是审计软件经理和软件工程组的质量活动并鉴别活动中出现的偏差。
软件质量保证的目标是以独立审查的方式监控软件生产任务的执行,给开发人员和管理层提供反映产品质量的信息和数据,辅助软件工程组得到高质量的软件产品,其主要工作包括以下三个方面:
通过监控软件的开发过程来保证产品的质量;保证生产出的软件和软件开发过程符合相应的标准与规程;保证软件产品、软件过程中存在的不符合问题得到处理,必要时将问题反映给高级管理者。
从软件质量保证的目标中可以看出,SQA人员的工作与软件开发工作是紧密结合的,需要与项目人员沟通。因此SQA人员与项目人员的合作态度是完成软件质量保证目标的关键,如果合作态度是敌意的或者是挑剔的,则软件质量保证的目标就难以顺利实现。
任务
软件质量保证的主要作用是给管理者提供实现软件过程的保证,因此SQA组织要保证如下内容的实现:
选定的开发方法被采用;选定的标准和规程得到采用和遵循;进行独立的审查;偏离标准和规程的问题得到及时的反映和处理;项目定义的每个软件任务得到实际的执行。
相应地,软件质量保证的主要任务有以下方面:
SQA审计与评审
其中,SQA审计包括对软件工作产品、软件工具和设备的审计,评价这几项内容是否符合组织规定的标准。SQA评审的主要任务是保证软件工程组的活动与预定义的软件过程一致,确保软件过程在软件产品的生产中得到遵循。
SQA报告
SQA人员应记录工作的结果,并写入到报告之中,发布给相关的人员。SQA报告的发布应遵循3条基本原则:SQA和高级管理者之间应有直接沟通的渠道、SQA报告必须发布给软件工程组但不必发布给项目管理人员、在可能的情况下向关心软件质量的人发布SQA报告。
处理不符合问题
这是SQA的一个重要的任务,SQA人员要对工作过程中发现的不符合问题进行处理,及时向有关人员及高级管理者反映。在处理问题的过程中要遵循两个原则:其一,对符合标准过程的活动,SQA人员应该积极地报告活动的进展情况以及这些活动在符合标准方面的效果;其二,对不符合标准过程的活动,SQA要报告其不符合性以及它对产品的影响,同时提出改进建议。
实施
软件质量保证任务的实现需要考虑几方面的问题。首先,要考虑SQA人员的素质。SQA人员的责任是审查软件设计、开发人员的活动,验证他们是否将选定的标准、方法和规程应用到活动中去,因此,SQA工作的有效执行需要SQA人员掌握专业的技术,例如质量控制知识、统计学知识等。其次,SQA人员的经验对任务的实现同样重要。应该选择那些经验丰富的人来做SQA,同时为SQA人员进行专门的培训,以使他们能够胜任这项工作。第三,组织应当建立文档化的开发标准和规程,使SQA人员在工作时有一个依据、判断的标准,如果没有这些标准,SQA人员就无法准确地判断开发活动中的问题,容易引发不必要的争论。第四,高级管理者必须重视软件质量保证活动。在一些组织的软件生产过程中,高级管理者不重视软件质量保证活动,对SQA人员发现的问题不及时处理。如此一来,软件质量保证就流于形式,很难发挥它应有的作用。第五,SQA人员在工作过程中一定要抓住问题的重点与本质,不要陷入对细节的争论之中。SQA人员应集中审查定义的软件过程是否得到了实现,及时纠正那些疏漏或执行得不完全的步骤,以此来保证软件产品的质量。
此外,做好软件质量保证工作还应该有一个计划,用以规定软件质量保证活动的目标,执行审查所参照的标准和处理的方式。对于一般性项目,可采用通用的软件质量保证计划,而对于那些有着特殊质量要求的项目,则必须根据项目自身的特点制定专门的计划。
总之,软件质量保证是软件过程中的独立审查活动,它从一个侧面反映了现行软件过程能力的成熟度水平。软件质量保证活动是贯穿整个软件过程的,那种到编码之后才开始关心质量的做法是极其错误的。 如何实施软件质量保证
时间: 2006-10-17来自:51CTO.com整理
软件质量保证(即SQA——Software Quality Assurance),是CMM2级中的一个关键过程域,它是贯穿整个软件过程的第三方独立审查活动,出现在大多数关键过程域的检查与验证的公共特性中,在整个软件开发过程中充当重要角色。
从CMM2级中包含的6个关键过程域来看,无论是需求管理、软件项目计划、软件项目跟踪与监控,还是软件子合同管理、软件配置管理,都不同程度地存在于我们现在正在进行的软件项目开发过程中,对于它们的了解我们已经不再陌生,只有SQA这个关键过程域,是在我们准备以CMM2级要求的关键过程域为基础进行软件过程改进前未接触过的。
在很多软件企业中还没有与之相对应的人员和工作方法,整套关注软件开发过程的软件质量保证体系还没有建立起来。所以,在企业以CMM2级关键过程域为参考进行软件过程改进时,SQA往往是一个难点,直接涉及到组织结构的变化。
实施SQA的目的
软件质量保证的目标是以独立审查方式,从第三方的角度监控软件开发任务的执行,就软件项目是否正遵循已制定的计划、标准和规程给开发人员和管理层提供反映产品和过程质量的信息和数据,提高项目透明度,同时辅助软件工程组取得高质量的软件产品。主要包括以下四个方面:
● 通过监控软件开发过程来保证产品质量;
● 保证开发出来的软件和软件开发过程符合相应标准与规程;
● 保证软件产品、软件过程中存在的不符合问题得到处理,必要时将问题反映给高级管理者;
● 确保项目组制定的计划、标准和规程适合项目组需要,同时满足评审和审计需要;
除了以上四点之外,我们还希望SQA能作为软件工程过程小组(SEPG)在项目组中的延伸,能够收集项目中好的实施方法和发现实施不利的原因,为修改企业内部软件开发整体规范提供依据,为其他项目组的开发过程实施提供先进方法和样例。
对SQA人员的素质要求
1. SQA人员(有时简称SQA)要有很强的沟通能力。从实施SQA的目的中可以看出,SQA不在项目中,是独立于软件项目的第三方,但他要了解项目的开发过程和进度,捕捉到项目中不符合要求的问题,这就要求SQA能够深入项目,和软件开发经理以及项目组中的开发人员保持很好的沟通,这样才能及时获得真实的项目情况。
2. SQA要熟悉软件开发过程。作为SQA,既然要确保项目组制定的计划、标准和规程,要符合项目组要求,那么SQA首先自己就要了解软件项目开发过程,以及企业内部已经有的开发过程规范。
3. SQA本身要有很强的计划性。SQA一方面要监督软件项目组编写计划,另一方面SQA自身的工作也要有计划,并且能够按照计划开展工作。
4. SQA要能应对繁杂的工作。作为SQA,在跟踪项目进行过程的时候要对项目组的很多工作产品进行审计,而且会参与项目组中的多种活动。同时一个SQA还有可能会面对多个项目组,所以任务相对繁杂细碎,这就要求SQA在处理这些事物的时候要耐心细致。
5. SQA要客观,有责任心。作为第三方对项目过程进行监督,SQA要能保持自己的客观性,不能一味讨好项目经理,也不能成为项目组中的宪兵,否则会影响工作的开展。对于项目组中多次协调解决不了的问题,能够向项目的高层经理进言,完成SQA的使命。
以上五点是作为SQA应该具备的基本素质,除此之外,一个好的SQA还应该在软件开发过程中作为开发人员或测试人员参与过一个或多个环节,这样他们才能在过程监督中比较准确地抓住重点,同时他们的意见和提出的解决办法也会更贴近项目组,容易被项目组接受。
SQA人员的组成
软件企业中的SQA人员既可以由全职人员担任,也可以由企业内具有相关素质、经过SQA培训的人员兼职担任。由此组成的SQA小组可能是一个真正的物理上存在的独立部门,也可以是一个逻辑上存在的平台。但不管是真正的独立部门还是逻辑上的平台,它都需要有一个灵魂人物——SQA小组组长,来组织SQA小组的日常活动。
在给一个项目组分配负责监督其项目过程的SQA时,一定要注意一点:就是该项目的SQA不能是该项目组的开发人员、配置管理人员或测试人员,一个项目的SQA除了监控项目过程,完成SQA相关工作以外,不应该参与项目组的其他实质性工作,否则他会与项目组捆绑在一起,很难保持客观性。
SQA工作的内容
SQA的工作内容主要包括以下六类:
1. 与SQA计划直接相关的工作:SQA在项目早期要根据项目计划制定与其对应的SQA计划,定义出各阶段的检查重点,标识出检查、审计的工作产品对象,以及在每个阶段SQA的输出产品。定义越详细,对于SQA今后的工作的指导性就会越强,同时也便于软件项目经理和SQA组长对其工作的监督。编写完SQA计划后要组织SQA计划的评审,并形成评审报告,把通过评审的SQA计划发送给软件项目经理、项目开发人员和所有相关人员。
2. 参与项目的阶段性评审和审计:在SQA计划中通常已经根据项目计划定义了与项目阶段相应的阶段检查,包括参加项目在本阶段的评审和对其阶段产品的审计。对于阶段产品的审计通常是检查其阶段产品是否按计划按规程输出并内容完整,这里的规程包括企业内部统一的规程也包括项目组内自己定义的规程。但是SQA对于阶段产品内容的正确性一般不负责任检查,对于内容的正确性通常交由项目中的评审来完成。SQA参与评审是从保证评审过程有效性方面入手,如参与评审的人是否具备一定资格、是否规定的人员都参见了评审、评审中对被评审的对象的每个部分都进行了评审、并给出了明确的结论等等。
3. 对项目日常活动与规程的符合性进行检查: 这部分的工作内容是SQA的日常工作内容。由于SQA独立于项目组,如果只是参与阶段性的检查和审计很难及时反映项目组的工作过程,所以SQA也要在两个阶段点之间设置若干小的跟踪点,来监督项目的进行情况,以便能及时反映出项目组中存在的问题,并对其进行追踪。如果只在阶段点进行检查和审计,即便发现了问题也难免过于滞后,不符合尽早发现问题、把问题控制在最小的范围之内的整体目标。
4. 对配置管理工作的检查和审计:SQA要对项目过程中的配置管理工作是否按照项目最初制定的配置管理计划进行监督,包括配置管理人员是否定期进行该方面的工作、是否所有人得到的都是开发过程产品的有效版本。这里的过程产品包括项目过程中产生的代码和文档。
5. 跟踪问题的解决情况: 对于评审中发现的问题和项目日常工作中发现的问题,SQA要进行跟踪,直至解决。对于在项目组内可以解决的问题就在项目组内部解决,对于在项目组内部无法解决的问题,或是在项目组中跟催多次也没有得到解决的问题,可以利用其独立汇报的渠道报告给高层经理。
6. 收集新方法,提供过程改进的依据:此类工作很难具体定义在SQA的计划当中,但是SQA有机会直接接触很多项目组,对于项目组在开发管理过程中的优点和缺点都能准确的获得第一手资料。他们有机会了解项目组中管理好的地方是如何做的,采用了什么有效的方法,在SQA小组的活动中与其他SQA共享。这样这些好的实施实例就可以被传播到更多的项目组中。对于企业内过程规范定义的不准确或是不方便的地方,软件项目组也可以通过SQA小组反映到软件工程过程小组,便于下一步对规程进行修改和完善。
SQA与几类角色间的关系
一个企业内的部门设置可能会各有不同,但是很多角色设置是相同的,从一个项目的SQA出发,我们可以把SQA与其他相关角色的关系表示为下图: 以上图示只说明SQA与高层经理、项目组和其他相关组之间的关系,并不是以上几个角色之间所有关系的描述,所以即便项目组会直接向高层经理汇报,但与SQA无直接关系,在图中就没有表现出来。
SQA工作中常见的几个问题
1. 最初给项目组配置SQA人员的时候,SQA的价值不被认可因为是新工作的初次开展,已经习惯了自己管理项目,向高层经理汇报的项目组难免会有抵触情绪。要从两个方面解决这个问题:一方面,从组织的角度,要明确SQA的角色及其合法性; 另一方面,SQA也要以其专业的工作赢得项目组认可,为项目组增加价值。
2. 一个全职的SQA可以同时兼任多少个项目的SQA工作对于不同的项目规模和组织管理方式,这个问题会有不同的答案,根据实施中的一些经验总结,通常在第一次实施时,承担一个20人左右的项目组的SQA工作需要占用一个人30%左右的工作量,随着SQA的成熟,这个比例会降低到15%。对于一个10人以内的项目组,SQA需要投入其10%左右的工作量。当然,项目越大SQA的投入就越多。
3. SQA与项目组的关系难处理对于SQA与项目组的关系,应该遵循以下两条原则: 要在过程方面成为项目组的严师,有错必纠,但不能有错全报;要做项目组的朋友,但不能对项目组包庇纵容。
4. 项目组有了SQA,可是需求文档和设计文档的质量还是不高对不起,这不是SQA的直接工作范围。提高需求和设计的质量,要从人员培训和严格评审入手,让有经验有资格的人来完成需求和设计文档。SQA只能从规程符合方面进行监督。
总之,在软件企业中建立SQA体系,是软件项目管理由人治到法治的一个必经阶段,也是软件企业以CMM模型为参考,进行软件过程改进中一个不可缺少的部分。软件企业只要真正建立了SQA规范,培养了专业的SQA人员就会真正从中体会到它的好处。 借鉴,说得比较详细
页:
[1]