测试测试自动化.ppt
6.7.2 测试测试自动化,另一类软件测试工具,可以自动执行测试用例、查找软件缺陷、分析并记录测试结果。,测试工作台(下游CASE工具),源代码,预测器,测试管理器,测试预估,模拟器,文件比较器,报告生成器,动态分析器,被测试的程序,测试数据,测试结果,测试结果报告,执行报告,测试数据生成器,规约,随机测试自动化工具:猴子测试员,只要不停电,偶尔能够得到香蕉,猴子就会永远测试下去,一个想法:“如果让一百万只猴子在一百万只键盘上敲一百万年,它们最终就可能写出莎士比亚话剧等巨著”.,猴子的进步,笨猴子:一点也不懂测试软件,只是随机地单击或按键,直至发生两件事情之一:完成循环或系统崩溃.,不太笨的猴子:具有崩溃辨认能力,能够重新启动系统开始测试,聪明猴子:能够从它的笨兄弟那里获得随机测试的结果,增加了对环境的认知能力,有目的地敲键盘,不仅限于查找崩溃缺陷,同时查看数据,检查 操作结果,找出与预期结果的差别,自动化测试工具实例,美国国际软件自动化(ISA)公司的Panorama for C/C+,j、Java和VB产品,自动化功能包括:软件结构分析与逻辑框图的自动化软件静态分析数据分析复杂性分析与分析结果列表的自动化软件质量分析动态性能分析软件代码分支或条件覆盖率分析软件测试用例有效性分析与测试用例最小集的自动选取软件界面手工操作过程的自动记录与自动再执行(Playback),6.8调试(纠错技术)测试是找出软件错误的过程,调试是确定错误的位置、性质 并纠正。调试的困难在于错误的定位.,调试的执行步骤,错误现场,结果,执行案例,改正,测试用例,调试,已识别的原因,被怀疑的原因,回归测试,附加测试,6.8.1 排错策略方法一.强行排错(brute force)常见形式:(1)打印出所有存储内容、代码(2)程序中设打印语句(3)用自动纠错工具 效率最低,二.回溯法(跟踪法)根据错误症状位置,人工沿程序控制流程向回追踪源代码。适用于小程序,路径数目很大时无法进行。,三.消去原因(cause limination)列出可能原因,逐个排除,找出问题(1)试探法(2)归纳法(3)演绎法(4)二分查找法,(1)归纳法,收集有关数据,组织数据构造线索,研究线索关系,假设错误原因,证明假设,纠正错误,能,不能证明,线索关系,错误线索,能,不能,(2)演绎法,列举可能错误原因,排除不会发生原因,对保留的假设推断,证明留下的假设,确定错误,待定错因,剩余错因,能,出错原因,不能,收集更多数据,无剩余,6.8.2 修改错误原则注意错误的群集现象,在错误近邻检查。找到错误的本质并修改采用回归测试,避免因修改引起的新错误。修改源程序。,6.9 测试中的可靠性分析,开发过程中,利用测试的统计数据来估算软件的可靠性,以控制软件的质量。推测错误的产生频度推测残留在程序中的错误数评价测试的精确度和覆盖率,推测错误的产生频度(推测错误产生的时间间隔),1,K(ET/IT-Ec(t)/IT),方法:估算平均故障时间(MTTF估算公式)当故障率为独立于时间的常量:,MTTF,K:经验常数ET:程序中原有的残留错误数IT:程序长度t:测试时间 Ec(t):在0-t期间内发现的错误总数,1,=,推测残留在程序中的错误数,错误植入模型 Mills将播种模型用于程序中残留错误的估算,称错误植入模型播种模型:N:程序中原有残留的错误数Nt:新植入的错误数n:测试发现的原有错误数nt:测试发现的植入错误数,N,N,n,n,t,t,N,N,n,n,t,=,t,Hyman对错误植入模型的改进,ET:程序中原有的残留错误数E1:1号测试员在某一时间内发现的错误数E2:2号测试员在同一时间内发现的错误数E0:两位测试员共同发现的错误数,E,E,E,E,1,0,=,2,T,E,T,E,1,E,2,/E,0,第七章 软件维护与软件再工程,7.1 软件维护的概念 四类维护活动:改正性维护 适应性维护 扩充与完善性维护 预防性维护,三类维护所占比例:,其它维护 5%,适应性维 护 25%,改正性维 护 20%,扩充与完善性维护 50%,改正性维护占全部维护量的比率已从80年代初的20%大幅度下降,90年代初一些公司的产品差错率已接近于零,各类维护活动的根本目的是延长软件生存期,其它维护 4%,软件生存周期,软件诞生,计划,分析,设计,编码,测试,运行和维护(简称维护),改善期 稳定期 陈旧期,1年-10年,2个月-2年,重构,软件工程周期,7.2 软件维护的特点,M,P+K,e,=,(c-d),M:维护工作总工作量P:生产性工作量K:经验常数c:复杂度d:对该软件熟悉程度的度量,7.2.1 维护的成本,7.2.2 维护中的典型问题,(1)难以跟踪软件版本的进化过程,软件的变化未在文档中反映出来.(2)难以跟踪软件的创建过程.(3)难以读懂他人程序.(4)无文档或不全.(5)软件人员流动性大.(6)设计时未考虑修改需要,修改困难.(7)维护工作无吸引力,缺乏成就感.,7.3 软件的维护任务,修改负责人,维护申请,系统监督员,配置管理员,7.3.1 维护机构,维护人员,维护管理员,7.3.2 保存维护记录,维护过程中作应记录的数据程序标识源程序语句数目机器代码指令条数.以收集的数据为基础构造维护数据库,供维护评价使用.,7.4 软件维护的实施,7.4.1 修改源程序的三个步骤分析和理解程序修改程序重新验证程序,7.4.2 修改程序的副作用,修改代码的副作用修改数据的副作用修改文档的副作用,7.4.3 重新验证程序,1.静态确认2.计算机确认3.维护后的验收,从维护角度所需的测试种类:,(1)对修改事务的测试(2)对修改程序的测试(3)操作过程的测试(4)应用系统运行过程的测试(5)使用过程的测试(6)系统各部分间接口的测试(7)与系统软件接口的测试(8)安全性测试(9)后备/恢复过程测试,7.5 软件可维护性7.5.1 软件可维护性的定义,软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。衡量软件质量的几个主要质量特性:可维护性可使用性可靠性,7.5.2 可维护性的度量,度量程序可维护性的7个特性在各类维护中的侧重点 改正性维护 适应性维护 完善性维护可理解性 可测试性 可修改性 可靠性 可移植性 可使用性 效率,7.6 提高可维护性的方法,建立明确的软件质量目标和优先级 使用提高软件质量的技术和工具 进行明确的质量保证审查 选择可维护的程序设计语言 改进程序的文档 开发软件时考虑到维护,7.7 预防性维护,开发和维护者不应等待用户的维护申请,可先选择以下类型程序作为预防性维护对象:(1)预计若干年内将继续使用的程序(2)当今正成功使用的程序(3)最近的将来要进行大修改和完善的 程序,7.8 软件再工程,7.8.1 什么是软件再工程在软件复用中,有问题是与现有系统密切相关的例如:现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件?现存大量的遗产软件系统(Legacy Software)由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件?已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命期,充分利用这些可复用构件?,软件再工程(Software Reengineering)正是解决上述问题的主要技术手段。软件再工程是一类软件工程活动,是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解。它能够使我们:增进对软件的理解;提高软件自身的可维护性、复用性或演化性.,软件再工程过程模型,代码重构,数据重构,正向工程,库存目录分析,文档重构,逆向工程,逆向工程,逆向工程(反推工程reverse engineering)从现有软件恢复设计信息(有用的维护信息),设计的恢复过程,非结构化、无文档的源代码或目标代码,软件的全部文档,软件再工程相关术语间关系,信息库,1类视图:非过程性描述、元描述例:规格说明,再工程,3类视图:过程性描述例:源程序,再工程,2类视图:伪过程性描述、结构性描述例:DFD、PDL,A2类视图:分析,再工程,逆向工程设计恢复再工程,逆向工程设计恢复再工程,A1类视图:分析,A3类视图:分析,分解,综合生成视图,软件视图 Software view有关软件的一种表达形式或报告;视图分类:1类视图:2类视图:3类视图:A类视图:伴随上述各类的分析视图;A1类视图是对1类视图的分析信息;A2类视图是有关2类视图的分析信息;A3类视图是由3类视图得到。,软件视图示例,信息库,视图编辑器,DFD,视图编辑器,Petri网,视图编辑器,ERA图,视图编辑器,跟踪矩阵,Req1 Req2,Prog1Prog2Prog3,视图编辑器,程序结构图,视图编辑器,流程图,视图编辑器,规格说明,再工程信息库及其产品,软件文档,分析结果,信息库,设计成果,规格说明,各种图,度量值,分析、分解器,源程序或其模板,(进入点),源程序,自动进行再工程的过程,软件,软件的新视图,语法分析器语义分析器,视图合成器,信息库,其他产品,经过再工程过程可获得的信息,格式图形文档度量值逻辑报告,7.8.2 软件再工程技术再工程课题 相关技术,重构文档重写、加注释、更新文档复用工程重新划分模块数据再工程业务过程再工程可维护性分析、业务量分析、经济分析,理解软件,改进软件,获取、保存及扩充软件的知识,分解逆向工程、恢复设计对象恢复程序理解知识库及变换,浏览分析、度量逆向工程、恢复设计,1.改进软件,(1)软件重构 对软件进行改造,使其易于理解或易于维护。重构是实现软件再工程全面自动化的第一步,源程序,重构的源程序,逻辑格式图形文档度量报告,再构器,可获得的信息,Restructurer,软件重构示意图,1.改进软件,(2)文档重写、加注释、更新文档,信息源:源程序设计资料规格说明变更记录管理人员程序人员,文档:嵌入式注释设计资料规格说明测试数据层次图,检查:再测试插入注释生成图形生成报告,文档重写示意图,1.改进软件,(3)复用工程:目的是修改软件,使其更易于复用,再说明再生成分类证明附加查找描述信息,查找,利用再工程实现软件复用的过程,应用问题,部件,可复用部件,可复用库:可复用源程序,复用,再工程器,析取,2.理解软件,(1)浏览(2)分析与度量 理解程序特性(如复杂性)的重要方法.与再工程相关的技术:程序分片 控制流复杂性度量 耦合性度量(3)逆向工程与设计恢复,逆向工程恢复信息的级别:,(1)实现级:程序的抽象语法 树、符号表等信息(2)结构级:反映程序分量之间 相互依赖关系的信 息,如调用图、结 构图等.(3)功能级:反映程序段功能和 段间关系的信息(4)领域级:反映程序分量与应 用领域概念间对应 关系的信息,抽象级别,低,高,信息的抽象级别越高,它与代码距离越远,通过逆向工程恢复的难度越大,自动工具支持的可能性变小,逆向工程,源程序,目标代码,反汇编、反编译程序分析技术:程序结构分析工具 程序功能分析工具,源程序,概要设计详细设计,概要设计,需求分析,3.获取、保存和扩充软件的知识,(1)分解 从程序中找出对象和关系,存入信息库.分解器举例:UNIX中的lex和yacc(2)对象恢复 从源程序中取得对象,将非面向对象程序转 换为面向对象程序.(3)程序理解(4)知识库和程序变换,变换是再工程的核心活动。再工程是在同一类视图或前一类视图上把一个软件视图的信息变换成另一视图的信息。,变换也是逆向工程和设计恢复的基础。逆向工程与再工程十分相似,只是两者的原始视图和目标视图不同,它的目标视图一般在前类视图中。源代码 结构图,既可看作是再工程,也可看作是逆向工程。源代码 重构源代码 则是再工程或称重构,并不是逆向工程。,(6)再工程的同义词:改进 更新 整修 再开发工程 再生 复用工程,7.8.3 为什么要实施软件再工程再工程可帮助降低软件演化风险再工程可帮助补偿软件投资再工程可使得软件易于进一步变更再工程有广阔市场再工程扩大了CASE工具集再工程是推动自动软件维护的动力,第八章 软件工具与软件开发环境,8.1 软件工具定义:用来辅助软件开发、运行、维 护、管理、支持等过程中的活 动的软件成为软件工具.分类:按软件过程活动分类 支持软件开发过程的工具 支持软件维护过程的工具 支持软件管理过程和支持过程的工具,8.2 计算机辅助软件工程(CASE),Computer-Aided Software Engineering8.2.1 CASE的基本概念与发展历史1.什么是CASECASE使人们能在计算机的辅助下进行软件开发,为软件开发的工程化、自动化进而智能化打下基础。在CASE工具辅助下进行软件开发,可提高开发效率、改善软件质量。,CASE构造积木块,CASE工具,环境体系结构,硬件平台,操作系统,可移植服务,集成框架,2.CASE工具分类,信息工程工具工程建模和管理工具项目计划工具风险分析工具项目管理工具需求根据工具质量和管理工具文档工具,2.CASE工具分类,系统软件工具质量保证工具数据库管理工具软件配置管理工具分析和设计工具PRO/SIM工具界面设计和开发工具原型工具,2.CASE工具分类,编程工具集成和测试工具静态分析工具动态分析工具测试管理工具客户/服务器测试工具再工程工具 逆向工程工具 代码重构和分析工具 联机再工程工具,3.集成化CASE环境(I-CASE),1990年Wasserman提出的五级集成模型平台集成:工具运行在相同的硬件/操作 系统平台上数据集成:工具使用共享数据模型来操作表示集成:工具提供相同用户界面控制集成:工具激活后能控制其它工具的 操作过程集成:工具在一个过程模型和“过程 机”的指导下使用,I CASE 的元素,基础块,体系结构硬件平台操作系统,可移植服务,集成框架,CASE工具,集成框架 的体系结构模型,用户界面层 界面工具箱 表示协议,工具代理服务,CASE工具,工具层,对象管理层 集成服务 配置管理服务,共享中心库层 CASE数据库 访问控制功能,2.CASE中心库,在I-CASE中中心库是软件工程信息的“积聚和存储中心”;是一组实现“数据-工具”和“数据-数据”集成 的机制和数据结构。CASE中心库也称为“软件总线”CASE中心库也是一个存放地,结合了高级的集成CASE工具的机制。,CASE中心库存放的内容,被求解的问题关于问题域的信息系统解决方案关于被遵从的软件过程(方法学)的规则和指令项目计划、资源和历史关于组织的信息,CASE中心库提供的服务,可从任何高级的数据库管理系统期望得到的访问类型特定于CASE环境的访问类型,中心库,中心信息库,Data 记录 元素 视图 入库实体,处理 模块 处理 函数 外部实体 界面,图形 DFD 结构图 E-R图 数据模型,规则,权限,过程和管理,现存拷贝库,数据字典,版本,属性描述,命名标准 标准名 别名 属性名 编译名,中心信息库报告,中心信息库 的内容,3.CASE工作台,CASE工作台概述.CASE工作台分类 程序设计工作台分析和设计工作台测试工作台交叉开发工作台配置管理工作台文档工作台项目管理工作台,程序设计工作台,组成程序设计工作台的工具:(1)语言编译器(2)结构化编译器(3)连接器(4)加载器(5)交叉引用(6)按格式打印(7)静态分析器(8)动态分析器(9)交互式调试器,测试工作台(下游CASE工具),源代码,预测器,测试管理器,测试预估,模拟器,文件比较器,报告生成器,动态分析器,被测试的程序,测试数据,测试结果,测试结果报告,执行报告,测试数据生成器,规约,8.3 软件工程环境(SEE),8.3.1 软件工程环境概述软件工程环境定义:(1)一组软件工具的集合(2)工具按一定方法或模型组织(3)工具支持整个生存周期各阶段或 部分阶段,1.软件工程环境分类,(1)按软件开发模型及开发方法分类支持:瀑布模型、演化模型、螺旋模型、喷泉模型等支持:结构化方法、信息模型方法、OO方法等,1.软件工程环境分类,(2)按应用范围分类:通用型软件工程环境 专用型软件工程环境(应用型软件工程环境),1.软件工程环境分类,(3)按开发阶段分类:前端开发环境(支持系统分析、分析、设计等阶段活动)后端开发环境(支持编程、测试等阶段 活动)软件维护环境逆向工程环境,2.软件工程环境的特征,(1)仓库(2)工具的集成(3)用户友好的界面(4)提取信息的能力(5)分析的能力(6)可裁剪和可扩充的能力(7)项目控制和管理(8)方法学的支持,3.软件工程环境的基本功能,(1)软件开发的一致性及完整性维护(2)配置管理及版本控制(3)数据的多种表示形式及自动转换(4)信息自动检索及更新(5)项目控制和管理(6)对方法学的支持,集成环境,软件工程环境的层次模型,工作台应用,框架服务,平台服务,平台服务,SEE运行在工作台网络上,宿主系统,目标机1,目标机2,网络连接,网络连接,宿主目标开发方式:,一个软件工程环境运行其上的平台称为软件工程环境的宿主机系统。,框架服务,SEE参考模型,数据仓库服务,数据集成服务,任务管理服务,用户界面服务,消息服务,工具插槽,8.4 大型软件开发环境 青鸟系统简介,集成化软件工程环境青鸟II系统(JB2)特点:环境主要目标之一:支持OO软件开发集成性和开放性的统一。支持多种开发方法可集成支持生存周期全过程的软件工具,JB2系统总体结构,用 户 界 面,过程管理,工作台管理,工具 工具 工具 工具 工具 工具,界面辅助 生成器,可复用构件管理,CASEC+语言,配置管理,版本管理,对 象 管 理 系 统,消息服务器,对 象 库,可复用构件库,类 库,界面类库,JBCASE For Windows体系结构,用 户 界 面,系统平台(PWIN,中文之星,四通利方等),结构化分析工具 SAT,结构化设计工具 SDT,文档追踪工具DATT,数据库设计工具 DDT,需求文档,一般设计文 档,详细设计文 档,数据库文 档,其它文档,文档出版工具DPT,外部工具集成,界面工具编程工具调试工具.,Client,其它厂家工具,WordExeclPowerpoint.,Server,工作站版青鸟环境,OLE或文件,(开放性),JBCASE For Windows功能简介,结构化分析工具SATDFD编辑DD编辑及管理一致性检查需求文档分析外部工具集成OLE的Server自动生成MSD等,JBCASE For Windows功能简介,结构化设计工具SDTMSD编辑小说明编辑及管理一致性检查设计文档自动生成设计文档分析外部工具集成OLE的Server支持详细设计过程等,JBCASE For Windows功能简介,数据库设计工具DDTER图编辑对象内容编辑对象浏览需求文档分析自动布局报告生成及文档出版生成数据库模式定义外部工具集成OLE的Serve,JBCASE For Windows功能简介,文档追踪工具DAT/T定义追踪关系 DFDMSD MSDDFD显示追踪关系删除追踪关系,JBCASE For Windows功能简介,文档出版工具DPT文档模板管理超文本组织管理OLE连接及嵌入文档输出:某一章节或整个文档,第九章 软件质量管理与质量保证,9.1 软件质量 影响软件质量的因素人的因素软件需求测试的局限性质量管理的困难软件人员的传统习惯开发规范开发工具支持不够,什么是软件质量,成本,可靠,维护,及时交付,正确,功能,功能,成本,及时交付,软件质量的若干侧面,9.1.2 McCall提出的表明软件质量 的11个质量特性,使用性 测试性正确性 维护性可靠性 移植性效率 重用性完整性 互操作性适应性(灵活性),国际标准和国家标准规定的 质量特性ISO/IEC 9126-1991 Information technology software product evaluation quality characteristics and guidelines for their use我国1996年将其等同采用:GB/T16260-1996 软件产品评价 质量特性及其使用指南,9.1.4 产品质量与过程质量,产品质量,开发技术,成本、时间、进度,过程质量,人员素质,影响产品质量的4个方面,9.2 软件质量保证,质量保证也是一个过程,已列入国际标准“ISO/IEC 12207信息技术-软件生存期过程”中。,9.2.1 质量保证的主要功能,质量方针的制定和展开质量保证方针的质量保证标准的制定质量保证体系的建立和管理各阶段的质量评审,9.2.2 质量保证的实施 质量度量方法ISO建议的软件质量评价标准分为三级:高层:质量需求评价准则(SQRC)中层:质量设计评价准则(SQDC)低层:质量度量评价准则(SQMC),ISO建议的软件质量度量模型,正 确 性,可 跟 踪 性,完 备 性,准 确 性,容 错 性,简 洁 性,模 块 性,通 用 性,扩 充 性,可 容 性,效 率,安 全 性,可维护性,适 应 性,连 接 性,SQDC,SQRC,SQMC,可 用 性,一 致 性,由各使用单位根据实际情况决定,能用于软件质量定量评价的软件度量,美国国防部AD报告:把质量表现形式 归纳为190多个 问题;IEEE质量标准词典规定:39组度量公式39个度量项分为四级:0级:已公式化,尚未被运行有效确认1级:已为软件界采用,应用范围有限2级:已被软件界接受,已取得一定经验3级:软件界已广泛使用,已取得相当经验,3级的8个度量项,(1)缺陷密度(2)需求可追踪性(3)Halstead软件科学(4)McCabe复杂性度量(5)发现k个缺陷的平均时间(6)按耗时作故障分析(7)平均故障时间(8)故障率,Halstead的软件科学度量,根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性n1:程序中出现的不同操作符数目n2:程序中出现的不同操作数数目N1:程序中操作符出现的总数N2:程序中操作数出现的总数,McCabe复杂性度量举例,SORT源程序SUBROTINE SORT(X,N)DIMENSION X(N)IF(N.LT.Z)RETURENDO 20 1=2,N DO 10 J=1,I IF(X(I).GE.X(J)GOTO 10 SAVE=X(I)X(I)=X(J)X(J)=SAVE10 CONTINUE20 CONTINUE RETURN END,SORT源程序操作符 操作符 数 1.语句结束 7 2.数组下标 6 3.=5 4.IF()2 5.DO 2 6.,2 7.程序结束 1 8.LT.1 9.GE.1n1=10.GOTO 10 1 N1=28,McCabe复杂性度量举例,SORT源程序SUBROTINE SORT(X,N)DIMENSION X(N)IF(N.LT.Z)RETURENDO 20 1=2,N DO 10 J=1,I IF(X(I).GE.X(J)GOTO 10 SAVE=X(I)X(I)=X(J)X(J)=SAVE10 CONTINUE20 CONTINUE RETURN END,SORT源程序操作数 操作数 数 1.X 6 2.I 5 3.J 4 4.N 2 5.2 1 6.SAVE 2 n2=7.1 2 N2=22,Halstead使用原始度量定义的算式,(1)程序长度 N=n1log2 n1+n2log2 n2(2)程序容量 V=Nlog2(n1+n2)(3)语言级别 L=(2n2)/(n1n2)(4)程序工作量 E=V/L(5)程序编写时间 T=E/S S:Stroud数(6)程序潜在错误的数量 B=Nlog2(n1+n2)/3000,Halstead认为程序中可能存在的错误与程序容量成正比,例:一程序对75个数据库项共访问1300次,对150个操作符使用1200次,潜在错误数为:B=(1300+1200)log2(75+150)/3000=6.5(即67个错误),Halstead软件科学是目前一种最好的软件度量方法,不足和问题:(1)未忽略模块特性(2)忽略了非执行语句(3)代码和数据的二义性(4)未考虑数据类型的差异(5)未注意调用深度(6)未区别不同类型的运算符,McCabe复杂性度量(环路度量),McCabe认为程序复杂性很大程度取决于程序控制流的复杂性,以程序图的环路数作为该程序复杂性.的度量值对于具有强连通图的环路数:V(G)=e-n+2 e:边数 n:结点数,McCabe复杂性度量示例,a,c,b,e,f,d,1,2,3,7,6,8,4,5,9,R1,R2,R3,R4,R5,V(G)=9-6+2=5,V(G)其它计算方法:(1)计算图中所有有界区域和无界区域数R 图中共有5个区域(R1到R5),所以 V(G)=5(2)用判定语句总数+1(判定个数=分支数-1)图中可按4个判定计算,V(G)=4+1=5,9.2.3 技术评审,软件评审是一个“过滤器”,用于“净化”软件工程各项活动,9.3 软件可靠性,硬件系统故障率,0,t,Z(t),软件系统故障率,0,t,Z(t),9.3.1 基本概念,软件可靠性定义 在给定时间间隔内和特定的环境下,软件按规格说明成功运行的概率。,软件可靠性的主要指标,借用硬件可靠性的定量度量方法来度量软件的可靠性:MTBF:平均故障间隔时间 MTTF:平均故障时间,t1,t2,.,tn:失效时间,MTTF,n,i=1,n,1,t,i,软件可靠性定义的要素,(1)环境条件 规定软件的使用环境(输入数据要求和环境)(2)规定时间 时间t是随机变量。(3)规定的功能(4)成功运行,9.4 软件容错技术,提高软件质量和可靠性的技术:避开错误技术容错技术:对无法避开的差错,使其 影响减至最小的技术。,9.4.1 什么是容错软件?,定义1:规定功能的软件,在一定程度 上对自身错误的作用具有屏蔽 能力的软件;定义2:规定功能的软件,在一定程度 上能从错误状态自动恢复到正 常状态的软件;定义3:规定功能的软件,在因错误而 发生错误时,仍能在一定程度 上完成预期的功能的软件;,9.4.2 容错的一般方法,实现容错计算的方法:错误检测算法错误恢复算法 容错资源软件冗余备份实现容错计算的主要手段是冗余,主体:常规软件所需资源,附加体:容错资源,容错软件,9.4.3 容错的一般方法,冗余技术分类:1.结构冗余(1)静态冗余:3模冗余、多模冗余,U,M1,M2,M3,V,u2,u1,u3,I,3模(TMR)表决系统的结构,表决器,U=(u1u2)(u2u3)=(u1u3),1.结构冗余,(2)动态冗余:多重模块待机储备,相继运行,M1,M2,M3,主模块,备用,I,待机储备系统结构,开关,Mn,.,备用,备用,1.结构冗余,(3)混合冗余 H(N,K),M1,M2,Mk,I,H(N,K)系统结构,开关,Mn,.,Mk+1,.,V,转换开关,冗余技术分类:,2.信息冗余 以检测或纠正信息在运算或传输中的错误为目的而外加的一部分信息。误差校正码:奇偶码 定重码 循环码,(冗余码),冗余技术分类:,3.时间冗余 以重复执行指令(指令复执)或程序(程序复算)来消除瞬时错误带来的影响。常用的程序复算方法:程序滚回技术,出错,t0,t1,t2,t3,ti-1,ti,ti+1,i-1,i,程序滚回示意图,1,2,3,时刻 t0,t1,t2,.对应于程序中预先设置好的恢复点,软件的容错系统结构,1.多版本结构 把同一功能的不同版本的程序(多为子系统或模块级)并行联结到系统中,构成冗余并行模型.,版本1,版本 2,版本 3,.,表决,同一功能,多版本程序示意图,2.恢复块结构,要求做容错的块(基本块),提供:备份块(独立设计的相应冗余备份)附加的错误检验 恢复措施,恢复块,Ensure 接受测试 By 基本块 Else By备份块1 Else By备份块nElse 错误,恢复块的工作方式,保存现场,队空,从恢复块的备份块队列中取一个模块,激活此模块,执行此模块,恢复现场,接受测试T,有问题显示错误及位置,继续执行后续工作,通过,不通过,