《【教学课件】第8章软件质量保证.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第8章软件质量保证.ppt(102页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第8 8章章 软件质量保证软件质量保证n n8.18.1软件质量软件质量软件质量软件质量n n8.28.2质量运动质量运动质量运动质量运动n n8.38.3软件质量保证软件质量保证软件质量保证软件质量保证n n8.48.4软件评审软件评审软件评审软件评审n n8.58.5正式技术评审正式技术评审正式技术评审正式技术评审n n8.6SQA8.6SQA的形式化方法的形式化方法的形式化方法的形式化方法n n8.78.7统计软件质量保证统计软件质量保证统计软件质量保证统计软件质量保证n n8.88.8软件可靠性软件可靠性软件可靠性软件可靠性n n8.98.9软件的错误防范软件的错误防范软件的错误防范
2、软件的错误防范n n8.10ISO90008.10ISO9000质量标准质量标准质量标准质量标准n n8.11SQA8.11SQA计划计划计划计划n“软件质量保证软件质量保证”(SQA)是一种应用于整个软件过)是一种应用于整个软件过程的庇护性活动。程的庇护性活动。SQA包含:包含:(1)一种质量管理方法;)一种质量管理方法;(2)有效的软件工程技术(方法和工具);)有效的软件工程技术(方法和工具);(3)在整个软件过程中采用的正式技术复审;)在整个软件过程中采用的正式技术复审;(4)一种多层次的测试策略)一种多层次的测试策略;(5)对软件文档及其修改的控制;)对软件文档及其修改的控制;(6)保
3、证软件遵从软件开发标准的规程(在适用时);)保证软件遵从软件开发标准的规程(在适用时);(7)测量和报告机制)测量和报告机制。n本章将集中讨论为支持软件组织本章将集中讨论为支持软件组织“在正确的时间、在正确的时间、以正确的方式、做正确的事情以正确的方式、做正确的事情”的相关管理问题的相关管理问题和特定过程活动。和特定过程活动。8.1质量概念质量概念 Quality Conceptsn美国传统字典(美国传统字典(AmericanHeritageDictionary)中对质量的定义是:)中对质量的定义是:“某一事物某一事物的特征或属性的特征或属性”。n作为一个事物的属性,质量指的是可以度量的作为一
4、个事物的属性,质量指的是可以度量的特征特征那些可以与已知标准进行比较的东西,那些可以与已知标准进行比较的东西,如长度、颜色、电的性质、可延展性等等。如长度、颜色、电的性质、可延展性等等。n但是软件,很大程度上是一种但是软件,很大程度上是一种知识实体知识实体,其特,其特征的定义远比物理对象要困难得多。征的定义远比物理对象要困难得多。n nANSI/IEEE Std 729-1983定义软件定义软件质量为质量为“与软件产品满足规定的和与软件产品满足规定的和隐含的需求的能力有关的特征或特隐含的需求的能力有关的特征或特性的全体性的全体”。n nM.J.Fisher 定义软件质量为定义软件质量为“所有所
5、有描述计算机软件优秀程度的特性的描述计算机软件优秀程度的特性的组合组合”。n程序特征的度量的确存在程序特征的度量的确存在。这样的属性包括。这样的属性包括循环循环复杂度、内聚、功能点、代码行数复杂度、内聚、功能点、代码行数和其他许多属和其他许多属性。在根据对象的可度量特征考察一个对象时,性。在根据对象的可度量特征考察一个对象时,可以有以下两种不同的质量:可以有以下两种不同的质量:设计质量和符合质设计质量和符合质量。量。n设计质量设计质量:是指设计者为一件产品规定的特征。:是指设计者为一件产品规定的特征。材料等级、耐久性、及性能的规约都属于设计质材料等级、耐久性、及性能的规约都属于设计质量。量。n
6、当规定使用更高级别的材料、要求达到更强的耐当规定使用更高级别的材料、要求达到更强的耐久性和更高层次的性能时,如果产品能够依照规久性和更高层次的性能时,如果产品能够依照规约进行制造,则产品的设计质量便会提高。约进行制造,则产品的设计质量便会提高。n符合质量符合质量:是指在制造过程中符合设计规格的:是指在制造过程中符合设计规格的程度。同样,符合程度越高,符合质量也就越程度。同样,符合程度越高,符合质量也就越高。高。n在软件开发时,在软件开发时,设计质量设计质量包括系统的需求、规包括系统的需求、规约和设计。约和设计。符合质量符合质量则主要关注实现问题。如则主要关注实现问题。如果实现符合设计、得到的系
7、统满足系统需求和果实现符合设计、得到的系统满足系统需求和性能目标,则符合质量较高。性能目标,则符合质量较高。软件质量特性软件质量特性n n软件质量特性,反映了软件的本质软件质量特性,反映了软件的本质。讨论一个软件的质量,问题最终要讨论一个软件的质量,问题最终要归结到定义软件的质量特性。归结到定义软件的质量特性。n n定义一个软件的质量,就等价于为定义一个软件的质量,就等价于为该软件定义一系列质量特性。该软件定义一系列质量特性。n n人们通常把影响软件质量的特性用人们通常把影响软件质量的特性用软件质量模型来描述软件质量模型来描述。软件质量模型软件质量模型n n软件质量特性定义成软件质量特性定义成
8、分层模型。分层模型。n n最基本的叫做最基本的叫做基本质量特性基本质量特性,它可,它可以由一些子质量特性定义和度量。以由一些子质量特性定义和度量。n n二次特性二次特性在必要时又可由它的一些在必要时又可由它的一些子质量特性定义和度量。子质量特性定义和度量。Boehm质量模型质量模型ISO的软件质量评价模型的软件质量评价模型n n按照按照按照按照ISO/TC97/SC7/WG3/1985-1-30/N382ISO/TC97/SC7/WG3/1985-1-30/N382,软件质量度量模型由三层组成:软件质量度量模型由三层组成:软件质量度量模型由三层组成:软件质量度量模型由三层组成:软件质量需求评价
9、准则软件质量需求评价准则软件质量需求评价准则软件质量需求评价准则(SQRCSQRC)软件质量设计评价准则软件质量设计评价准则软件质量设计评价准则软件质量设计评价准则(SQDCSQDC)软件质量度量评价准则软件质量度量评价准则软件质量度量评价准则软件质量度量评价准则(SQMCSQMC)n n高层和中层建立国际标准,低层可由各使用高层和中层建立国际标准,低层可由各使用高层和中层建立国际标准,低层可由各使用高层和中层建立国际标准,低层可由各使用单位视实际情况制定单位视实际情况制定单位视实际情况制定单位视实际情况制定1991年年 ISO质质量量特特性性国国际际标标准准(ISO/IEC9126)n n质
10、量特性:质量特性:质量特性:质量特性:功能性功能性功能性功能性、可靠性可靠性可靠性可靠性、可维护性可维护性可维护性可维护性、效效效效率率率率、可使用性可使用性可使用性可使用性、可移植性可移植性可移植性可移植性n n推荐推荐推荐推荐2121个子特性:适合性个子特性:适合性个子特性:适合性个子特性:适合性 准确性准确性准确性准确性 互用性互用性互用性互用性 依依依依从性从性从性从性 安全性安全性安全性安全性 成熟性成熟性成熟性成熟性 容错性容错性容错性容错性 可恢复性可恢复性可恢复性可恢复性 可可可可理解性理解性理解性理解性 易学习性易学习性易学习性易学习性 操作性操作性操作性操作性 时间特性时间
11、特性时间特性时间特性 资源资源资源资源特性特性特性特性 可分析性可分析性可分析性可分析性 稳定性稳定性稳定性稳定性 可变更性可变更性可变更性可变更性 可测试可测试可测试可测试性性性性 可安装性可安装性可安装性可安装性 可替换性可替换性可替换性可替换性 适应性适应性适应性适应性 一致性一致性一致性一致性 质量控制质量控制 Quality Controln差异控制可以等同于质量控制差异控制可以等同于质量控制。n“质量控制质量控制”是为了保证每一件工作产品都满是为了保证每一件工作产品都满足对它的需求而应用于整个开发周期中的一系足对它的需求而应用于整个开发周期中的一系列审查、复审和测试。列审查、复审和
12、测试。n质量控制在创建工作产品的过程中包含一个反质量控制在创建工作产品的过程中包含一个反馈循环。度量和反馈相结合,使得我们能够在馈循环。度量和反馈相结合,使得我们能够在得到的工作产品不能满足其规约时调整开发过得到的工作产品不能满足其规约时调整开发过程。这种方法将质量控制视为整个制造过程的程。这种方法将质量控制视为整个制造过程的一部分。一部分。n质量控制活动可以是全自动的、全人工的,也可质量控制活动可以是全自动的、全人工的,也可以是自动工具与人员交互的结合。质量控制中的以是自动工具与人员交互的结合。质量控制中的关键概念之一是所有工作产品都具有定义好的和关键概念之一是所有工作产品都具有定义好的和可
13、度量的规约,我们可以将每个过程的产品与这可度量的规约,我们可以将每个过程的产品与这一规约进行比较。反馈循环的引入对于最小化产一规约进行比较。反馈循环的引入对于最小化产生的缺陷至关重要。生的缺陷至关重要。n“质量保证质量保证”由管理层的审计和报告功能构成。由管理层的审计和报告功能构成。质量保证的目标是为管理层提供为获知产品质量质量保证的目标是为管理层提供为获知产品质量信息所需的数据,从而获得产品质量是否符合预信息所需的数据,从而获得产品质量是否符合预定目标的认识和信心。当然如果质量保证所提供定目标的认识和信心。当然如果质量保证所提供的数据发现了问题,则管理层负责解决这一问题的数据发现了问题,则管
14、理层负责解决这一问题并为解决质量问题分配所需的资源。并为解决质量问题分配所需的资源。质量的成本质量的成本 Cost of Qualityn质量成本包括所有由质量工作或者进行与质量有关质量成本包括所有由质量工作或者进行与质量有关的活动所导致的成本。质量成本研究的开展能够为的活动所导致的成本。质量成本研究的开展能够为当前质量成本设定基线,标识降低质量成本的机会,当前质量成本设定基线,标识降低质量成本的机会,并提供一种规范化的比较基础。规范化的基础几乎并提供一种规范化的比较基础。规范化的基础几乎全都以全都以“元元”(钱)计算。一旦我们将质量成本以(钱)计算。一旦我们将质量成本以“元元”为单位进行了规
15、范化,我们就拥有了必要的为单位进行了规范化,我们就拥有了必要的数据以评估能够在何处改进现有过程。而且,还可数据以评估能够在何处改进现有过程。而且,还可以进一步评估那些基于以进一步评估那些基于“元元”的项在改变时所产生的项在改变时所产生的影响。的影响。n质量成本可以被划分为与预防、鉴定及失败相质量成本可以被划分为与预防、鉴定及失败相关的成本。关的成本。“预防成本预防成本”包括:包括:*质量计划质量计划*正式技术复审正式技术复审*测试设备测试设备*培训培训 n“鉴定成本鉴定成本”包括为深入了解包括为深入了解“首次通过首次通过”各个过程时产品的状态而开展的那些活动。各个过程时产品的状态而开展的那些活
16、动。鉴定成本的例子如下:鉴定成本的例子如下:*过程内和过程间审查过程内和过程间审查*设备校准和维护设备校准和维护*测试测试 n“失败成本失败成本”是指如果在将产品交付给客户之是指如果在将产品交付给客户之前已经消除了缺陷时就不会存在的成本。失败前已经消除了缺陷时就不会存在的成本。失败成本可以进一步划分为内部失败成本和外部失成本可以进一步划分为内部失败成本和外部失败成本。败成本。“内部失败成本内部失败成本”是指在产品交付之是指在产品交付之前发现错误而引发的成本。内部失败成本包括:前发现错误而引发的成本。内部失败成本包括:*返工返工*修复修复*失败模式分析失败模式分析 n“外部失败成本外部失败成本”
17、是指与产品交付给客是指与产品交付给客户之后所发现的缺陷相关的成本。外部户之后所发现的缺陷相关的成本。外部失败成本的例子如下:失败成本的例子如下:*解决客户的抱怨解决客户的抱怨*退换产品退换产品*求助电话支持求助电话支持*保修工作保修工作 n正如我们所预料的,发现和修改一个缺陷的相正如我们所预料的,发现和修改一个缺陷的相对成本将随着我们从预防到检测、到从内部失对成本将随着我们从预防到检测、到从内部失败及到外部失败的成本而急剧增加。根据败及到外部失败的成本而急剧增加。根据Boehm所收集的数据,阐述了这一现象。所收集的数据,阐述了这一现象。nADVICE:测试是必要的,但是,它也是一种测试是必要的
18、,但是,它也是一种非常昂贵的发现错误的方式非常昂贵的发现错误的方式。在过程的早期花。在过程的早期花时间发现错误,你可能能够大量地减少测试和时间发现错误,你可能能够大量地减少测试和调试成本。调试成本。8.2 质量运动质量运动 The Quality Movementn质量运动始于本世纪质量运动始于本世纪40年代年代W.EdwardsDeming的开创性工作,第一次真正的实验则是在日本进的开创性工作,第一次真正的实验则是在日本进行的。以行的。以Deming的想法为基础,日本人开发了一的想法为基础,日本人开发了一种系统化的方法来从根本上消除造成产品缺陷的种系统化的方法来从根本上消除造成产品缺陷的原因
19、。从原因。从70年代到年代到80代,他们的工作被移植到西代,他们的工作被移植到西方,有时被称作方,有时被称作“全面质量管理(全面质量管理(TQM)”。n尽管不同公司和不同作者那里的术语略有不同,尽管不同公司和不同作者那里的术语略有不同,但通常采用的都是但通常采用的都是4个步骤的过程个步骤的过程,该过程构成了,该过程构成了任何一个好的任何一个好的TQM项目的基础。项目的基础。n第一步第一步是指是指一个连续的过程改进系统一个连续的过程改进系统。目标是开。目标是开发一个可见的、可重复的和可度量的过程(在这发一个可见的、可重复的和可度量的过程(在这里是指软件过程)。里是指软件过程)。n第二步第二步将将
20、检查影响过程的无形因素,并对这些因检查影响过程的无形因素,并对这些因素对过程的影响进行优化素对过程的影响进行优化。例如例如,软件过程可能受到高层职员流动的影响,软件过程可能受到高层职员流动的影响,而这本身又是由公司内部不断重组而引起的。因而这本身又是由公司内部不断重组而引起的。因此一个稳定的公司组织可能会对软件质量的提高此一个稳定的公司组织可能会对软件质量的提高有很大的帮助。可以帮助管理者对公司重组方式有很大的帮助。可以帮助管理者对公司重组方式提出建议。提出建议。n第三步第三步:关注:关注产品的用户产品的用户(这里的产品是指软件)(这里的产品是指软件)。通过检查用户使用产品的方式,对产品本身及
21、。通过检查用户使用产品的方式,对产品本身及产品的生产过程进行改进。产品的生产过程进行改进。n最后一个步骤最后一个步骤将管理者的注意力从当前的产品上将管理者的注意力从当前的产品上拓宽。通过观察产品在市场上的用途,寻找产品拓宽。通过观察产品在市场上的用途,寻找产品在相关领域中的发展机会。在相关领域中的发展机会。8.3 软件质量保证软件质量保证 Software Quality Assurancen软件质量软件质量的定义:的定义:对显式声明的功能和性能需求、显式文档化对显式声明的功能和性能需求、显式文档化的开发标准、以及专业人员开发的软件所应具的开发标准、以及专业人员开发的软件所应具有的所有隐含特征
22、的符合有的所有隐含特征的符合。上述定义强调了以下三个重要方面:上述定义强调了以下三个重要方面:1.软件需求是进行软件需求是进行“质量质量”测量的基础。与需求测量的基础。与需求不符就是质量不高。不符就是质量不高。2.指定的标准定义了一组指导软件开发的准则。指定的标准定义了一组指导软件开发的准则。如果不能遵照这些准则,就极有可能导致质量如果不能遵照这些准则,就极有可能导致质量不高。不高。3.通常有一组通常有一组“隐含需求隐含需求”是不被提及的(如对是不被提及的(如对易维护性的需求)。如果软件符合了显式的需易维护性的需求)。如果软件符合了显式的需求却没有满足隐含需求,软件质量仍然值得怀求却没有满足隐
23、含需求,软件质量仍然值得怀疑疑。SQA活动活动 n软件质量保证由各种任务构成,这些任务分别与软件质量保证由各种任务构成,这些任务分别与两种不同的参与者相关两种不同的参与者相关做技术工作的软件工做技术工作的软件工程师和负责质量保证的计划、监督、记录、分析程师和负责质量保证的计划、监督、记录、分析及报告工作的及报告工作的SQA小组。小组。n软件工程师通过采用可靠的技术方法和措施、进软件工程师通过采用可靠的技术方法和措施、进行正式的技术复审、执行计划周密的软件测试来行正式的技术复审、执行计划周密的软件测试来考虑质量问题(并完成软件质量保证和质量控制考虑质量问题(并完成软件质量保证和质量控制活动)。活
24、动)。nSQASQA小组的职责是辅助软件工程小组得到高质量小组的职责是辅助软件工程小组得到高质量的最终产品。软件工程研究所的最终产品。软件工程研究所SEISEI推荐了一组有推荐了一组有关质量保证中的计划、监督、记录、分析及报关质量保证中的计划、监督、记录、分析及报告的告的SQASQA活动。这些活动将由一个独立的活动。这些活动将由一个独立的SQASQA小小组执行(或协助)。组执行(或协助)。n为项目准备为项目准备SQASQA计划计划:该计划在制定项目计划时:该计划在制定项目计划时制定,由所有感兴趣的相关部门复审。该计划制定,由所有感兴趣的相关部门复审。该计划将控制由软件工程小组和将控制由软件工程
25、小组和SQASQA小组执行的质量保小组执行的质量保证活动。证活动。在计划中要标识以下几点在计划中要标识以下几点:*需要进行的评价需要进行的评价*需要进行的审计和复审需要进行的审计和复审*项目可采用的标准项目可采用的标准*错误报告和跟踪的规程错误报告和跟踪的规程*由由SQA小组产生的文档小组产生的文档*为软件项目组提供的反馈数量为软件项目组提供的反馈数量 n参与开发该项目的软件过程描述参与开发该项目的软件过程描述软件工程小软件工程小组为要进行的工作选择一个过程。组为要进行的工作选择一个过程。SQA小组将描小组将描述复审过程以保证该过程与组织政策、内部软件述复审过程以保证该过程与组织政策、内部软件
26、标准、外界所订标准(如标准、外界所订标准(如ISO9001)以及软件项)以及软件项目计划的其他部分相符目计划的其他部分相符。n复审各项软件工程活动、对其是否符合定义好的复审各项软件工程活动、对其是否符合定义好的软件过程进行核实软件过程进行核实SQA小组识别、记录和跟踪小组识别、记录和跟踪与过程的偏差,并对是否已经改正进行核实。与过程的偏差,并对是否已经改正进行核实。n审计指定的软件工作产品、对其是否符合定义好审计指定的软件工作产品、对其是否符合定义好的软件过程中的相应部分进行核实的软件过程中的相应部分进行核实SQA小组对小组对选出的产品进行复审;识别、记录和跟踪出现的选出的产品进行复审;识别、
27、记录和跟踪出现的偏差、对是否已经改正进行核实、定期将工作结偏差、对是否已经改正进行核实、定期将工作结果向项目管理者报告。果向项目管理者报告。n确保软件工作及工作产品中的偏差已被记录在案并根确保软件工作及工作产品中的偏差已被记录在案并根据预定规程进行处理据预定规程进行处理偏差可能出现在项目计划、偏差可能出现在项目计划、过程描述、采用的标准或技术工作产品中。过程描述、采用的标准或技术工作产品中。n记录所有不符合的部分并报告给高级管理者记录所有不符合的部分并报告给高级管理者不符不符合的部分将受到跟踪直至问题得到解决。合的部分将受到跟踪直至问题得到解决。除进行上述活动之外,除进行上述活动之外,SQA小
28、组还需要协调变化的控小组还需要协调变化的控制和管理,并帮助收集和分析软件度量信息。制和管理,并帮助收集和分析软件度量信息。8.4 软件复审软件复审 Software Reviewsn软件复审是软件工程过程中的软件复审是软件工程过程中的“过滤器过滤器”。复。复审被用于软件开发过程中的多个不同的点上,审被用于软件开发过程中的多个不同的点上,起到发现错误(进而引发排错活动)的作用。起到发现错误(进而引发排错活动)的作用。软件复审起到的作用是软件复审起到的作用是“净化净化”分析、设计和分析、设计和编码中所产生的软件工作产品。编码中所产生的软件工作产品。Freedman和和Weinberg在中对复审的讨
29、论如下:在中对复审的讨论如下:n技术工作需要复审的理由就象铅笔需要橡皮技术工作需要复审的理由就象铅笔需要橡皮“人非圣贤,孰能无过人非圣贤,孰能无过”。我们需要复审。我们需要复审的第二个理由是:尽管人善于发现自己的某些的第二个理由是:尽管人善于发现自己的某些错误,但是犯错误的人自己对许多种错误的发错误,但是犯错误的人自己对许多种错误的发现能力远小于其他的人。现能力远小于其他的人。复审复审(任何复审)均是一种借助一组人(任何复审)均是一种借助一组人的差异性来:的差异性来:(1)指出一个人或小组生产的产品所需进行的改进;指出一个人或小组生产的产品所需进行的改进;(2)确定产品中不需要或者不希望改进的
30、部分;确定产品中不需要或者不希望改进的部分;(3)得到与没有进行复审相比更加一致、或者至少更得到与没有进行复审相比更加一致、或者至少更可预测的技术工作的质量,从而使得技术工作更易可预测的技术工作的质量,从而使得技术工作更易于管理。于管理。在软件工程过程中可以进行的复审有许多种,它们各有用在软件工程过程中可以进行的复审有许多种,它们各有用处。处。n在饭桌上讨论技术问题的非正式会议是一种复审;在饭桌上讨论技术问题的非正式会议是一种复审;n将软件设计正式介绍给客户、管理层和技术人员也是一种将软件设计正式介绍给客户、管理层和技术人员也是一种复审方式。复审方式。n正式的技术复审正式的技术复审:有时称为有
31、时称为“走查走查”(Walkthrough)或)或检查(检查(Inspection)。)。从质量保证的角度出发,正式的技术复审是最有效的过滤从质量保证的角度出发,正式的技术复审是最有效的过滤器。由软件工程师(或其他人)对软件工程师进行的正式器。由软件工程师(或其他人)对软件工程师进行的正式技术复审(技术复审(FTR)是一种提高软件质量的有效方法。)是一种提高软件质量的有效方法。软件缺陷对成本的影响软件缺陷对成本的影响Cost Impact of Software Defects n在软件过程范围中,术语在软件过程范围中,术语“缺陷缺陷”和和“故障故障”是是同义词。它们都表示在软件交付给最终用户
32、之后同义词。它们都表示在软件交付给最终用户之后发现的质量问题。发现的质量问题。n正式技术复审的主要目标是在此过程中发现错误,正式技术复审的主要目标是在此过程中发现错误,以便使的它们不会在软件发布之后变成缺陷。正以便使的它们不会在软件发布之后变成缺陷。正式技术复审的明显优点是较早发现错误,防止错式技术复审的明显优点是较早发现错误,防止错误被传播到软件过程的后续阶段。误被传播到软件过程的后续阶段。n产业界的大量研究(产业界的大量研究(TRW、NipponElectric和和MitreCorp.以及其他公司)表明以及其他公司)表明设计活动引入的设计活动引入的错误占软件过程中出现的所有错误(和最终的缺
33、错误占软件过程中出现的所有错误(和最终的缺陷)数量的陷)数量的50到到65。n而现有研究表明而现有研究表明正式技术复审在发现设计错误方正式技术复审在发现设计错误方面最高达到面最高达到75的有效性的有效性。通过检测和排除大量。通过检测和排除大量设计错误,复审过程将极大降低后续开发和维护设计错误,复审过程将极大降低后续开发和维护阶段的成本。阶段的成本。n为了说明尽早发现错误对成本的影响,我们将根为了说明尽早发现错误对成本的影响,我们将根据从大型软件项目中收集的实际数据研究一系列据从大型软件项目中收集的实际数据研究一系列的相对成本。的相对成本。n假定在假定在设计阶段发现的错误的改正成本为设计阶段发现
34、的错误的改正成本为1.0个个货币单位,在货币单位,在测试开始之前发现一个错误的改正测试开始之前发现一个错误的改正成本为成本为6.5个货币单位,在个货币单位,在测试时发现一个错误测试时发现一个错误的改正成本为的改正成本为15个货币单位,而在个货币单位,而在发布之后发现发布之后发现一个错误的改正成本为一个错误的改正成本为60到到100个货币单位。个货币单位。缺陷的放大和消除缺陷的放大和消除Defect Amplification and Removal n可以用可以用“缺陷放大模型缺陷放大模型”IBM81来说明在软件工程过程中来说明在软件工程过程中的概要设计、详细设计和编码阶段中错误的产生及检测。
35、的概要设计、详细设计和编码阶段中错误的产生及检测。n在没有复审的软件开发过程中缺陷放大的例子。在没有复审的软件开发过程中缺陷放大的例子。图图8.3 缺陷的放大(无复审)缺陷的放大(无复审)n在设计和编码过程中将复审作为每个软件过程步骤在设计和编码过程中将复审作为每个软件过程步骤的一部分。的一部分。图图8.4 缺陷的放大(有复审)缺陷的放大(有复审)50%n在每个步骤中发现的错误数量被乘以消除一个错在每个步骤中发现的错误数量被乘以消除一个错误的成本(对设计是误的成本(对设计是1.5个成本单位,测试前是个成本单位,测试前是6.5个成本单位,测试中是个成本单位,测试中是15个成本单位,而发个成本单位
36、,而发布后是布后是67个成本单位),个成本单位),n使用这些数据,在进行了复审的情况下,开发和使用这些数据,在进行了复审的情况下,开发和维护的总成本是维护的总成本是783个成本单位。个成本单位。n而在不进行复审的情况下,总成本是而在不进行复审的情况下,总成本是2177个成本个成本单位。单位。后者几乎是前者的后者几乎是前者的3倍倍。n为了进行复审,软件工程师必须花费时间和工为了进行复审,软件工程师必须花费时间和工作量,开发组织必须投入资金。作量,开发组织必须投入资金。n但是上述例子的结果证明,我们面临的是一种但是上述例子的结果证明,我们面临的是一种“现在付出、否则以后付出更多现在付出、否则以后付
37、出更多”的情况。的情况。n(设计和其他技术活动中的)正式技术复审提(设计和其他技术活动中的)正式技术复审提供了显而易见的成本效益。供了显而易见的成本效益。n因此因此,应该进行复审活动。应该进行复审活动。8.5 正式技术复审正式技术复审Formal technical Reviews 正式技术复审(正式技术复审(FTR)是一种由软件工程师进行)是一种由软件工程师进行的的软件质量保证活动软件质量保证活动。FTR的的目标目标是是(1)在软件的任何一种表示形式中发现功能、逻辑)在软件的任何一种表示形式中发现功能、逻辑或实现的错误;或实现的错误;(2)证实经过复审的软件的确满足需求;)证实经过复审的软件
38、的确满足需求;(3)保证软件的表示符合预定义的标准;)保证软件的表示符合预定义的标准;(4)得到以一种一致的方式开发的软件;)得到以一种一致的方式开发的软件;(5)使项目更易于管理)使项目更易于管理。由于。由于FTR的进行使大量人的进行使大量人员对软件系统中原本并不熟悉的部分更为了解,员对软件系统中原本并不熟悉的部分更为了解,因此,因此,FTR还起到了提高项目连续性和培训后备还起到了提高项目连续性和培训后备人员的作用。人员的作用。nFTR(正式技术复审正式技术复审)实际上是一类复审方式,包括实际上是一类复审方式,包括“走查走查”(Walkthrough)、)、“审查审查”(Inspection
39、)、)、“轮查轮查”(Round-robinReview)以及其他软件小组的技术评估。)以及其他软件小组的技术评估。n每次每次FTR都以会议形式进行,只有经过适当的计划、都以会议形式进行,只有经过适当的计划、控制和参与,控制和参与,FTR才能获得成功。才能获得成功。复审会议复审会议 The Review Meetingn不论选择何种不论选择何种FTR(正式技术复审正式技术复审)形式,每个形式,每个复审会议都应该遵守下面的约束:复审会议都应该遵守下面的约束:*复审会议(通常)应该在复审会议(通常)应该在3到到5个人之间进行个人之间进行*应该进行提前准备,但是每人占用工作时间应该进行提前准备,但是
40、每人占用工作时间应该少于应该少于2小时小时*复审会议时间应该不超过复审会议时间应该不超过2小时小时 n在上述约束之下,显然在上述约束之下,显然FTRFTR应该关注的是应该关注的是整个软件中的某个特定(且较小)部分。整个软件中的某个特定(且较小)部分。例如例如,不要试图复审整个设计,而是对,不要试图复审整个设计,而是对每个模块或者一小组模块进行走查。当每个模块或者一小组模块进行走查。当FTRFTR的关注范围较小时,发现错误的可能的关注范围较小时,发现错误的可能性更大。性更大。在复审结束时,所有在复审结束时,所有FTR的与会者必须作出以下的与会者必须作出以下决定中的一个:决定中的一个:(1)工作产
41、品可以不经修改而被接受;)工作产品可以不经修改而被接受;(2)由于严重错误而否决工作产品(错误改正后必)由于严重错误而否决工作产品(错误改正后必须再次进行复审);或须再次进行复审);或(3)暂时接受工作产品(发现必须改正的微小错误,)暂时接受工作产品(发现必须改正的微小错误,但是不再需要进一步复审)。作出决定之后,所但是不再需要进一步复审)。作出决定之后,所有有FTR与会者需要与会者需要“签名签名”,以表示他们参加了,以表示他们参加了此次此次FTR,并且同意复审小组所作的决定。并且同意复审小组所作的决定。复审报告和记录保存复审报告和记录保存 Review Reporting and Recor
42、d Keepingn在在FTRFTR期间,一名复审者(记录员)主动记录所期间,一名复审者(记录员)主动记录所有提出的问题。在复审会议结束时,对这些问有提出的问题。在复审会议结束时,对这些问题进行总结,并生成一份题进行总结,并生成一份“复审问题列表复审问题列表”。此外,还要完成一份简单的此外,还要完成一份简单的“复审总结报告复审总结报告”。复审总结报告将回答以下问题:复审总结报告将回答以下问题:1.1.复审什么?复审什么?2.2.由谁复审?由谁复审?3.3.发现和结论是什么?发现和结论是什么?n复审总结报告通常是一页纸大小(可能还有附件)。复审总结报告通常是一页纸大小(可能还有附件)。它是项目历
43、史记录的一部分,有可能被分发给项目它是项目历史记录的一部分,有可能被分发给项目管理者和其他感兴趣的参与方。管理者和其他感兴趣的参与方。n复审问题列表有两个作用复审问题列表有两个作用:(1)标识产品中存在问题的区域;标识产品中存在问题的区域;(2)用作用作“行动条目行动条目”检查表以指导生产者进行改正。检查表以指导生产者进行改正。建立一个跟踪规程以保证问题列表中的每一项建立一个跟踪规程以保证问题列表中的每一项条目都得到适当的改正条目都得到适当的改正。只有做到这一点,才能保。只有做到这一点,才能保证提出的问题真正得到控制。证提出的问题真正得到控制。复审指南复审指南 Review Guideline
44、s进行正式技术复审之前必须建立复审指南,分进行正式技术复审之前必须建立复审指南,分发给所有复审者,并得到大家的认可,然后才能发给所有复审者,并得到大家的认可,然后才能依照它进行复审。依照它进行复审。ADVICE:不要严厉地指出错误。一种温和地方式:不要严厉地指出错误。一种温和地方式是问一个问题,以使得生产者能够发现他自己的是问一个问题,以使得生产者能够发现他自己的错误。错误。1.复审产品,而不是复审生产者复审产品,而不是复审生产者。FTR涉及到别涉及到别人和自我。如果进行得适当,人和自我。如果进行得适当,FTR可以使所有参可以使所有参与者体会到温暖的成就感。如果进行得不适当,与者体会到温暖的成
45、就感。如果进行得不适当,则可能陷入一种审问的气氛之中。则可能陷入一种审问的气氛之中。复审主席应该引导复审会议以保证会议始终复审主席应该引导复审会议以保证会议始终处于适当的气氛和态度之中,在讨论失去控制时处于适当的气氛和态度之中,在讨论失去控制时应立即休会。应立即休会。2.制定日程并且遵守日程制定日程并且遵守日程。各种类型的会议都具。各种类型的会议都具有一个主要缺点:放任自流。有一个主要缺点:放任自流。FTR必须保证不要必须保证不要离题和按照计划进行。复审主席被赋予维持会议离题和按照计划进行。复审主席被赋予维持会议程序的责任,在有人转移话题时应该提醒他。程序的责任,在有人转移话题时应该提醒他。3
46、.限制争论和辩驳限制争论和辩驳。在复审者提出问题时,未必。在复审者提出问题时,未必所有人都认同该问题的严重性。不要花时间争论所有人都认同该问题的严重性。不要花时间争论这一问题,这样的问题应该被记录在案,留到会这一问题,这样的问题应该被记录在案,留到会后进一步讨论。后进一步讨论。4.对各个问题都发表见解,但是不要试图解决对各个问题都发表见解,但是不要试图解决所有记录的问题所有记录的问题。复审不是一个问题解决会议。复审不是一个问题解决会议。问题的解决通常由生产者自己,或者在其他人问题的解决通常由生产者自己,或者在其他人的帮助下来完成。问题解决应该放到复审会议的帮助下来完成。问题解决应该放到复审会议
47、之后进行。之后进行。5.作书面笔记作书面笔记。6.限制参与者人数并坚持事先作准备限制参与者人数并坚持事先作准备。7.为每个可能要复审的工作产品建立一个检查表为每个可能要复审的工作产品建立一个检查表。检查表能够帮助复审主席组织检查表能够帮助复审主席组织FTR会议,并帮助会议,并帮助每个复审者将注意力集中在重要问题上。应该为每个复审者将注意力集中在重要问题上。应该为分析、设计、编码、甚至测试文档都建立检查表。分析、设计、编码、甚至测试文档都建立检查表。8.为为FTR分配资源和时间分配资源和时间。为了让复审有效,应。为了让复审有效,应该将复审作为软件工程过程中的任务加以调度。该将复审作为软件工程过程
48、中的任务加以调度。而且要为由复审结果而导致的修改活动分配时间。而且要为由复审结果而导致的修改活动分配时间。9.对所有复审者进行有意义的培训对所有复审者进行有意义的培训。为了提高效率,所有。为了提高效率,所有复审参与者都应该接受某种正式培训。复审参与者都应该接受某种正式培训。10.复审以前所作的复审复审以前所作的复审。听取汇报对发现复审过程本身的。听取汇报对发现复审过程本身的问题十分有益。最早被复审的工作产品应该是复审指南本身。问题十分有益。最早被复审的工作产品应该是复审指南本身。由于成功的复审涉及到许多变数(由于成功的复审涉及到许多变数(如,参与者数量、工作如,参与者数量、工作产品类型、时间和
49、长度、特定的复审方法等)产品类型、时间和长度、特定的复审方法等),软件组织应,软件组织应该在实验中决定何种方法最为适用。该在实验中决定何种方法最为适用。8.6 SQA的形式化方法的形式化方法Formal Approaches to SQA n在过去的在过去的20年中,在软件界中有一群虽然很少但年中,在软件界中有一群虽然很少但是很坚决的人们,提出软件质量保证应该采用一是很坚决的人们,提出软件质量保证应该采用一种更为种更为形式化的方法形式化的方法。一个计算机程序可以看作。一个计算机程序可以看作一个数学对象。一个数学对象。n对于每一种程序设计语言都能够定义一套严格的对于每一种程序设计语言都能够定义一
50、套严格的语法和语义,且对于软件需求规格说明也出现了语法和语义,且对于软件需求规格说明也出现了一种类似的严格方法。一种类似的严格方法。n一旦需求模型(规约)和程序设计语言以一种一旦需求模型(规约)和程序设计语言以一种严格的方式被表达出来,就可以采用程序正确严格的方式被表达出来,就可以采用程序正确性的数学证明来说明程序是否严格符合它的规性的数学证明来说明程序是否严格符合它的规约。约。n程序正确性证明程序正确性证明不是一个新的思路。不是一个新的思路。Dijkstra和和Linger、Mills及及Witt,以及其他很多人都支持,以及其他很多人都支持程序正确性的数学证明,并将它与结构化程序程序正确性的