软件工程教案_12(第六九节)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程周期
重构
软件诞生
§7.2 软件维护的特点
7.2.1 维护的成本
M = P+K e(c-d )
M : 维护工作总工作量
P : 生产性工作量 K : 经验常数
c : 复杂度 d : 对该软件熟悉程度的度量
7.2.2 维护中的典型问题
(1)难以跟踪软件版本的进化过程, 软件的变化未在文档中反映出来.
错误植入模型
Mills将播种模型用于程序中残留错误的估
算,称错误植入模型
播种模型:
N Nt≈
n nt
N: 程序中原有残留的错误数
Nt:新植入的错误数
n: 测试发现的原有错误数
nt :测试发现的植入错误数
N=
n nt
N
t
Hyman对错误植入模型的改进
E E
T
1
≈
E2 E0
E T =E 1 E 2 /E 0
(推测错误产生的时间间隔)
方法:估算平均故障时间(MTTF估算公式)
当故障率为独立于时间的常量λ:
MTTF=λ1
=
1 K(ET/IT- Ec(t)/IT)
K : 经验常数
ET : 程序中原有的残留错误数
IT : 程序长度
t: 测试时间
Ec(t):在0-t期间内发现的错误总数
推测残留在程序中的错误数
•注意错误的群集现象,在错误近邻
检查。
•找到错误的本质并修改
•采用回归测试,避免因修改引起的
新错误。
•修改源程序。
§6.9 测试中的可靠性分析
开发过程中,利用测试的统计数据来 估算软件的可靠性,以控制软件的质 量。
•推测错误的产生频度 •推测残留在程序中的错误数 •评价测试的精确度和覆盖率
推测错误的产生频度
改正性 适应性 维 护 维 护 20%
25%
扩充与完 善性维护
50%
其它维护 5%
改正性维护占全部维护量的比率已从80年代初 的20%大幅度下降, 90年代初一些公司的产品 差错率已接近于零
各类维护活动的根本目的是延长软件生存期
2个月-2年
软件 生存 周期
计 划
分 析
设 计
编 码
测 试
1年-10年 运行和维护其(它简维称护维护) 改善期 稳定4期% 陈旧期
7.4.3 重新验证程序
1.静态确认 2.计算机确认 3.维护后的验收
从维护角度所需的测试种类:
(1) 对修改事务的测试 (2) 对修改程序的测试 (3) 操作过程的测试 (4) 应用系统运行过程的测试 (5) 使用过程的测试 (6) 系统各部分间接口的测试 (7) 与系统软件接口的测试 (8) 安全性测试 (9) 后备/恢复过程测试
ET: 程序中原有的残留错误数 E1: 1号测试员在某一时间内发现的错误数 E2: 2号测试员在同一时间内发现的错误数 E0: 两位测试员共同发现的错误数
第七章 软件维护与软件再工程
§7.1 软件维护的概念
四类维护活动:
• 改正性维护 • 适应性维护 • 扩充与完善性维护 • 预防性维护
三类维护所占比例:
维护过程中作应记录的数据
程序标识 源程序语句数目 机器代码指令条数 ....... .......
以收集的数据为基础构造维护数据库, 供维护评价使用.
§7.4 软件维护的实施
7.4.1 修改源程序的三个步骤
分析和理解程序 修改程序 重新验证程序
7.4.2 修改程序的副作用
➢修改代码的副作用 ➢修改数据的副作用 ➢修改文档的副作用
聪明猴子:能够从它的笨兄弟那里获得随机测试的结果,
增加了对环境的认知能力, 有目的地敲键盘, 不仅限于查找崩溃缺陷,同时查看数据,检查 操作结果,找出与预期结果的差别
自动化测试工具实例
美国国际软件自动化(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) 二分查找法
(2)难以跟踪软件的创建过程. (3)难以读懂他人程序.
(4)无文档或不全. (5)软件人员流动性大. (6)设计时未考虑修改需要,修改困难. (7)维护工作无吸引力,缺乏成就感.
§7.3 软件的维护任务
7.3.1 维护机构
修改 负责人
维护申请
配置管理员
维护管理员
系统监督员
维护人员
7.3.2 保存维护记录
一百万只猴 子在一百万 只键盘上敲 一百万年, 它们最终就 可能写出莎 士比亚话剧 等巨著”.
只要不停电,偶尔能够得到香蕉,猴子就会永远测试下去
猴子的进步
笨猴子:一点也不懂测试软件, 只是随机地单击或按键,
直至发生两件事情之一:完成循环或系统崩溃.
不太笨的猴子: 具有崩溃辨认能力,
能够重新启动系统开始测试
6.7.2 测试测试自动化
另一类软件测试工具,可以自动执行测试用 例、查找软件缺陷、分析并记录测试结果。
测试工作台(下游CASE工具)
测试数据生成器
规约
源代码 测试管理器 测试数据 预测器
动态分析器
Βιβλιοθήκη Baidu
被测试 的程序
测试结果 测试预估
执行报告
模拟器
文件比较器 报告生成器
测试结 果报告
随机测试自动化工具:猴子测试员 一个想法: “如果让
(1) 归纳法
不能
收集 有关 数据
组织 数据
错误 线索
研究 线索
线索 关系
假设 错误
构造
关系
原因 不
线索
能 能证
纠正
证明 明
错误 能 假设
(2) 演绎法
出错
剩余
待定
列举 原因 排除 错因 对保 错因 证明 能
可能
不会
留的
留下
确定
错误
发生
假设
的假
错误
原因
原因
推断
设
无剩余
收集更 多数据
不能
6.8.2 修改错误原则