SQA对文档内容检查结果,描述要简明扼要,条理清晰,用数据说话。有问题指出问题点在哪里,如何去改进。
如果检查结果都很符合要求,说明做的不错,可以给出做的好的实践经验总结,形成优秀实践,作为组织过程资产。知识管理活动开展要在项目计划中体现。

文档输出--评审--修改--归档--发布,是否做了,如何核实?访谈,收集材料,举证截图

软件质量保证(SQA)是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。
软件质量保证的目的是使软件过程对于管理人员来说是可见的。它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的。
软件质量保证组在项目开始时就一起参与建立计划、标准和过程。这些将使软件项目满足机构方针的要求。

一、SQA基本目标
目标 1: 软件质量保证工作是有计划进行的。
目标 2: 客观地验证软件项目产品和工作是否遵循恰当的标准、步骤和需求。
目标 3: 将软件质量保证工作及结果通知给相关组别和个人。
目标 4: 高级管理层接触到在项目内部不能解决的不符合类问题。
目标 5: 软件质量需要全面的测试工作来保证。

二、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演变。在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的本职工作。
中国现在基本有三种QA(按照工作重点不同来分):一是过程改进型,一是配置管理型,一是测试型”。我个人认为是因为SQA工作和其他不同工作组合在一起形成的。
下面根据本人经验对它们之间的关系进行一个说明。

4、QA和QC
两者基本职责
QC:检验产品的质量,保证产品符合客户的需求;是产品质量检查者;
QA:审计过程的质量,保证过程被正确执行;是过程质量审计者;
注意区别检查和审计的不同
检查:就是我们常说的找茬,是挑毛病的;
审计:来确认项目按照要求进行的证据;仔细看看CMM中各个KPA中SQA的检查采用的术语大量用到了“证实”,审计的内容主要是过程的;对照CMM看一下项目经理和高级管理者的审查内容,他们更加关注具体内容。
对照上面的管理体系模型,QC进行质量控制,向管理层反馈质量信息;QA则确保QC按照过程进行质量控制活动,按照过程将检查结果向管理层汇报。这就是QA和QC工作的关系。
在这样的分工原则下, QA只要检查项目按照过程进行了某项活动没有,产出了某个产品没有;而QC来检查产品是否符合质量要求。
如果企业原来具有 QC人员并且QA人员配备不足,可以先确定由QC兼任QA工作。但是只能是暂时的,独立的QA人员应当具备,因为QC工作也是要遵循过程要求的,也是要被审计过程的,这种混合情况,难以保证QC工作的过程质量。

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人员还没有产生这么大的价值嘛!

6、QA和组织级的监督管理
有的企业为了更好的监督管理项目,建立了一个角色,我取名为 “组织级的监督管理者”,他们的职责是对所有项目进行统一的跟踪、监督、适当的管理,来保证管理层对所有项目的可视性、可管理性。
为了有效管理项目, “组织级的监督管理者”必须分析项目的数据。
他们的职责对照上图的模型,就是执行 “反馈”职能。
QA本身不进行反馈工作,最多对过程执行情况的信息进行反馈。
SQA职责最好不要和“组织级的项目管理者”的职责混合在一起,否则容易出现SAQ困境:一方面SQA不能准确定位自己的工作,另一方面过程执行者对SQA人员抱有较大戒心。
如果建立了较好的管理过程,那么就会增强项目的可视性,从而保证企业对所有项目的较好管理;而 QA来确保这个管理过程的运行。

五、SQA的工作内容和工作方法

1、 计划
针对具体项目制定 SQA计划,确保项目组正确执行过程。制定SQA计划应当注意如下几点:
有重点:依据企业目标以及项目情况确定审计的重点
明确审计内容:明确审计哪些活动,那些产品
明确审计方式:确定怎样进行审计
明确审计结果报告的规则:审计的结果报告给谁

2、审计/证实
依据 SQA计划进行SQA审计工作,按照规则发布审计结果报告。
注意审计一定要有项目组人员陪同,不能搞突然袭击。双方要开诚布公,坦诚相对。
审计的内容:是否按照过程要求执行了相应活动,是否按照过程要求产生了相应产品。

3、问题跟踪
对审计中发现的问题,要求项目组改进,并跟进直到解决。

六、SQA的素质
过程为中心:应当站在过程的角度来考虑问题,只要保证了过程, QA就尽到了责任。
服务精神:为项目组服务,帮助项目组确保正确执行过程
了解过程:深刻了解企业的工程,并具有一定的过程管理理论知识
了解开发:对开发工作的基本情况了解,能够理解项目的活动
沟通技巧:善于沟通,能够营造良好的气氛,避免审计活动成为一种找茬活动。

