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