软件质量保证(SQA)是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。
软件质量保证的目的是使软件过程对于管理人员来说是可见的。它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的。软件质量保证组在项目开始时就一起参与建立计划、标准和过程。这些将使软件项目满足机构方针的要求。
一、基本目标
目标 1: 软件质量保证工作是有计划进行的。
目标 2: 客观地验证软件项目产品和工作是否遵循恰当的标准、步骤和需求。
目标 3: 将软件质量保证工作及结果通知给相关组别和个人。
目标 4: 高级管理层接触到在项目内部不能解决的不符合类问题。
二、QA的由来
我们知道,国外很多的大公司,QA的职责就是测试(主要是系统测试),比如IBM、CA、PeopleSoft等。其实在最初,几乎所有的公司都是这样的。后来,由于缺乏有效的项目计划和项目管理,留给系统测试的时间很少(注:我以前做的一个项目,项目经理就明确告诉我系统测试就1天,没得商量)。另外,需求变化太快,没有完整的需求文档,测试人员就只能根据自己的想象来测试。这样一来,测试就很难保障产品的质量,事先预防的QA职能就应运而生。
事先预防其实是借鉴了TQM的思想,而且也符合软件工程“缺陷越早发现越早修改越经济”的原则。这些思想的渊源还可以追溯到中国古代的典故中,比如曲突徙薪、扁鹊论医术等。特别是扁鹊论医术这个典故,我偶然在国外的一篇文章中看到了(后来在林锐的文章中也看到了),常感叹我们国人连祖先的思想文化遗产都丢的差不多了。
三、QA的现在
目前,实施CMM的企业越来越多了。CMM模型就要求建立QA角色。这里的QA类似于过程警察,主要职责是,检查开发和管理活动是否与已定的过程策略、标准和流程一致,检查工作产品是否遵循模板规定的内容和格式。在这些企业中,一般还要求QA独立于项目组,以保障评价的客观性。从国内来看,多数的QA没有技术背景,检查出的偏差多为鸡毛蒜皮,再加上自己没有令人信服的背景,领导也不支持,当然做起来就很困难了。
缺乏信任和支持只是一个方面,QA工作本身就很具挑战性。它要求QA具有软件工程的知识、软件开发的知识、行业背景的知识、数理统计的知识、项目管理的知识、质量管理的知识等等。
我们常常遇到这样的问题,改进到一定程度就很难突破,感觉心有余而力不足了,就开始郁闷了。后来通过学习、培训、交流,思想和技能得到升华,又发现了木桶中最短的那块,然后又开始改进,然后又遇到了玻璃天花板,然后……就这样处于郁闷的循环中。
假使我们掌握了所有的知识,能突破所有的玻璃天花板,那是不是QA就可以一帆风顺了。答案是否定的。QA角色定义本身就有很大的局限性。QA充当的是过程警察的角色,无论是否有意义,都专横地强制过程的执行,容易在项目组中造成敌对的关系,受到排挤,而且这种警察的姿态也破坏了团队精神。如此一来,QA工作还需要的是人际关系技能,就如我以前写的《质量平衡》和《QA应该独立于项目组吗?》一样,艺术化地处理这种关系。
四、QA的未来
从某种程度上说,独立的QA审查机制是瀑布模型的产物。随着现代软件开发技术的演变,螺旋模型和迭代模型的兴起,QA机制正在悄然发生变化。这种变化就是从独立专职的QA向贯穿过程的兼职QA演变。在CMMI模型中,这种兼职的QA也是被允许的。为什么会发生这种改变呢?无论是XP、RUP还是其它先进的方法论,都是先产生架构,然后再增量开发,直到完成。这种模式中,需求和设计缺陷在各个迭代周期被所尽早发现和修复,质量也内建于架构和过程中,项目的成本和进度也得到保障。
到那时,是不是独立的QA就不复存在了呢?有些成熟度较低的企业还是需要的,主要是保证过程执行的有效性和评价的客观性。
五、SQA的理论探索
1、过程的认识
我们都知道一个项目的主要内容是:成本、进度、质量;良好的项目管理就是综合三方面的因素,平衡三方面的目标,最终依照目标完成任务。项目的这三个方面是相互制约和影响的,有时对这三方面的平衡策略甚至成为一个企业级的要求,决定了企业的行为,我们知道 IBM的软件是以质量为最重要目标的,而微软的“足够好的软件”策略更是耳熟能详,这些质量目标其实立足于企业的战略目标。所以用于进行质量保证的SQA工作也应当立足于企业的战略目标,从这个角度思考SQA,形成对SQA的理论认识。
软件界已经达成共识的:影响软件项目进度、成本、质量的因素主要是 “人、过程、技术”。首先要明确的是这三个因素中,人是第一位的。
现在许多实施 CMM的人员沉溺于CMM的理论过于强调“过程”,这是很危险的倾向。这个思想倾向在国外受到了猛烈抨击,从某种意义上各种敏捷过程方法的提出就是对强调过程的一种反思。 “XP”中的一个思想“人比过程更重要” 是值得我们思考的。我个人的意见在进行过程改进中坚持“以人为本”,强调过程和人的和谐。
根据现代软件工程对众多失败项目的调查,发现管理是项目失败的主要原因。这个事实的重要性在于说明了 “要保证项目不失败,我们应当更加关注管理”,注意这个事实没有说明另外一个问题“良好的管理可以保证项目的成功”。现在很多人基于一种粗糙的逻辑,从一个事实反推到的这个结论,在逻辑上是错误的,这种错误形成了更加错误的做法,这点在SQA的理解上是体现较深。
如果我们考证一下历史的沿革,应当更加容易理解 CMM的本质。CMM首先是作为一个“评估标准”出现的,主要评估的是美国国防部供应商保证质量的能力。CMM关注的软件生产有如下特点:
(1)质量重要
(2)规模较大
这是 CMM产生的原因。它引入了“全面质量管理”的思想,尤其侧重了“全面质量管理”中的“过程方法”,并且引入了“统计过程控制”的方法。可以说这两个思想是CMM背后的基础。
上面这些内容形成了我对软件过程地位、价值的基本理解;在这个基础上我们可以引申讨论 SQA。
2、生产线的隐喻
如果将一个软件生产类比于一个工厂的生产。那么生产线就是过程,产品按照生产线的规定过程进行生产。 SQA的职责就是保证过程的执行,也就是保证生产线的正常执行。
抽象出管理体系模型的如下,这个模型说明了一个过程体系至少应当包含 “决策、执行、反馈”三个重要方面。
QA的职责就是确保过程的有效执行,监督项目按照过程进行项目活动;它不负责监管产品的质量,不负责向管理层提供项目的情况,不负责代表管理层进行管理,只是代表管理层来保证过程的执行。
3、SQA和其他工作的组合
在很多企业中,将 SQA的工作和QC、SEPG、组织级的项目管理者的工作混合在一起了,有时甚至更加注重其他方面的工作而没有做好SQA的本职工作。
根据 hjhza 的意见“中国现在基本有三种QA(按照工作重点不同来分):一是过程改进型,一是配置管理型,一是测试型”。我个人认为是因为SQA工作和其他不同工作组合在一起形成的。
分享到:
相关推荐
软件质量保证SQA培训教材 软件质量保证SQA是一种确保软件产品满足质量要求的方法。软件质量保证SQA培训教材是指用于培训软件质量保证SQA相关知识和技能的教学资源。 软件质量保证SQA培训教材的重要性体现在以下几...
278 软件质量保证sqa培训教材.pptx
278软件质量保证sqa培训教材.pptx
"软件质量保证计划SQA" 软件质量保证计划(SQA)是一种应用于整个软件过程的庇护性活动,旨在确保软件项目的质量。SQA 计划提供了一条标准的开发路线,从而完成软件质量保证。SQA 计划的目标是:(1)在需求分析和...
软件质量保证(SQA)是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。Sowhatyoudo,dowhatyousayandproveit. 软件质量保证的目的是使软件过程对于管理...
软件质量保证过程(SQA)是确保软件开发过程符合预定义的标准、策略和流程的关键环节。SQA人员作为过程监督者,负责检查开发活动和管理活动的合规性,以及工作产品的质量和格式。以下是对SQA过程在软件开发各阶段的...
"软件质量保证之SQA" 软件质量保证是软件开发的重要组成部分,它旨在确保软件开发过程和结果符合预期的要求。软件质量保证是软件工程领域中的一部分,它包括一系列规程和计划采取的一系列活动及其结果评价。软件...
软件质量保证(SQA)项目编号现状调查报告 软件质量保证(SQA)是指在软件开发过程中,为了确保软件产品的质量,采取的一系列措施和活动。软件质量保证是一种系统性的方法,旨在确保软件产品满足用户的需求和预期。...
软件质量保证(Software Quality Assurance, 简称SQA)是确保软件产品达到预定质量标准的一系列活动。SQA的职责不仅仅是对最终产品的检查,而是更深入地关注软件开发过程中的每一个环节,确保过程的规范性和效率,...
此外,CMM2的“软件质量保证SQA”过程强调了软件质量保证计划的编写,这是确保质量管理有效执行的关键步骤。该计划应详细描述质量保证活动、责任分配、评审和审计的流程,以及如何确保符合标准和规定。 总的来说,...
根据给定的文件信息,我们可以深入探讨软件质量保证计划(SQA Plan)的关键知识点,以及其在软件开发项目中的重要性。 ### 软件质量保证计划概览 软件质量保证计划是软件开发项目中不可或缺的一部分,旨在确保软件...
"软件质量保证之SQA" 软件质量保证是软件工程中的一部分,旨在确保软件开发过程和结果符合预期的要求。软件质量保证可以降低总成本,提高软件的可维护性和可靠性。 软件质量是指软件符合预期的功能和性能需求的...
软件质量保证过程SQA 软件质量保证过程是软件开发过程中的一种独特的审查活动,贯穿于整个软件开发过程。质量控制人员类似于软件开发过程中的过程警察,其主要职责是检查开发和管理活动是否与制定的过程策略、标准...
总结来说,软件测试与质量保证是保证软件质量和用户满意度的关键。通过合理的测试策略、自动化工具的运用、敏捷开发的实践以及遵循行业标准,企业能够确保其软件产品在激烈的市场竞争中保持领先地位。对于IT从业者而...
### 软件质量保证(SQA)检查表详解 #### 一、引言 软件质量保证(Software Quality Assurance, SQA)是确保软件产品符合既定标准和满足用户期望的一系列过程。SQA检查表是一种重要的工具,用于指导项目团队进行软件...
软件质量保证(Software Quality Assurance,简称SQA)是IT行业中确保软件产品达到预定质量标准的关键环节。软件质量不仅关乎软件功能的完备性和性能的稳定性,还包括对开发过程的规范性以及用户需求的满足程度。高...
软件质量保证过程(SQA) 软件质量保证过程(SQA)是软件开发过程中的一个关键环节,旨在确保软件产品的质量达到客户的要求。软件质量保证过程贯穿于整个软件开发过程,质量控制人员扮演着软件开发过程中的“警察”...
《软件质量保证过程文档及其应用模板》是一份重要的参考资料,主要针对的是软件开发中的质量保证环节,对于理解和实施CMMI三级评估具有显著价值。在软件工程领域,质量保证(Software Quality Assurance,简称SQA)...
SQA(软件质量保证)是CMM2级中的一个重要关键过程区域,它是贯穿于整个软件过程的第三方独立审查活动,在CMM的过程中充当重要角色。 SQA是一种质量保证活动,旨在确保软件开发过程中的质量要求。它是整个软件开发...