七、SQA活动
软件质量保证(SQA)是一种应用于整个软件过程的活动,它包含:
1、一种质量管理方法
2、有效的软件工程技术(方法和工具)
3、在整个软件过程中采用的正式技术评审
4、一种多层次的测试策略
5、对软件文档及其修改的控制
6、保证软件遵从软件开发标准
7、度量和报告机制
SQA与两种不同的参与者相关 —— 做技术工作的软件工程师和负责质量保证的计划、监督、记录、分析及报告工作的SQA小组 。
软件工程师通过采用可靠的技术方法和措施,进行正式的技术评审,执行计划周密的软件测试来考虑质量问题,并完成软件质量保证和质量控制活动。
SQA小组的职责是辅助软件工程小组得到高质量的最终产品。SQA小组完成:
(1)为项目准备SQA计划。该计划在制定项目规定项目计划时确定,由所有感兴趣的相关部门评审。
·需要进行的审计和评审;
·项目可采用的标准;
·错误报告和跟踪的规程;
·由SQA小组产生的文档;
·向软件项目组提供的反馈数量。
(2)参与开发项目的软件过程描述。评审过程描述以保证该过程与组织政策,内部软件标准,外界标准以及项目计划的其他部分相符。
(3)评审各项软件工程活动,对其是否符合定义好的软件过程进行核实。记录、跟踪与过程的偏差。
(4)审计指定的软件工作产品,对其是否符合事先定义好的需求进行核实。对产品进行评审,识别、记录和跟踪出现的偏差;对是否已经改正进行核实;定期将工作结果向项目管理者报告。
(5)确保软件工作及产品中的偏差已记录在案,并根据预定的规程进行处理。
(6)记录所有不符合的部分并报告给高级领导者。

八、正式技术评审(FTR)

正式技术评审是一种由软件工程师和其他人进行的软件质量保障活动。
1. 目标:
(1) 发现功能、逻辑或实现的错误
(2) 证实经过评审的软件的确满足需求
(3) 保证软件的表示符合预定义的标准
(4) 得到一种一致的方式开发的软件
(5) 使项目更易管理
2、评审会议
3-5人参加,不超过2小时,由评审主席、评审者和生产者参加,必须做出下列决定中的一个 :
(1)工作产品可不可以不经修改而被接受;
(2)由于严重错误而否决工作产品;
(3)暂时接受工作产品。
3、评审总结报告
回答评审什么?由谁评审?结论是什么?
评审总结报告是项目历史记录的一部分,标识产品中存在问题的区域,作为行政条目检查表以指导生产者进行改正。
4、评审指导原则
(1)评审产品,而不是评审生产者。注意客气地指出错误,气氛轻松。
(2)不要离题,限制争论。有异议的问题不要争论但要记录在案。
(3)对各个问题都发表见解。问题解决应该放到评审会议之后进行。
(4)为每个要评审的工作产品建立一个检查表。应为分析、设计、编码、测试文档都建立检查表。
(5)分配资源和时间。应该将评审作为软件工程任务加以调度。
(6)评审以前所做的评审

九、统计软件质量保证
1、对所有错误进行分类统计
IES 规约不完整或规格说明错
MCC 未理解用户意图
IDS 故意偏离规格说明
VPS 违背编程标准
EDR 数据表示有错
ICI 构件接口不一致
EDL 设计逻辑有错
IET 测试不完全或有错
IID 不准确或不完整的文档
PLT 设计的程序设计语言翻译错
HCI 不清晰或不一致的人机界面
MIS 杂项错误
按严重,一般和微小级别统计各类错误的次数所占百分比,以及所有错误的数量及百分比。例如,建立一张类似如下的表格。
然后考虑“重要少数”的错误指标,提出改进意见。
2、根据软件过程中的每个步骤计算错误指标。
Ei = 第i发现的错误总数
Si = 严重错误数
Mi = 一般错误数
Ti = 微小错误数
PS = 第i步的产品规模( LOC,设计陈述,文档页数)
Ws,Wm,Wt分别是严重,一般,微小错误的加权因子, 推荐取值,Ws=10,Wm=3,Wt=1
软件工程 在过程的每一步中,计算各阶段的阶段指标
PIi = Ws(Si / Ei)+Wm(Mi / Ei)+Wt(Ti / Ei)
错误指标
Ei= ∑(i×PIi)/ PS
=(PI1 + 2PI2 + 3PI3 + … + i*PIi)/ PS
错误指标与上面表格中收集的信息相结合可以得出软件质量整体改进指标。

十、质量保证与检验

确保每个开发过程的质量,防止把软件差错传播到下一个过程,因此,检验的目的有两个:
1.切实搞好开发阶段的管理,检查各开发阶段的质量保证。
2.预先防止软件差错给用户造成损失。

检验的类型有:
1.供货检验:对委托外单位承担开发作业,而后买进或转让的构成软件产品的部件,规格说明,半成品或产品的检查。
2.中间检验 / 阶段评审
目的是为了判断是否可进入下阶段进行后续开发,避免将差错传播到后续工作中。
3.验收检验:
确认产品是否已达到可以进行产品检验的质量要求。
4.产品检验:
判定向用户提供的软件产品是否达到令人满意的程度。

其他参考SQA职责:
1. 通过对项目组的各种产出数据进行分析,获取团队当前的工作状态;

2. 对团队的日常工作进行跟踪,确保每一件任务都能被正确执行;

3. 以项目周计划为依据,通过对产出物的确认来获取各任务的进度及质量数据;

4. 对缺陷跟踪系统、版本管理系统、测试数据等进行分析,获取产品开发状态;

