软件工程导论
8.1 软件维护的概念
维护目的:
满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的。
维护的概念:
所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
1、改正性维护:对程序使用期间发现的程序错误进行诊断和改正的过程;占维护工作量17-21%。
2、适应性维护:配合变化了的环境进行修改软件的活动;占维护工作量18-25%。
3、完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的改进工作;占维护工作量50-66%。
4、预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作;占维护工作量4%左右。
维护种类:
8.2 维护的特点
一. 维护方式
8.2 维护的特点
二.与软件维护有关的问题
8.3 维护的过程
一.建立软件维护的组织,在组织中有总负责人、系统管理员和维护管理员等。
二.编写维护的报告
用标准化的格式表达所有软件维护的要求。要求包括下列内容:
1.满足维护要求表中提出的要求所需要的工作量;
2.维护要求的性质;
3.该项要求的优先顺序;
4.与修改有关的事后数据。
维护组织
8.3 维护的过程
三.为每一个维护要求规定一个标准化的事件序列:
1.明确维护的类型:纠错性维护,进一步分清是适应性维护还是完善性维护;
2.对纠错性维护从评价错误的严重性开始,分别不同程度采取不同的方法;
3.适应性维护和完善性维护沿着同一路径推进,确定优先顺序后开始工作;
4.对恶性软件故障,应把所有的资源用来解决问题;
5.对任何类型的维护都要进行同样的技术工作,包括:修改软件
、设计复审、必要的代码修改、单元测试、集成测试、验收测试和复审等。
8.3 维护的过程
维护阶段的事件流
4. 保存维护记录
①程序标识;
②源语句数;
③机器指令条数;
④使用的程序设计语言;
⑤程序安装的日期;
⑥自从安装以来程序运行的次数;
⑦自从安装以来程序失效的次数;
⑧程序变动的层次和标识;
⑨因程序变动而增加的源语句数; 因程序变动而删除的源语句数; 每个改动耗费的人时数; 程序改动的日期; 软件工程师的名字; 维护要求表的标识; 维护类型; 维护开始和完成的日期; 累计用于维护的人时数; 与完成的维护相联系的纯效益。
5. 评价维护活动
从7个方面度量维护工作:
(1) 每次程序运行平均失效的次数;
(2) 用于每一类维护活动的总人时数;
(3) 平均每个程序、每种语言、每种维护类型所做的程序变动数;
(4) 维护过程中增加或删除一个源语句平均花费的人时数;
(5) 维护每种语言平均花费的人时数;
(6) 一张维护要求表的平均周转时间;
(7) 不同维护类型所占的百分比。
8.4 可维护性
决定软件可维护性的因素
8.4 可维护性
与可维护性相关的文档
第八章小结
一.软件维护是软件生存周期的最后一个阶段,也是持续时间最长、代价最大的一个阶段。
二.软件维护包括四类活动:改正性维护、适应性维护、完善性维护和预防性维护。
三.软件的可理解性、可测试性和可维修性是决定软件可维护性的基本因素。
四.软件生存周期的每个阶段和软件可维护性密切相关。
五.文档是影响软件可维护性的决定因素。
六.文档分为用户文档和系统文档,它们都必须和程序代码同时维护才有真正的价值。
习题1答案
1、 假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得的的结果应该精确到小数点后4位。一旦实现并测试完之后,改产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你作出选择的理由。
题目解答
1、对这个软件的需求很明确,实现开方功能的算法也很成熟,因此,既无须通过原型来
需求也无须用原型来验证设计
。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。
习题1答案
2、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?
答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛使用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。
综上所述,采用增量模型来完成这个项目比较恰当。
P54页第5题:
北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。
P54页第5题:
电话号码=【校内电话号码|校外电话号码】
校内电话号码=非零数字+3位数字
校外电话号码=【本市号码|外地号码】
本市号码=数字零+8位数字
外地号码=数字零+3位数字+8位数字
非零数字=【1|2|3|4|5|6|7|8|9】
数字零=0
3位数字=3{数字}3
8位数字=非零数字+7位数字
7位数字=7{数字}7
数字=[0|1|2|3|4|5|6|7|8|9]
P73页第3题:
银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
P73页第3题E-R图:
计算机储蓄系统的实体——联系图
P73页第3题数据流图:
P73页第5题:
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。
P73页第5题数据流图:
病人
生理
信号
警告信息
护士
D2患者日记
定时的
生理信号
要求报告
病情报告
生理
信号
危急病
人信息
D1患者安全范围
日期
时间
时钟
生
理
信
号
课堂练习:
录入统计计算某班学生成绩,画出数据流图(DFD)。
学生成绩表数据结构如下:
学号| 高数| 物理| 英语| 计算机| 法律常识| 总分| 平均分| 不及格门数| 升留补|
需求功能如下:
1. 录入全班学生各课的考分,生成成绩表;
2. 检查各课成绩,修改错误,补充未录入成绩,删除非法成绩 ;
3. 计算总分,平均分;
4 .统计不及格门数,然后再写入升级、补考、留级;
5. 打印成绩通知单,交家长。
课堂作业:
教务处
学生成绩表
录入
学生成绩
1
D1
检查
学生成绩
2
学生成绩
计算总分/平均分
3
计算
不及格
门数
4
打印
成绩
通知单
6
家长
本人
成绩通知单
错误成绩通知
开始
Y
取下一部门
打开职工工资表
取下一职工
性别
年龄
职务?
处
科
员
+50
+45
+35
写入工资表
<55
>=55
女
N=年龄
-55
工资*1.05
N=0?
N-1
年龄
职务?
处
科
员
+50
+40
+30
写入工资表
<65
>=65
N=年龄
-65
工资*1.04
N=0?
N-1
下一职工?
下一部门?
结束
N
N
Y
附注:女退休后每年工资加 5%
男退休后每年工资加 4%
例 普调工资
男
例题解答
打开部门工资表
性别
女
男
年龄
年龄
<55
>=55
<65
>=65
职务
N=年龄-65
处 科 员
+50 +45 +35
处 科 员
+50 +40 +30
工资=工资+增资
写入工资表
写入工资表
工资=工资+增资
职务
N=年龄-55
工资*1.05
工资*1.04
N=N-1
N=N-1
写入工资表
写入工资表
下一部门?
下一职工?
普调工资的 N-S图
例题解答
UNTIL 没有下一部门?
P1
P1
def
打开部门工资表
UNTIL 没有下一职工?
P2
def
P2
性别
女
年龄
男
>=55
<55
职务
处
科
员
+50
工资=工资+增资
+45
写入工资表
+35
N=年龄-55
UNTIL N<=0 ?
P3
写入工资表
P3
def
N=N-1
工资*1.05
普调工资的 PAD图
对性别是男的省略掉,和女性基本一致。
也可以用DO WHILE 型循环,但DO UNTIL 型各简单。分析为啥?
P174页4题(3)
(1)语句覆盖的测试用例
因为每个判定表达式为真为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。
下面是实现语句覆盖的典型测试用例:
1、使3个判定表达式之值全为假
输入:A=1,B=1,C=1
预期的输出:X=1,Y=2,Z=3
2、使3个判定表达式之值全为真
输入:A=20,B=40,C=60
预期的输出:X=1,Y=2,Z=3
P174页4题(3)
(2)路径测试的测试用例
本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。
下面是实现路径覆盖的典型测试用例:
1、3个判定表达式之值全为假
输入:A=1,B=1,C=1
预期的输出:X=1,Y=2,Z=3
2、3个判定表达式之值依次为假、假、真
输入:A=1,B=1,C=60
预期的输出:X=1,Y=2,Z=30
P174页4题(3)
3、3个判定表达式之值依次为假、真、假
输入:A=1,B=40,C=1
预期的输出:X=1,Y=20,Z=3
4、3个判定表达式之值依次为假、真、真
输入:A=1,B=40,C=60
预期的输出:X=1,Y=20,Z=30
5、3个判定表达式之值依次为真、假、假
输入:A=20,B=1,C=1
预期的输出:X=10,Y=2,Z=3
习题:根据下图按六种覆盖方法,设计测试用例
�����
�����
X>=80 and y>=80�
x+y>=140 and
(x>=90 or y>=90) �
A=1�
A=3�
A=2�
E�
D�
C�
B�
A�
O�
N�
Y�
N�
Y�
1.语句覆盖:
X=85,Y=85(路径A-E); X=95,Y=50 (路径B-C-E); X=75,Y=75 (路径B-D-E);
2. 判断覆盖:
X=85,Y=85(判断1成立); X=95,Y=50 (判断1不成立,判断2成立);
X=75,Y=75(判断1、判断2都不成立);
习题五
3题
判断1
判断2
条件1
条件2
条件3
条件4
条件5
�����
�����
X>=80 and y>=80�
x+y>=140 and
(x>=90 or y>=90) �
A=1�
A=3�
A=2�
E�
D�
C�
B�
A�
O�
N�
Y�
N�
Y�
3. 条件覆盖:
X=85,Y=85(判断1两条件成立);
X=95,Y=50 (判断2中条件3、条件4成立);
X=50,Y=90 (判断2中条件3、条件5成立);
X=60,Y=60(判断1、判断2各个条件都不成立);
�����
�����
X>=80 and y>=80�
x+y>=140 and
(x>=90 or y>=90) �
A=1�
A=3�
A=2�
E�
D�
C�
B�
A�
O�
N�
Y�
N�
Y�
4. 判断/条件覆盖:
X=85,Y=85(判断1为Y 且两条件成立);
X=95,Y=50 (判断2为Y 且条件3、条件4成立);
X=50,Y=95 (判断2为Y 且条件3、条件5成立);
X=60,Y=60(判断1、判断2为N 且各个条件都不成立);
�����
�����
X>=80 and y>=80�
x+y>=140 and
(x>=90 or y>=90) �
A=1�
A=3�
A=2�
E�
D�
C�
B�
A�
O�
N�
Y�
N�
Y�
5. 条件组合覆盖:各种组合如下:
(1)X≧80,Y ≧ 80; (2) X ≧80,Y﹤80;
(3) X﹤80,Y ≧ 80;(4) X﹤80,Y﹤80;
(5) X+Y ≧ 140, X≧90,Y ≧ 90; (6) X+Y ≧ 140, X≧90,Y < 90;
(7) X+Y ≧ 140, X<90,Y ≧ 90; (8) X+Y ≧ 140, X<90,Y < 90;
X+Y < 140, X≧90,Y ≧ 90;(不可执行)
X+Y < 140, X≧90,Y < 90;
(11) X+Y < 140, X<90,Y ≧ 90; (12) X+Y < 140, X<90,Y < 90;
�����
�����
X>=80 and y>=80�
x+y>=140 and
(x>=90 or y>=90) �
A=1�
A=3�
A=2�
E�
D�
C�
B�
A�
O�
N�
Y�
N�
Y�
路径覆盖:判断/条件覆盖已经覆盖了全部路径。
X=85,Y=85(判断1为Y 且两条件成立);
X=95,Y=50 (判断2为Y 且条件3、条件4成立);
X=50,Y=95 (判断2为Y 且条件3、条件5成立);
X=60,Y=60(判断1、判断2为N 且各个条件都不成立);
�����
�����
X>=80 and y>=80�
x+y>=140 and
(x>=90 or y>=90) �
A=1�
A=3�
A=2�
E�
D�
C�
B�
A�
O�
N�
Y�
N�
Y�
按黑盒法设计测试用例的解答:
条件 合理等价类 不合理等价类
年龄: 男:18~28 (1) <18 ( 2 ) >28 ( 3)
女:18~25 (4) <18 ( 5) >25 ( 6)
身高: 男:1.65~1.85米 (7) <1.65 ( 8) >1.85 ( 9 )
女:1.6~1.75米 ( 10) <1.6 ( 11) >1.75 ( 12)
文化: 高中及高中以上 (13) 高中以下、
( 14)
英语: 通过四级 ( 15 ) 四级以下 ( 16)
健康: 无疾病 ( 17) 有疾病、残疾 ( 18)
预期: 通过 报错
测试用例设计结果:
1. 合理测试用例1:男,21岁,1.75米,本科,过四级,健康。覆盖了合理等价类 1、7、13、15、17;
2. 合理测试用例2: 女,20岁,1.7米,本科,过四级,健康。覆盖了合理等价类4、10、13、15、17;
3. 不合理测试用例:男,15岁,1.75米,本科,过四级,健康。覆盖了2;
4. 不合理测试用例:男,30岁,1.75米,本科,过四级,健康。覆盖了4;
5.不合理测试用例:男,21岁,身高 1.5米,本科,过四级,健康,覆盖了9;
6.不合理测试用例:男,21岁,身高 2.2米,本科,过四级,健康,覆盖了10;
7. 不合理测试用例:女,15岁,1.7米,本科,过四级,健康,覆盖了5;
8. 不合理测试用例:女,29岁,1.7米,本科,过四级,健康,覆盖了6;
9. 不合理测试用例: 女、身高1.5 覆盖了11,其它数据略;
10.不合理测试用例: 女、身高2.0 覆 盖了121,其它数据略;
11.不合理测试用例:男、 文化:小学,覆盖了14,其它数据略;
12.不合理测试用例:男、英语四级以下覆盖了16,其它数据略;
13.不合理测试用例:男、健康有肺病,覆盖了18,其它数据略;
14.不合理测试用例:女、文化:小学,覆盖了14,其它数据略;
15.不合理测试用例:女、英语四级以下覆盖了16,其它数据略;
16.不合理测试用例:女、健康有肺病,覆盖了18,其它数据略;
黑盒测试习题:
某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。现要求用黑盒测试法中的边界值法写出测试用例。
答:
输入条件 测试用例说明 测试数据
报表日期的 1个数字字符 5
类型及长度 5个数字字符 20035
7个数字字符 2003005
有1个非数字字符 2003.5
全部是非数字字符 MAY---
6个数字字符 200305
日期范围 在有效范围 200301
边界上选取 200812
数据 200300
200813
答:
输入条件 测试用例说明 测试数据
月份范围 月份为1月 200301
月份为12月 200312
月份<1 200300
月份>12 200313
P174页4题(3)
6、3个判定表达式之值依次为真、假、真
输入:A=20,B=1,C=60
预期的输出:X=1,Y=20,Z=30
7、3个判定表达式之值依次为真、真、假
输入:A=20,B=40,C=1
预期的输出:X=10,Y=20,Z=3
8、3个判定表达式之值全为真
输入:A=20,B=40,C=60
预期的输出:X=10,Y=20,Z=30
按黑盒法分析合理与不合理等价类,设计测试用例。
某涉外五星宾馆招聘服务员,条件为
(1) 男,年龄 18-28,身高 1.65-1.85米,高中以上文化程度;
(2) 女,年龄 18-25,身高 1.6-1.75米,高中以上文化程度;
(3) 外语:英语通过4级;
(4) 身体健康,无疾病;
(5) 五官端正,无残疾;
对性别是男的省略掉,和女性基本一致。
也可以用DO WHILE 型循环,但DO UNTIL 型各简单。分析为啥?