软件质量保证SQA职责与活动概要质量管理发展及发展趋势全面软件质量管理SQA职责及活动质量管理发展质量管理发展五个阶段质量管理发展趋势质量管理发展五个阶段1900手工操作者专职检验员1920过程统计技术1931全面质量管理19602000以顾客为中心阶段时间质量管理发展趋势一个核心和两个基本改变核心:由对结果的检验转向对核心:由对结果的检验转向对过程精细过程精细的控制的控制改变:改变:管理范围的改变管理范围的改变–由针对以产品生产制造服务质量管理扩大扩大到行政部门工作质量。关注焦点的转移关注焦点的转移–由面向以产品生存周期的服务质量管理转向顾客满意为中心顾客满意为中心质量管理。概要质量管理发展及发展趋势全面软件质量管理SQA职责及活动商业目标决定质量目标–重要的理念:商业目标决定质量目标。提高软件质量的最终目的是为了赢利,而不是创造完美无缺的产品。因此对于普通商业软件而言,并不是“质量越高越好”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。商业目标决定质量目标–在日常工作中,我们接触过的软件几乎都是有缺陷的,即便是软件业老大Microsoft,它的软件产品也经常出错甚至导致死机,人们埋怨几句后还会照样使用有缺陷的软件。–企业的根本目标是为了获取尽可能多的利润,而不是生产完美无缺的产品。如果企业销售出去的软件的质量比较差,轻则挨骂,重则被退货甚至被索赔,因此为了提高用户对产品的满意度,企业必须提高产品的质量。但是企业不可能为了追求完美的质量而不惜一切代价,当企业为提高质量所付出的代价超过销售收益时,这个产品已经没有商业价值了,还不如不开发。–企业必须权衡质量、效率和成本,产品质量太低了或者太高了,都不利于企业获取利润。企业理想的质量目标不是“零缺陷”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。全面软件质量管理:模型郎中治病的故事–质量的死对头是缺陷(defect,bug…),缺陷是混在产品中的人们不喜欢、不想要的东西,它对产品没有好处只有坏处。缺陷越多质量越低,缺陷越少质量越高,提高软件质量的基本手段是消除软件缺陷。–中国郎中看病的故事在中国古代,有一家三兄弟全是郎中。其中老三是名医,人们问他:“你们兄弟三人谁的医术最高?”他回答说:“我常用猛药给病危者医治,偶尔有些病危者被我救活,于是我的医术远近闻名并成了名医。我二哥通常在人们刚刚生病的时候马上就治愈他们,临近村庄的人说他是好郎中。我大哥不外出治病,他深知人们生病的原因,所以能够预防家里人生病,他的医术只有我们家里才知道。”–郎中三兄弟是三种治病方式的代言人。全面软件质量管理:模型消除软件缺陷的三种方式–老大治病的方式最高明,如果人们能够预防生病的话,那么没病就用不着看医生了。•提高软件质量最好的办法是:在开发过程中有效地防止工作成果产生缺陷,将高质量内建于开发过程之中。主要措施是“不断地提高技术水平,不断地提高规范化水平”,其实就是练内功,通称为“软件过程改进”。全面软件质量管理:模型–即使一个人严守养生之道,身体状况良好,但总是会意外地得病的,得了病就要去看医生。老二治病的方式就是医院的模式,病人越早看病,就越早治好,治病的代价就越低。•同理,在开发软件的时候,即使人们的技术水平很高,并且严格遵守规范,但是人非机器,总是会犯错误的,因此无法完全避免软件中的缺陷。•当工作成果刚刚产生时马上进行质量检查,及时找出并消除工作成果中的缺陷。这种方式效果比较好,人们一般都能学会。最常用的方法是技术评审、软件测试和过程检查,已经被企业广泛采用并取得了成效。全面软件质量管理:模型–老三治病的方式代价最高,只能是不得已而为之。可在现实之中,大多数软件企业采用老三的方式来对付质量问题。典型现象是:在软件交付之前,没有及时消除缺陷。当软件交付给用户后,用着用着就出错了,赶紧请开发者来补救。全面软件质量管理:模型模型–借鉴老大、老二治病的方法,我们提炼出全面软件质量管理的模型,如下图所示。项目中的所有人员几乎都参与了质量活动,只是介入的程度不同而已。全面软件质量管理:模型角色职责–谁对软件质量负责?是全员负责。任何与软件开发、管理工作相关的人员都对质量产生影响,都要对质量负责。所以人们不要把质量问题全部推出质量人员或测试人员。–谁对软件质量负最大的责任?谁的权利越大,他所负的质量责任就越大。质量人员是成天与质量打交道的人,但他个人并不对产品质量产生最大的影响,所以也不负最大的责任。全面软件质量管理:模型–质量保证人员的主要职责:–(1)负责制定质量计划(很重要但是工作量比较少);–(2)负责过程与产品检查(CMMI中的过程与产品质量保证),约占个人工作量的20%;–(3)参与技术评审,约占个人工作量的30%;–(4)参与软件测试,约占个人工作量的30%;–(5)参与软件过程改进(面向整个组织机构),约占个人工作量的20%;*上述工作量的比例仅供参考,在实际应用时必须根据项目的特征而定。全面软件质量管理:过程检查观点–CMMI和ISO9001所述的软件质量保证,实质就是过程检查,即检查软件项目的“工作过程和工作成果”是否符合既定的规范。–符合规范的工作成果不见得就是高质量的,但是明显不符合规范的工作成果十有八九是质量不合格的。•例如,组织制定了重要工作成果的文档模板(例如需求规格说明书、设计报告等),要求项目组人员写的文档尽可能符合模板。如果质量保证人员发现项目组人员写的文档与租子的模板差异非常大,那么就要搞清楚究竟是模板不合适?还是项目组人员偷工减料?全面软件质量管理:过程检查–过程检查的要点是:找出明显不符合规范的工作过程和工作成果,及时指导相关人员纠正问题,切勿吹毛求疵或者在无关痛痒的地方查来查去。•不少组织的质量保证人员并没有真正理解过程检查的意义,老是对照规范,查找错别字、标点符号、排版格式等问题,迷失了方向,这样只有疲劳没有功劳,而且让被检查人员很厌烦。•对于中小型项目而言,过程检查工作由质量保证人员一个人负责就够了,约占其20%的工作量,让质量保证人员抽出更多的时间从事技术评审和软件测试工作。全面软件质量管理:过程检查流程–过程检查计划的要点是确定主要检查项和检查时间(或频度)。–质量保证人员在执行过程检查的时候,如果发现问题,应该立即记录下来。过程方面的问题也是缺陷,因此最好使用缺陷跟踪工具,有助于提高过程检查的效率。–质量保证人员首先设法在项目内部解决已经发现的质量问题,与项目成员们协商,给出解决措施。在项目内难以解决的质量问题,由上级领导给出解决措施。概要质量管理发展及发展趋势全面软件质量管理SQA职责及活动QA的种类QA–ISO8402SQA–CMM,软件质量保证PPQA–CMMI,过程及产品质量保证公司级QA,项目级QA,PQA(产品QA)QA的角色及责任老师–具备学习和培训的能力医生–缺陷预防;通过对项目过程进行诊断,帮助分析原因,开处方。警察–以企业流程为依据,但要告诉大家流程背后的原因;如果和项目组针对某些问题意见相左,可以直接汇报高层。传教士–质量文化的布道者,传播质量文化,从思想上入手,改变质量意识QA的角色及责任典型的QA的职责包括了:过程指导、过程评审、产品审计、过程改进、过程度量老师–在项目前期,QA辅助项目经理制定项目计划,包括根据质量体系中的标准过程裁剪得到项目定义的过程,帮助项目进行估算,设定质量目标等;对项目成员进行过程和规范的培训以及在过程中进行指导等。医生–在项目过程中,QA也可以承担收集、统计、分析度量数据的工作,用于支持管理决策。QA的角色及责任警察–在项目过程中,QA有选择性地参加项目的技术评审,定期对项目的工作产品和过程进行审计和评审。传教士–在公司及项目层面宣传质量文化,灌输质量意识。对于SQA工作的误解SQA工作就是做测试–软件测试是一种有效的提高软件质量的手段,但测试是一种事后的、检验性的工作。–如何在软件生产过程中保证软件过程的质量和效率其实比单纯的产品检验具有更重要的意义。–不断地改进我们的软件过程是SQA的一项最重要的任务。SQA工作内容定义组织质量保证活动的过程及相关的模板(EPG成员中QA的负责人)辅助过程裁减制订软件质量保证计划坚持各阶段的评审和审计,并跟踪其结果作合适处理监控软件产品的质量采集软件质量保证活动的数据度量软件质量保证活动制订质量保证计划–质量保证计划就是为了实现质量目标的计划。而质量目标则是由商业目标决定的。开发软件产品的最终目的是为了赚钱,所以人们为提高软件质量所付出的代价是有上限的,项目负责人当然希望代价越低越好。质量保证计划是全面质量管理的行动纲领。–谁制定质量保证计划?由项目核心成员和质量人员共同协商制定,主要由质量人员起草,由项目经理审批即可。各阶段活动监督、审核和跟踪评审:活动–里程碑活动评审–基线评审–……审计:工作–基线审计–SQA审计有背离之处,则对其进行标识、记录、并跟踪直至其符合。监控软件产品质量对软件产品的验收把握采购软件的质量监控分承包商的软件质量保证工作收集项目各个阶段数据记录不符合项跟踪不符合项直至解决收集各阶段的评审和审计情况度量和改善SQA活动度量的目的是为了判断SQA活动的成本和进度状态。与其计划相比,SQA活动完成的里程碑数;在SQA活动中完成的工作,花费的工作量及支出的费用;与其计划相比,产品审计和活动评审的次数公司PPQA过程QA人员项目经理高层经理质量保证专家客户代表项目层面不能解决的问题状态和问题的汇报资源的批准发现的不符合项检查检查管理项目项目开始开始需求需求分析分析系统系统分析分析开发开发//编码编码和单元测试和单元测试系统系统//集成集成测试测试验收验收测试测试软件质量保证软件质量保证指导过程裁剪QA计划……需求说明书、需求确认、需求变更侯选方案、概要/详细设计程序,文档,测试用例测试用例缺陷报告测试报告验收测试报告用户手册……软件生命周期各阶段与QA后期后期总结报告经验教训优秀样例IBM的定义十分简洁:质量即顾客满意谢谢大家