1、第8章 软件质量保证,软 件 工 程,第8章 软件质量保证,8.1 质量概念 8.2 质量运动 8.3 软件质量保证 8.4 软件评审 8.5 正式技术评审 8.6 SQA的形式化方法,8.7 统计软件质量保证 8.8 软件可靠性 8.9 软件的错误防范 8.10 ISO 9000质量标准 8.11 SQA计划 8.12 小结,软件质量保证 (SQA)包括:,(1)一种质量管理方法 (2)有效的软件工程技术(方法和工具) (3)在整个软件过程中采用的正式技术复审 (4)一种多层次的测试策略 (5)对软件文档及其修改的控制 (6)保证软件遵从软件开发标准的规程(在适用时) (7)度量和报告机制。
2、,8.1 质量概念,差异控制是质量控制的核心,8.1.1 质量,质量指可以度量的特征那些可以与已知标 准进行比较的东西。程序特征的度量属性包括:循环复杂度内聚力功能点代码行数,根据对象的可度量特征考察一个对象时,可 以有两种不同的质量: 设计质量 符合质量,用户满意度=合格产品+好的质量+在预算和进度表内支付,质量控制活动可以是全自动的、全人工的,也可 以是自动工具与人员交互的结合。质量控制中的 关键概念之一是所有工作产品都具有定义好的和 可度量的规约,我们可以将每个过程的产品与这 一规约进行比较。反馈循环的引入对于最小化产 生的缺陷至关重要。,8.1.2 质量控制,“质量保证”由管理层的审计
3、和报告功能构 成。质量保证的目标是为管理层提供为获 知产品质量信息所需的数据,从而获得产 品质量是否符合预定目标的认识和信心。,8.1.3 质量保证,质量成本包括所有由质量工作或者进行与质 量有关的活动所导致的成本 质量成本可以被划分为: 预防预防成本 鉴定成本 故障相关成本,8.1.4 质量的成本,预防成本包括: 质量计划 正式技术复审 测试设备 培训,鉴定成本包括: 过程内和过程间审查。 设备校准和维护。 测试。,故障成本包括: 内部故障成本: 返工。 修复。 失败模式分析。,外部故障成本: 解决客户的抱怨。 退换产品。 求助电话支持。 保修工作。,8.2 质量运动,全面质量管理4个步骤的
4、过程 “kaizen”,是指一个连续的过程改进系统“atarimae hinshitsu”,只能在kaizen完成之后才可启动。这一步将检查影响过程的无形因素,并优化这些因素对过程的影响,8.2 质量运动,全面质量管理4个步骤的过程: 3. “kansei”的步骤,关注产品的用户(这里的产品是指软件)。Kansei就是通过检查用户使用产品的方式,而导致产品本身的改进和(潜在地)改进产品的生产过程。 4. “miryokuteki hinshitsu”,它将管理者的注意力从当前的产品上移开并拓宽。这是一个面向商业的步骤。,软件质量定义: 明确声明的功能和性能需求、明确文档化 过的开发标准、以及专
5、业人员开发的软件 所应具有的所有隐含特征都得到满足。?,8.3 软件质量保证,为项目准备SQA计划 参与开发该项目的软件过程描述 复审各项软件工程活动、对其是否符合定义好的软件过程进行核实,8.3.2 SQA活动,审计指定的软件工作产品、对其是否符合定义好的软件过程中的相应部分进行核实 确保软件工作及工作产品中的偏差已被记录在案,并根据预定规程进行处理 记录所有不符合的部分,并报告给高级管理者,8.3.2 SQA活动,8.4 软件评审,1.指出一个人或小组生产的产品所需进行的改进 2.确定产品中不需要或者不希望改进的部分 3.得到与没有进行评审相比更加一致、或者至少更可预测的技术工作的质量,从
6、而使得技术工作更易于管理,8.5 正式技术评审,正式技术复审(FTR)是一种由软件工程师进行的软件质量保证活动。,FTR的目标是: (1)在软件的任何一种表示形式中发现功能、逻辑或实现的错误; (2)证实经过复审的软件的确满足需求; (3)保证软件的表示符合预定义的标准; (4)得到以一种一致的方式开发的软件; (5)使项目更易于管理。,8.5.1 评审会议,评审会议由评审主席、所有评审者和生产者参加。其中一个评审者作为“记录员”,负责记录在评审过程中发现的所有重要问题。,8.5.2 评审报告和记录保存,评审总结报告将回答以下问题: 1.评审什么? 2.由谁评审? 3. 发现了什么,结论是什么
7、?,8.5.3 评审知道原则,1.评审产品,而不是评审生产者 2.制定日程,并且遵守日程 3.限制争论和辩驳 4. 对各个问题都发表见解,但是不要试图解决所有记录的问题 5. 作书面笔记,8.5.3 评审知道原则,6.限制参与者人数,并坚持事先做准备 7.为每个可能要评审的工作产品建立一个检查表 8.为FTR分配资源和时间 9.对所有评审者进行有意义的培训 10. 评审以前所作的评审,8.6 SQA的形式化方法,软件质量是大家的工作,且通过完整的分析、设计、编码和测试,以及采用正式技术复审、多层次测试策略、对软件文档及其改变进行更好的控制、及广为接受的应用软件的开发标准,有可能获得软件的高质量
8、 。,8.7 统计软件质量保证,1.收集和分类软件缺陷信息; 2.尝试对每个缺陷的形成原因; 3.使用Pareto原则; 4.一旦找出少数重要的原因,就可以开始纠正引起缺陷的问题。,各个阶段的阶段指标PIi: PIi=Ws(Si/Ei)+Wm(Mi/Ei)+Wt(Ti/Ei) Ei=在软件工程过程中的第i步中发现的错误总数 Si=严重错误数 Mi=一般错误数 Ti=微小错误数 PS=第i步的产品规模 Ws、Wm、Wt分别是严重、一般、微小错误的加权因子,其推荐取值为Ws=10、Wm=3和Wt=1,错误指标Ei通过计算各个PIi的加权效果得到:EI=(iPIi)/PS=(PI1+2PI2+3PI
9、3 +iPIi)/PS,8.8 软件可靠性,软件可靠性可以使用历史数据和开发数据来测量、标示和估算出来,8.8.1 可靠性和可用性的度量,可靠性的简单度量是“平均失败间隔时间” (MTBF):MTBF=MTTF+MTTR MTTF-平均失败时间 MTTR-平均修复时间,软件可用性是指在某个给定时间点上程 序能够按照需求执行的概率可用性=MTTF/(MTTF+MTTR)100,软件的安全和危险分析主要是解决如何标 出潜在的危险(这些危险将负面影响软件系 统,并导致整个系统失败)和评估潜在的危 险可能对系统形成的负面影响和引起整个 系统完全瘫痪的可能性.,8.8.2 软件安全性,“质量保证系统”可
10、以被定义成用于实现质 量管理的组织结构、责任、规程、过程和 资源。 ISO 9000标准以一种能够适用于任 何行业(不论提供的是何种产品或服务)的 一般术语描述了质量保证的元素.,8.10 ISO 9000质量标准,ISO 9000以一般术语描述了一个质量 保证系统的元素。 这些要素包括用于实现质量计划、质 量控制、质量保证和质量改进所需的 组织结构、规程、过程和资源。,8.10.1 ISO对质量保证系统的方法,8.10.2 ISO 9001标准,ISO 9001是应用于软件工程的质量保证标准。这一 标准中包含了高效的质量保证系统必须体现的20条 需求。因为ISO 9001标准适用于所有的工程行业, 因此,为了在软件过程的使用中帮助解释该标准, 而专门开发了一个ISO指南的子集(即ISO 9000-3),8.11 SQA计划,SQA计划”建立软件质量保证提供了一张行路图。该计划由SQA小组和项目组共同制定,充当了每个软件项目中的SQA活动的模板,8.12 小结,软件质量保证就是将质量保证的管理对象和设计原则映射到适用的软件工程管理和技术空间上 质量保证的能力是成熟的工程学科的量尺 当上述映射成功实现时,其结果就是成熟的软件工程,