软件项目质量管理软件系统功能齐全是不是就是质量好?用户界面友好是不是就是软件的质量好?没有BUG是不是就是软件的质量好?什么是用户满意的软件项目?软件测试是不是软件质量的全部?那么,什么是软件的质量?什么是软件项目的质量?软件项目管理中的质量管理与软件工程的测试管理,有什么不同?项目经理与项目QA经理有什么不同?什么是软件项目的质量管理?项目经理在保证项目的质量方面,要做什么工作?什么是软件项目的质量管理?质量大师的声音-戴明计划执行CAP:计划,设定为了达到目标所必须的方法或标准D:实施:按计划逐步实施具体工作C:确认(检查):确认并检查实施的效果A:措施:确认实际效果与计划差异,并根据需要采取措施PD检查措施朱兰-质量螺旋曲线调研计划设计规格工艺采购仪器生产工序检验测试销售调研售后服务适用性Fitnessforuse克劳士比-零缺陷工具程序模式工作表衡量表品质成本计算技巧问题解决5步骤沟通模式目标设定技巧开会技术一个核心:第一次就把正确的事情做正确二个基本点:有用的和可信赖的三个需要:任何组织都要满足客户的需要、员工的需要和供应商的需要四个基本原则:质量就是符合要求预防的系统产生质量质量的工作准则是零缺陷必须用质量代价(金钱)来衡量质量表现质量观点对比传统质量观点现代质量管理观点质量是检查出来的质量是规划出来的,而非检查出来的质量就是指产品的质量质量不只是产品还包括过程缺陷是不可避免的事情一次作对成本最低-零缺陷质量管理是质量部门人员的事情质量管理,人人有责对于质量事故,基层人员负主要责任质量责任项目团队管理者承担85%质量越高越好质量就是符合要求、适用、客户满意,需要考虑成本与收益改进质量主要靠检查和返工改进质量靠预防和评估各阶段缺陷修复成本不一样各缺陷修复阶段修复成本后果需求阶段1设计阶段3~6返工编程阶段10返工内部测试阶段20~40返工,进度延迟外部测试阶段30~70返工,进度延迟产品已发布出去40~1000返工,进度延迟,客户不满经常有这样的说法:一开始考虑太多缺陷预防,会延迟项目进度事实上更多的情况是:后期的不断返工更严重地影响了项目进度修正错误的代价不是随时间线性增长,而几乎是呈指数增长的鱼刺图应用案例输入错误率增加设备因素个人因素文件因素环境因素显示器太差硬件故障键盘失灵软件不好使能力不够身体不适情绪低落精神不集中期限太急特殊字多逻辑混乱字迹不清空调不足座位不适光线太暗环境嘈杂控制图控制上限UCL控制下限LCL标准值质量失控(OutofControl)7点规则过程处于正常范围内,就不应对其进行调整;过程如果失控,则必须对其调整控制图案例110115120125130135载波带外指标单位:dbuV载波通讯芯片质量检验图标准线规范线规范线12345678910样品质量失控帕累托图20016012080400100%80%60%40%20%0%误点发生次数误点发生百分比天气空管机械机场其他2%4%12%36%46%统计抽样的样本量取样测试的方法基于两个原因:(1)对产品总体进行测量成本高,时间长,破坏性大,是不经济的(2)我们对产品总体质量有基本信心,相信缺陷是个别现象抽样数量公式:抽取样本量=25%X可信度参数21-期望可信度期望可信度参数值95%1.9690%1.64580%1.281选择不同的质量控制工具情景使用工具特点需要找出引发问题的原因因果图、流程图发散思维需要判断过程是否在控制内、是否出现了典型偏差过程控制图按时间定义测量数据需要找出影响问题的关键原因,指导采取纠正行动帕累托图20/80原理需要看产品是否符合要求,可时间有限、费用有限统计抽样节约成本本章内容提要软件质量管理的基本概念软件质量控制缺陷预防质量体系软件项目质量管理计划第一节软件质量管理的基本概念软件质量是指软件满足明确说明或者隐含的需求的程度。用户需求是衡量软件质量的基础。除满足明确定义的需求外,还要满足隐含的需求。软件质量的重要性软件项目的三大目标:质量进度费用软件质量问题可能导致经济损失甚至灾难性的后果。质量是软件产品和软件组织的生命线。质量问题会增加开发和维护软件产品的成本。软件质量的重要性软件质量属性软件质量属性可靠性可用性安全性可维护性机密性软件质量功能性能易用性可信性软件质量的形成软件的质量形成于产品或者服务的开发过程中,而不是事后的检查(如测试)。20世纪80年代起,质量管理逐步从单一的关注产品,转移到关注生产好产品的过程上,并且将过程的作用扩大到了组织运行的所有领域。质量产生于过程当过程不断被重复,其性能会趋于稳定结果可预测对现行执行可监测质量得到保证实施的过程性能稳定过程的上下控制界特殊原因造成过程性能不稳定。根除特殊原因,使过程性能稳定,防止质量问题的出现。质量产生于过程造成不稳定的特殊原因质量成本(CoQ)质量成本是为了达到产品或服务的质量而付出的所有努力的总成本,包括三部分:预防成本:为防止将缺陷引入软件而进行的预防工作所消耗的费用。评价成本:检查软件是否包含缺陷的工作所消耗的费用。失效成本:修复缺陷工作所消耗的成本。PAF(Prevention/Appraisal/Failure)成本模型质量成本(CoQ)预防评估失效培训审查废品计划测试返工过程研究和改进审计修复供应商调查监控RegressionTest咨询度量缺陷分析获得资格验证服务分析退货确认投诉处理和解决质量成本(CoQ)WhenDefectisDetectedTypicalCostofCorrectionUserRequirements$100-$1,000Coding/UnitTesting$1,000ormoreSystemTesting$7,000-$8,000AcceptanceTesting$1,000-$100,000AfterImplementationUptomillionsofdollars在项目早期预防和检测缺陷比在项目晚期检测和排除缺陷更有效、更节省成本。本章内容提要软件质量管理的基本概念软件质量控制缺陷预防质量体系软件项目质量管理计划第二节软件质量控制质量控制(QualityControl,QC)是确定项目结果与质量标准是否相符,并及时纠正产品缺陷的过程。质量控制的主要手段是验证与确认(V&V)验证(Verification):是否正确地构造了产品?以开发者的视角进行。确认(Validation):是否构造了正确的产品?以用户的视角进行。软件项目中的QC活动需求分析需求评审设计设计评审编码代码审查系统测试界面原型需求确认需求确认确认测试测试开发质量控制方法质量控制方法静态方法:评审技术评审代码评审……动态方法:测试单元测试集成测试确认测试……技术评审(TechnicalReview)技术评审是指在完成一项工作后,把工作产品分发给合作者,让合作者检查其中的缺陷。然后开会讨论工作产品并产生需要返工的缺陷列表。技术评审的主要对象:需求和设计规格说明、测试计划、用户手册等。技术评审流程组织召开评审会议:一般应有3~5个相关人员参加,会前每个参加者做好准备,评审会议一般不超过两个小时。在评审会议上,由开发小组对提交的评审对象进行讲解。评审组可对开发小组提问,提出建议和要求,展开讨论。会议结束时必须做出以下三个决策之一:接受该产品,不需要做修改。由于错误严重,拒绝接受。暂时接受该产品,但需要对某一部分进行修改。评审报告与记录:对所提出的问题要进行记录,并产生一个评审报告。技术评审流程同行评审(PeerReview)同行评审是一种特殊类型的技术评审。由与工作产品开发人员具有同等背景和能力的人员对工作产品进行技术评审,因此非常有利于发现工作产品中的问题。代码评审(CodeReview)编码阶段的一种技术评审,由一组人员对程序进行阅读和静态分析,可以很有效地检查程序代码中的缺陷。评审内容:程序是否符合编码规范,程序结构是否合理,算法和程序逻辑是否正确,程序性能怎样等。很多程序逻辑错误很难通过测试发现。缺陷跟踪缺陷跟踪是指从缺陷被发现开始到被改正为止的整个跟踪流程。打开已分配分配报告已解决解决已关闭重新打开关闭退回重新打开分配开始结束已验证验证缺陷跟踪一般需要软件工具支持。常用的工具有Bugzilla、ClearQuest、Jira、TrackRecord等。缺陷跟踪软件质量的常用度量初期故障率:指软件在初期故障期(一般以软件交付给用户后的三个月内为初期故障期)内单位时间的故障数。用来评价交付使用的软件的质量,预测什么时候软件运行达到基本稳定。一般以每100小时的故障数为单位。偶然故障率:指软件在偶然故障期(一般以软件交付给用户后的4个月以后为偶然故障期)内单位时间的故障数。它用来度量软件处于稳定状态下的质量。一般以每1000小时的故障数为单位。软件质量的常用度量平均失效前时间(MeanTimetoFailure,MTTF):指软件在失效前正常工作的平均统计时间。用来度量软件的可靠性。平均修复时间(MeanTimetoRepairation,MTTR):指软件失效后,使其恢复正常工作所需要的平均统计时间。用来度量软件的可维护性。软件质量的常用度量缺陷密度:指软件单位数量的源代码中隐藏的缺陷数量。通常以每千行无注解源代码为一个单位。软件质量的常用度量本章内容提要软件质量管理的基本概念软件质量控制缺陷预防质量体系软件项目质量管理计划第三节缺陷预防优点:主动改进软件过程,降低出错几率降低质量成本,实现项目效益找到根本原因消除根本原因软件缺陷预防DP(DefectPrevention)过程制订组织级DP计划组织级DP会议修改组织标准软件过程制订项目级DP计划项目阶段启动会议原因分析会议DP效果分析原因分析报告DP效果分析报告组织级DP活动项目级DP活动软件缺陷原因分析方法Step1:选择缺陷数据。对小项目,可选择某一时期内发现的所有缺陷。对大项目,可选择一个缺陷样本集合。Step2:分析缺陷的根本原因对缺陷逐个进行分析,常以会议的方式进行。可对分析出的根本原因进行分类,例如:–IBM:疏忽、培训、通信失效、书写错误–Motorola:开发阶段相关、人员相关、项目相关、复审相关软件缺陷原因分析方法缺陷原因分析工具——因果图(鱼骨图)softwaredefectphaseprojectreviewhumanLackofdomainknowledgeLackofprocessknowledgeChangecoordinatinIndividualmistakeCommunicationproblemNo/IncompletereviewInadequateparticipationNotenoughpreparationRequirementsHighleveldesignImplementationArchitectureComponentdesignTestingTimepressureManagementpressureCausedbyOtherproductStep3:识别公共原因,制定改进措施。在逐个分析了缺陷之后,还要对分析得到的根本原因进行综合和归纳,识别导致缺陷产生的公共原因,并制定有关过程、技术和人员管理方面的改进措施。软件缺陷原因分析方法本章内容提要软件质量管理的基本概念软件质量控制缺陷预防质量体系软件项目质量管理计划第四节质量体系根据ISO9000标准,质量体系的定义是:为实施质量管理所需的组织结构、责任、工序、工作过程和资源。组织结构工序过程资源质量体系质量体系的特征一个企业的质量体系是企业质量管理的规范,是企业长期遵循和需要重复实施的标准。质量体系可参照一定的标准实施,例如CMM、ISO9000系列等。质量体系内容的核心是建立、执行和维护(改进)软件生产过程,以保证最终生产出的软件产品达到用户综合的质量要求。质量体系实例过程改进组织程序规范产品标准保证执