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