5. 对员工的产出物进行统计分析,得出员工绩效的原始数据及横向/纵向对比数据;

6. 对项目的文档、源码、测试报告等进行规范性审查;

7. 参与公司质量体系建设、持续改进,完成领导交付的其他任务

浅谈软件质量保证SQA角色和职能相关推荐

  1. 浅谈软件性能测试中关键指标的监控与分析(转)

    浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在 ...

  2. 「软件项目管理」一文浅谈软件项目风险计划

    一文浅谈软件项目风险计划 序言 一.风险基本概念 1. 风险的定义及特性 2. 风险三要素 3. 风险图示 3. 风险类型 (1)预测角度 (2)范围角度 二.风险管理过程 三.风险识别 1. 定义 ...

  3. 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识

    浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...

  4. java学习方法-浅谈软件开发的神速进步

    中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为"不败". 1浅谈软件开发的神速进步 1.1什么才是软件开发的葵花 ...

  5. 浅谈软件自动化集成测试的流程

    浅谈自动化集成测试 相信从事软件测试专业的同行很早就知道了自动化的测试技术,也许大家也很想知道具体的软件自动化具体的运行实施过程.本人学识尚欠,目前无法对综合的软件自动化的测试进行阐述,但是本人通过不 ...

  6. 浅谈软件开发者应具备的基本素质

    我们常常能在一些电子产品的发布会上听到新产品修复了某些BUG.开发出了某些先进的功能: 我们常常会听到某些黑客攻击某些网站的消息,也可能受过某些电脑病毒的侵害: 我们也常常能在一些科幻大片里见到程序员 ...

  7. api 二次 开发 禅道_浅谈-软件开发流程

    先直接放出我对软件开发的相关人员职责和流程: 图一:软件开发的相关人员职责 以下是截屏的开发流程泳道图: 横轴是相关开发人员的工作模块:纵轴是从上至下开发时序周期. 图二:软件开发的流程图 从职责图和 ...

  8. 浅谈技术管理者的角色认知与自我管理

    谈到技术管理,首要的一点就是管理者的角色认知问题,因此本篇文章的主要内容就是如何增强管理者的角色认知,持续提升自我管理能力. 作为管理者,首要任务就是要认清自我并管理好自己,要树立对管理者角色的正确认 ...

  9. 浅谈软件开发过程及项目管理

    做软件也有几年了,将学到别人的经验,项目中自己的体验,参加培训的收获一起总结一下. 需求阶段: 首先要明确软件项目开发完后是为了解决什么问题?对于要解决的核心问题必须要明确,以后可以重点设计作为软件的 ...

  10. 浅谈软件编程中的8大数据结构

    文章目录 前言 一.为什么要研究数据结构 二.数据结构的分类 1.数组(Array) 2.链表(Linked List) 3.队列(Queue) 4.栈(Stack) 5.散列表(Hash) 6.树( ...

最新文章

  1. SAP MM 公司间STO发货单输出报错 - 合并工厂AUC1和存储位置6002没有货物收货地点 - 之对策
  2. Serverless:为我们到底带来了什么
  3. simulink中from与goto模块的使用
  4. 剑指offer-JZ82 二叉树中和为某一值的路径(一)(附区分DFS和回溯)
  5. 1-算法 排序 选择排序
  6. html5表单新功能解析,解析HTML5表单新功能-HTML5
  7. jupyter新建文件_初学jupyter,运行,下载,上传导入文件
  8. jquer同时选择多个不同的id执行同意操作
  9. C++第三方库HPSocket数据的发送与接收
  10. 第二章第一题(将摄氏温度转换为华氏温度)(Convert Celsius to Fahrenheit)
  11. 小技巧:机械键盘使用技巧
  12. oracle删除目录 数据库文件,数据库生成一个app文件夹为什么删不掉
  13. 简述a股实时股票行情接口原理?
  14. 奇幻RPG(人物构造 与 Abstract Factory模式)
  15. position与清除浮动
  16. 如何使用计算机处理文件夹,电脑打开某些文件夹提示引用了不可用位置怎么解决[多图]...
  17. 实用干货 !这才是职场最全实用建议
  18. java的课程总结报告_java课程总结报告
  19. java jdk 8学习笔记,Java JDK 8学习笔记 PDF_源雷技术空间
  20. MT2601平台L1.MP9版本DWS配置方法

热门文章

  1. shell脚本学习指南-学习(1)
  2. 微软更新补丁目录查询
  3. python 抓取 快代理- 国内高匿代理 IP
  4. flutter视频播放videoplayer与chewie
  5. win8修复计算机u盘,Win8系统U盘里的文件不见了怎么办?
  6. 备考通信复试过程中的一些知识点总结梳理——信息论基础知识
  7. 《数据挖掘——概念与技术》笔记
  8. c语言 2,有一函数: y= 写一程序,输入x,输出y值.,有一函数 ,编写一段程序,输入x的值,输出相应的y值....
  9. bios升级 acer linux,《原创》Acer更新BIOS的问题,傻瓜都会
  10. win10设置无盘服务器,win10系统无盘安装系统的操作方法