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
NN nn t=
t
Hyman对错误植入模型的改进
ET,程序中原有的残留错误数
E1,1号测试员在某一时间内发现的错误数
E2,2号测试员在同一时间内发现的错误数
E0,两位测试员共同发现的错误数
E
E
E
E
1 ≈ 0 =
2T E
T E1 E 2 /E0
第七章 软件维护与软件再工程
§ 7.1 软件维护的概念四类维护活动:
改正性维护
适应性维护
扩充与完善性维护
预防性维护三类维护所占比例,
其它维护
5 %
适应性维 护
25%
改正性维 护
20%
扩充与完善性维护
50%
改正性维护占全部维护量的比率已从 80年代初的 20%大幅度下降,90年代初一些公司的产品差错率已接近于零各类维护活动的根本目的是 延长软件生存期其它维护
4 %
软件生存周期软件诞生计划分析设计编码测试运行和维护 (简称维护 )
改善期 稳定期 陈旧期
1年 -10年2个月 -2年重构软件工程周期
§ 7.2 软件维护的特点
M P+Ke= (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图视图编辑器跟踪矩阵
X
X
X
Req1 Req2Prog1
Prog2
Prog3
视图编辑器程序结构图视图编辑器流程图视图编辑器规格说明再工程信息库及其产品软件文档 分析结果信息库设计成果 规格说明各种图度量值分析、分解器源程序或其模板
(进入点 )
源程序自动进行再工程的过程软件软件的新视图语法分析器语义分析器视图合成器信息库其他产品经过再工程过程可获得的信息
格式
图形
文档
度量值
逻辑
报告
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 Engineering
8.2.1 CASE的基本概念与发展历史
1.什么是 CASE
CASE使人们能在计算机的辅助下进行软件开发,为软件开发的 工程化,
自动化 进而 智能化 打下基础。
在 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) 对方法学的支持
8.3.2 集成环境软件工程环境的层次模型工作台应用框架服务平台服务
8.3.3 平台服务
SEE运行在工作台网络上宿主系统目标机 1 目标机 2
网络连接 网络连接宿主-目标开发方式:
一个软件工程环境运行其上的平台称为软件工程环境的宿主机系统 。
8.3.4 框架服务
SEE参考模型数据仓库服务数据集成服务任务管理服务用户界面服务消息服务工具插槽
§ 8.4 大型软件开发环境青鸟系统简介集成化软件工程环境青鸟 II系 统 (JB2)
特点:
环境主要目标之一:支持 OO软件开发
集成性和开放性的统一。
支持多种开发方法
可集成支持生存周期全过程的软件工具
JB2系统总体结构用 户 界 面过程管理工作台管理工具 工具 工具 工具 工具 工具界面辅助生成器可复用构件管理
CASE- C++
语言配置管理版本管理对 象 管 理 系 统消息服务器对 象 库可复用构件库 类 库界面类库
JBCASE For Windows体系结构用 户 界 面系统平台 (PWIN,中文之星,四通利方等 )
结构化分析工具 SAT
结构化设计工具 SDT
文档追踪工具 DATT
数据库设计工具 DDT
需求文档 一般设计文 档详细设计文 档数据库文 档其它文档文档出版工具 DPT 外部工具集成 界面工具编程工具调试工具
........
Client
其它厂家工具
Word
Execl
Powerpoint
........
Server
工作站版青鸟环境
OLE或文件
(开放性 )
JBCASE For Windows功能简介结构化分析工具 SAT
DFD编辑
DD编辑及管理
一致性检查
需求文档分析
外部工具集成
OLE的 Server
自动生成 MSD等
JBCASE For Windows功能简介结构化设计工具 SDT
MSD编辑
小说明编辑及管理
一致性检查
设计文档自动生成
设计文档分析
外部工具集成
OLE的 Server
支持详细设计过程等
JBCASE For Windows功能简介数据库设计工具 DDT
ER图编辑
对象内容编辑
对象浏览
需求文档分析
自动布局
报告生成及文档出版
生成数据库模式定义
外部工具集成
OLE的 Serve
JBCASE For Windows功能简介文档追踪工具 DAT/T
定义追踪关系
DFD→MSD
MSD→DFD
显示追踪关系
删除追踪关系
JBCASE For Windows功能简介文档出版工具 DPT
文档模板管理
超文本组织管理
OLE连接及嵌入
文档输出,某一章节或整个文档第九章 软件质量管理与质量保证
§ 9.1 软件质量
9.1.1 影响软件质量的因素
人的因素
软件需求
测试的局限性
质量管理的困难
软件人员的传统习惯
开发规范
开发工具支持不够什么是软件质量成本可靠维护及时交付正确功能功能成本 及时交付软件质量的若干侧面
9.1.2 McCall提出的表明软件质量的 11个质量特性
▲ 使用性 ▲ 测试性
▲ 正确性 ▲ 维护性
▲ 可靠性 ▲ 移植性
▲ 效率 ▲ 重用性
▲ 完整性 ▲ 互操作性
▲ 适应性 (灵活性 )
9.1.3 国际标准和国家标准规定的质量特性
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建议的软件质量度量模型正 确 性 可 跟 踪 性完 备 性准 确 性容 错 性简 洁 性模 块 性通 用 性扩 充 性可 容 性效 率安 全 性可维护性适 应 性连 接 性
SQDCSQRC 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)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 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= Nlog2 (n1+ n2)
(3)语言级别 L= (2× n2)/(n1× n2)
(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(即 6~ 7个错误 )
Halstead软件科学是目前一种最好的软件度量方法不足和问题,
(1)未忽略模块特性
(2)忽略了非执行语句
(3)代码和数据的二义性
(4)未考虑数据类型的差异
(5)未注意调用深度
(6)未区别不同类型的运算符
McCabe复杂性度量 (环路度量 )
McCabe认为程序复杂性很大程度取决于程序 控制流的复杂性,以 程序图的环路数 作为该程序复杂性,
的度量值对于具有强连通图的环路数,
V(G)=e-n+2
e:边数
n:结点数
McCabe复杂性度量示例
a
cb
e
f
d
1 2 3
7
6
8
45
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
Vu2
u1
u3
I
3模( TMR)表决系统的结构表决器
U=(u1∧ u2)∨ (u2∧ u3)∨ =(u1∧ u3)
1.结构冗余
(2)动态冗余,多重模块待机储备,相继运行
M1
M2
M3
主模块备用I
待机储备系统结构开关
Mn
….
备用备用
1.结构冗余
(3)混合冗余 H( N,K)
M1
M2
MkI
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备份块 n
Else 错误恢复块的工作方式保存现场队空从恢复块的备份块队列中取一个模块激活此模块执行此模块恢复现场接受测试 T
有问题显示错误及位置继续执行后续工作通过不通过