一部分软件质量与质量保障.ppt
第一部分软件质量与质量保障,本章内容:1 对软件测试和软件质量的思考一、当今社会对软件质量的高要求二、软件质量问题提出的严重挑战三、解决软件质量为题的途径2 软件质量与可靠性概念一、软件质量二、软件可靠性三、软件可靠性模型介绍3 软件质量度量一、软件质量度量框架二、IEEE软件度量方法学步骤简介4 软件质量保障体系介绍,1 对软件测试和软件质量的思考,一、当今社会对软件质量的高要求 1、计算机已无处不在,从生产到生活,从工厂到家庭,从工作到娱乐 制造业、农业 交通、通信、金融、保险、消防 商业、服务业、供电、供水、医疗卫生 行政管理、政务、公检法 航天、航空、科学研究、军事 教育、文化 2、在一些领域,软件逐步替代了硬件 典型例子:通信领域(20世纪90年代以来)通信企业都是软件企业 IC制造;数字模拟代替了物理实验;,替代优势:准确、快速、高效、成本低替代趋势:极为迅猛,用户使用低质量的软件,在运行过程中会产生各种各样的问题,可能带来不同程度的严重后果,轻者影响系统的正常工作,重者造成事故,损失生命财产。,软件:软件(software)是计算机中与硬件相结合的一部分,包括程序(program)和文档(document),1 对软件测试和软件质量的思考,3、对软件质量提出了全方位的要求 功能:愈来愈多、范围广 性能:愈来愈高,速度、响应、适应性 可靠性:稳定可靠 安全性:安全运行 4、关键软件(Critical software):关键软件:人员和公众的生命和安全 环境质量 数据和信息安全 关于 设备、设施、系统的正常运行 社会的正常秩序 关键软件的特点:规模庞大 大部分为实时、嵌入式 高可靠性 涉及国家政务、军事国防,1 对软件测试和软件质量的思考,二、严重的挑战软件质量问题 1、软件工程技术的发展长期落后于硬件 2、软件常常不能满足应用系统提出的需求 3、由于软件质量造成的事故屡见不鲜 用于F-16的导航软件中的错误使其在飞越赤道时引起飞机翻转;1981年,对航天飞机定时软件的极小改变引起发射失败;,1 对软件测试和软件质量的思考,4、用户对购买的软件质量不满,用户对软件质量满意度统计,1 对软件测试和软件质量的思考,5、解决软件质量问题的实际困难 开发过程和产品不可见 复杂 多变易变 难以量化控制 需求不明 人为因素 测试技术不理想,软件:是当前最复杂的脑力劳动,以个人劳动为基础的产品,合文化、心理、集体性有极大关系。,1 对软件测试和软件质量的思考,三、解决软件产品质量问题的途径从软件测试的角度 1、增强软件产品开发的质量意识,重视测试工作的组织 2、加强测试人员队伍的建设 软件质量和测试人员资格制度 加强培训:技术、管理 3、软件开发组织中建立独立的测试机构,体现独立测试原则 4、对整个软件开发过程实施规范化管理 产品质量取决于生产产品所采用过程的过程控制 ISO9000,CMM(软件过程成熟度)等 5、CMM对软件测试提出的要求(1)选取适用的测试支持工具(2)对软件工程技术人员进行软件测试及其它验证技术的培训(3)对完成的代码实时同行评审和单元测试(4)按项目定义的软件过程进行软件测试(5)按软件过程计划和执行集成测试、系统测试、验收测试(6)收集和分析测试中发现的缺陷数据 改正 6、CMM中软件质量保证、验证 评审和审核提出了更多的要求,制定和评审测试标准选用有效的测试方法做到测试的充分性建立和使用测试准备就绪准则实施回归测试对测试计划、测试规程、测试用例进行评审对测试计划、测试规程、测试用例进行管理对测试计划、测试规程、测试用例进行控制,软件测试是保证软件质量的最重要的手段,2 软件质量、软件可靠性概念,内容:1、软件质量2、软件可靠性概念3、软件可靠性模型介绍,2 软件质量与可靠性概念,一、软件质量:是贯穿软件生存期的一个极为重要的问题,使软件开发过程中所使用的各种开发技术和验证方法的最终体现。软件质量的定义:ANSI/IEEE std 729-1983定义软件质量为:与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体 可从三方面来理解:软件需求是衡量软件质量的基础,不符合需求的软件就不具备质量。规定了的标准是软件开发必须遵循的准则。如果已开发的软件已经满足了那些明文规定的需求,却没有满足那些隐含的需求,那么软件产品的质量仍然是有问题的。,2 软件质量与可靠性概念,二、软件可靠性 软件质量的一项重要指标 是指“在规定的条件下和规定的时间内,计算机程序完成规定功能(无故障运行)的概率”。什么是Bug:在英语中是“小虫子”的意思,现在泛指计算机中软件或硬件错误。Bug和Debug的由来:,Bug之多:微软Windows 98操作系统改正了windows 95 里面5000多个Bug,计算机中含有这么多Bug有一个技术原因:软件愈来愈庞大复杂在任何复杂的大系统中,错误是难免的,大型软件尤其难以按期完成国外统计:17万个项目(总投资2500亿美元)6%按期按预算完成;31%中途取消;61%最终完成,但都超出了预算和进度(一大半项目的实际花费超出预算达189%),Bug的确切定义:软件的Bug指的是软件中(程序和文档)不符合用户需求的问题,常见的软件Bug分成3中类型:(1)完全没有实现的功能(2)基本实现了用户需要的功能,但在运行时会出现一些功能和性能上的问题;(3)实现了用户不需要的功能,即多余功能。,2 软件质量与可靠性概念,衡量软件可靠性的简单指标:平均失败间隔时间MTBF 指两次此相邻失效时间间隔的平均。MTBF=MTTF(平均无故障时间)+MTTR(平均修复时间)MTTF(平均无故障时间):指当前时间(有效)到下一次失败的时间平均MTTR(平均修复时间):指从一次故障产生到故障恢复的时间平均MTTF(平均故障时间)MTTR(平均修复时间 平均失败间隔时间MTBF,2 软件质量与可靠性概念,R可靠度:在规定时间内无失效发生的概率。设规定时间为t0,软件发生失效的时间是,R(t0)=P(t0).MTTF即为在时间0-无穷内对R(t0)的积分。,2 软件质量与可靠性概念,由来:通过拥有一个软件可靠性如何随着时间的变化而变化的健壮的模型,使得管理部门能够通过收集软件确认测试中的数据,制订一个可靠性目标,并跟踪目标实现的过程。目的:能够用平均故障时间(MTTF)测量和预测软件可靠性确定最佳停止测试和发布软件的时间为权衡测试时间、可靠性、费用和性能指标提供数据定义符合实际的软件可靠性指标,三、软件可靠性模型介绍,2 软件质量与可靠性概念,软件可靠性模型目前有40多种(常用10多种)可靠性建模是可靠性估计过程的基础,它确定产品是否达到了可靠性指标,是否可以发行。目前比较流行的有:Jelinski-Moranda的故障分离模型 Goel-Okumoto的NHPP模型非齐次泊松过程模型黑盒测试:Musa的基本执行时间模型 增强的NHPP模型(广义泊松模型)Littlewood-Verrall的贝叶斯判定模型 Krishna-murthy和Mathur的基于路径的模型白盒测试 Gokhala et al.的基于状态的模型,3 软件质量度量,有许多因素影响软件质量 可直接度量的因素 把影响软件质量 的因素分为两类 只能间接度量的因素 不管哪一类,必须能够度量,构成了软件质量度量体系。IEEE有关软件质量度量方法学的标准1061-1998,一、软件质量度量框架,软件质量度量框架:一组用来组织、选择、沟通、评价软件系统要求的质量属性的辅助决策法,他逐层分解为特性、子特性和度量。质量特性:一个与质量有关的面向管理的软件属性;质量子特性:质量特性分解出来的技术组件直接度量:一种不依赖于其他属性测量的度量;预计度量:一种适用于开发阶段的度量,它用来预计软件质量特性的值;软件质量度量:一个函数,它的输入是软件数据,输出是一个单一数值,它可解释为给定的软件属性对其质量的影响程度;过程度量:一种用来测量在软件系统开发、实现和维护过程中使用的方法、技术和工具特性的度量产品度量:一种用来测量软件开发过程中任何中间或最终产品特性的度量。,软件质量度量框架,与质量需求相关联的质量特性,与质量特性相关联的质量子特性,直接度量例子,二、IEEE软件度量方法学步骤,确定软件质量需求确定软件质量度量实施软件质量度量分析软件质量度量确认软件质量度量,直接度量文档,分析软件质量度量结果,在数据收集过程中,要根据工程总的软件质量需求对度量结果进行分析。要识别出哪些与目标值不一致的度量以便做进一步的分析。根据分析结果,有些可能需要重新设计或者记录,有些可能需要对文档进行补充,有些可能需要做一些补充测试。在某些情况下,若度量值只稍微超出目标值,并且认为是非关键度量,也可不做改动。,Grady和Caswell在HP公司实施软件度量程序的10个步骤,定义软件度量程序的目标明确责任开展调查定义要收集的初始度量推荐这些度量的初始样本获取用于自动数据收集和分析的工具进行软件度量培训宣传成功事例建立度量数据库以有序方式建立一个改进此过程的方法,三、验证度量,复杂度度量缺陷度量产品度量过程度量,度量-复杂度,复杂度是与质量子特性正确性和质量特性可维护性相关联的一个直接项测量,通过对本组织编制的源程序代码做大范围的复杂度抽样测试,就可以建立一个复杂度基线,可以用来确定:代码审查的候选模块 对哪一部分进行重新设计可能是恰当的?需要附加文档的部分 可能附加测试的部分,度量-复杂度-方法,McCabe圈(环)复杂度度量 使用程序控制流程结构作为其复杂度相对的测量 圈复杂度E-N+2P E=边的个数(或控制转移次数)P转入程序中的控制路径个数 N=节点个数(顺序语句组只包含一个控制转移),度量-复杂度-方法,Halstead的软件科学 基于程序大小测量程序复杂度的算法 1=程序中不同操作符的个数 2=程序中不同操作数的个数 3=程序中操作符出现的总数 4=程序中操作数出现的总数 程序词汇量:=1+2,度量-缺陷度量,缺陷度量是通过收集审查总结报告而得到。根据缺陷类型(即逻辑、接口、数据定义、文档)、缺陷改进起因和缺陷严重性对这些度量进行分类,将能够确定软件开发过程中需要改进的地方。通过对模块进行缺陷跟踪,缺陷度量有助于软件验证和确认活动,它能够发现需要重新设计或者做附加测试的候选模块,也能够潜在识别哪些需要在软件工程实践方面需要进一步培训的软件工程师。,度量-产品度量,产品度量是测量,这些测量代表了组织已开发出的产品的情况。例子:在需求、设计、编码和测试审查阶段发现的缺陷的类型和数量;交付的文档页数新增代码的行数修改的代码行数交付的代码总行数交付的所有模块的平均复杂度模块的平均大小模块的总数单元测试发现的缺陷总数集成测试发现的缺陷总数确认测试发现的缺陷总数,度量过程度量,过程度量反映过程的效率。例子:平均查找修改时间每一次审查花费的人/小时数每KLOC花费的人/小时数每一次审查发现的平均缺陷数在审查期间发现的每一类缺陷的个数平均修改次数被审查模块的平均数,制定度量计划,测量应是健全的;测量应建议一个基准测量应涉及特定的产品和过程属性;测量应建议一个改进策略测量应是软件开发过程固有的结果测量应简单测量应可预测和可跟踪测量不应该用来作为评价个人实绩的一部分。,四、确认度量,时间测量测试覆盖测量质量度量,时间测量,查错修改周期测量累积测试时间,测试覆盖度量,代码覆盖段覆盖调用对需求覆盖,质量度量,缺陷改正百分比每一个基线报告的缺陷缺陷检测效率,五、小结,度量软件质量度量测量符合基本的软件质量改进原则,测量能够作为一个杠杆推动软件过程的改进,然而,除非以建立了积极的质量改进计划和目标,否则不会发生任何改进,重要的是,这些改变必须量化;区分“变化”和“改进”是非常重要的。改进是基于测量而言的,而变化是基于感觉而言的,只有通过测量,你才能知道一个“变化”变成了一个“改进”。测试确认的测量是改进这些活动有效性的基础,这些测量应该用来帮助确定过程改进,进而提高确认测试投资的回报。,4 软件质量保障体系,1、SQA计划2、ISO9000质量保证体系3、CMM模型简介4、小结,一、SQA计划(1),由SQA小组和项目组共同制定的“SQA计划”为建立软件质量保证提供了“行动指南”,规定了每个软件项目中的SQA活动的模式。,一、SQA计划(2),二、ISO9000质量保证体系(1),ISO 9000以一般术语描述了一个质量保证系统的要素 这些要素包括用于实现质量计划、质量控制、质量保证和质量改进所需的组织结构、规程、过程和资源。,二、ISO9000质量保证体系,1、概述 ISO9000质量标准是一种广泛采用的国际标准,它是由国际标准化组织(International Standards Organization,ISO制定);ISO9000质量标准受英国质量标准(BS 5770)的影响,最早发布在1987年,在1994年修订;ISO9000质量标准可以应用于各类行业,包括制造业、软件业和服务业;ISO9000质量标准被认为是一个重视质量的组织应该满足的一种最低限度的标准,很多组织要求其转包商(subcontractor)通过ISO9000认证。ISO9000质量标准的最新修订版是ISO9000:2000,是对1994版的一次重大的提高,它把重点放在客户满意度和持续改进上,并包括一个过程模型。ISO9000质量标准的1994版强调定义工作规程,而新标准则强调过程。,二、ISO9000质量保证体系,2、ISO9000的动机 提高公司信誉 ISO9000认证带来的销售利益 表明客户满意度和质量是公司的核心价值 表明公司致力于持续改进 表明公司在产品开发中的质量计划 生产出更高质量的软件 标明“防火”文化是适当的,而不是“救火”文化 重点是从问题中吸取教训 一个更有能力和更有效的组织 更为忠实的客户 保护公司免遭起诉。ISO9000提供了一个改进架构或改进模型。减少有缺陷产品的返工机会 诗作之内的士气提高,记录在案的ISO9000要求提供了证明公司已经采取了所有合理的措施的证据,二、ISO9000质量保证体系,3、ISO9000和质量组 ISO9000标准把责任放在管理人员和员工身上,质量组在标准的实施中通常起着关键的作用。软件质量保证组(Software Quality Assurance,SQA)的职责,二、ISO9000质量保证体系,4、ISO9000:1994版 ISO9000:1994版标准由一组标准和如何应用这些标准的方针组成,应用于制造业、服务业和软件业。ISO9000标准的集合,二、ISO9000质量保证体系,ISO9001:1994 版的条款20项条款管理责任;质量系统;合同复审;设计控制;文档和数据控制;采购;对客户提供的产品的控制;产品标识和可跟踪性;,二、ISO9000质量保证体系,过程控制;审查和测试;审查、度量和测试设备的控制;审查和测试状态;对不符合标准产品的控制;改正和预防行动;处理、存储、包装、保存和交付;,二、ISO9000质量保证体系,质量记录的控制;内部质量审计;培训;服务;统计技术,二、ISO9000质量保证体系,5、ISO9000:2000版 ISO9000:2000标准比1994版的标准简单,它只有3个标准:即ISO9000:2000,ISO9001:2000,ISO9004:2000.(1)ISO9000标准包括质量管理体系的基本原则和词汇表。(2)ISO9001标准规定了质量管理体系的要求,它应用于制造业、软件业和服务业。标准中有一个定义好的简单过程模型,重点是度量、持续改进和客户满意度。(3)ISO9000位性能改进提供了一个指南,并有助于组织实施这个标准。他包括一个简单的自我评估方法,允许组织通过这个方法来测定它针对这个标准的当前成熟度。,二、ISO9000质量保证体系,ISO9000:2000标准条款 和1994版有20个条款相比,2000版只有5个条款。标准更友好、更具逻辑性。ISO 9000:2000标准,三、CMM模型简介,CMM是软件过程能力成熟度模型(Capability Maturity Model)的简称,是卡内基梅隆大学软件工程研究院(SEI)为了满足美国联邦政府评估软件供应商能力的要求,于1986年开始研究的模型,并于1991年正式推出了CMM 1.0 版。1986年11月,SEI应美国联邦政府的要求,在Mitre公司的协助下,于1991年总结了CMM成熟度框架和初版成熟度问卷的实践经验,并以此为基础推出民用CMM1.0版。1992年4月SEI在广泛听取200名富有经验的软件专家的意见之后,又于1993年推出CMM1.1版。这也是目前世界上比较流行和通用的CMM版本。(1.2版),4 小结,SQA计划ISO9000质量保证体系CMM模型简介,