软件工程导论大题.docx
《软件工程导论大题.docx》由会员分享,可在线阅读,更多相关《软件工程导论大题.docx(26页珍藏版)》请在冰豆网上搜索。
软件工程导论大题
1、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得的的结果应该精确到小数点后4位。
一旦实现并测试完之后,改产品将被抛弃。
你打算选用哪种软件生命周期模型?
请说明你做出选择的理由。
答:
对这个软件的需求很明确,实现开方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。
此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。
2、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。
由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。
你打算采用哪种软件生命周期模型?
为什么?
对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。
使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛使用的字处理软件的新版本,从上述事实至少可以得出3点结论:
第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。
综上所述,采用增量模型来完成这个项目比较恰当。
画图题:
1、录入统计计算某班学生成绩,画出数据流图(DFD)。
学生成绩表数据结构如下:
学号|高数|物理|英语|计算机|法律常识|总分|平均分|不及格门数|升留补|
需求功能如下:
(1)录入全班学生各课的考分,生成成绩表;
(2)检查各课成绩,修改错误,补充未录入成绩,删除非法成绩;
(3)计算总分,平均分;
(4)统计不及格门数,然后再写入升级、补考、留级;
(5)打印成绩通知单,交家长。
2、一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。
对于需要再次订货的零件应该列出编号、名称、数量、价格、主要供应商等内容。
零件的出入库称为事务,通过放在库房的CRT终端把事务报告给订货系统。
当某种零件的库存量少于库存临界值时就应该再次订货。
仓库管
理员
1.1
接收
事务
采购员
(部)
事务
订货
报表
库存清单(信息)
2
产生
报表
订货信息
订货信息
订货信息
事务
1.2
更新
库存
清单
库存
信息
1.3
产生
订货
3、办公室复印机的工作过程大致如下:
未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;
如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接受复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员排除故障,故障排除后回到闲置状态。
复印机的状态转换图
闲置
复印
do/复印
卡纸
do/警告
缺纸
do/警告
复印命令
完成命令
装满纸
卡纸故障
缺纸故障
排除了卡纸故障
4、某厂对部分职工重新分配工作的政策是:
年龄在伙岁以下者,初中文化程度脱产学习。
高中文化程度当电工;年龄在20岁到40岁之间者,中学中学文化程度男性当钳工,女性当车工,大学文化程度都当技术员。
年龄在40岁以上者,中学文化程度当材料员,大学文化程序当技术员。
请用判定表或判定树描述上述问题的加工逻辑。
判定表
1
2
3
4
5
6
7
8
9
10
11
年龄
C
C
D
D
D
D
D
E
E
E
文化
G
H
H
G
G
H
I
G
H
I
性别
--
--
M
M
F
F
--
--
--
--
脱产学习
√
电工
√
钳工
√
√
车工
√
√
技术员
√
√
材料员
√
√
条件取值表
条件名
取值
符号
取值数
年龄
<=20
C
M1=3
>20,<40
D
>=40
E
文化程度
中学
G
M2=3
高中
H
大学
I
性别
男
M
M3=2
女
F
5、某报表处理系统要求用户输入处理报表的日期,日期限制在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
月份<1200300
月份>12200313
6、一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。
对于需要再次订货的零件应该列出编号、名称、数量、价格、主要供应商等内容。
零件的出入库称为事务,通过放在库房的CRT终端把事务报告给订货系统。
当某种零件的库存量少于库存临界值时就应该再次订货。
画出仓库管理系统的顶层、一层和底层数据流图。
(见课件)
采购员
(部)
订货
报表
库存清单(信息)
2
产生
报表
订货信息
订货信息
订货信息
入库事务
1.2
入库
事务
更新
库存
信息
1.4
产生
订货
1.3
出库
事务
更新
1.1
接收、
识别
事务
出库事务
事务
7、行李托运费的算法为例说明判定表的组织方法。
假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。
当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。
用判定表可以清楚地表示与上述每种条件组合相对应的计算行李费的算法,如表所示。
1
2
3
4
5
6
7
8
9
国内乘客
T
T
T
T
F
F
F
F
头等舱
T
F
T
F
T
F
T
F
残疾乘客
F
F
T
T
F
F
T
T
行李重量W≦30kg
T
F
F
F
F
F
F
F
F
免费
√
(w-30)*2
√
(w-30)*3
√
(w-30)*4
√
√
(w-30)*6
√
√
(w-30)*8
√
(w-30)*12
√
8、画出银行储蓄系统的数据流图。
(课本作业)
储户
存款单
记录存款信息
1
存款信息
打印存款单
2
存款存单
储户
D1存款信息
核对密码
3
存款信息
计算利息
4
取款单
利息值
打印利息清单
5
利息清单
9、画出患者监护系统的数据流图。
(课本作业)
10.练习题:
用N-S图、PAD图表示普调工资。
开始
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%
例普调工资
男
用N-S图:
打开部门工资表
性别
女
男
年龄
年龄
<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图
(上图只有女性普调工资的PAD图,男性普调工资的PAD图类似。
)
11.用六种逻辑覆盖技术对下面的流程图所表示的程序进行测试。
(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成立,判断2不成立)A-E;
X=95,Y=50(判断1不成立,判断2成立)B-C-E;
X=75,Y=75(判断1、判断2都不成立)B-D-E;
(3)条件覆盖:
X=85,Y=85(判断1两条件成立)A-E;
X=95,Y=50(判断2中条件3、条件4成立)B-C-E;
X=50,Y=90(判断2中条件3、条件5成立)B-C-E;
X=60,Y=60(判断1、判断2各个条件都不成立)B-D-E;
(4)判断/条件覆盖:
X=85,Y=85(判断1为Y且两条件成立)A-E;
X=95,Y=50(判断2为Y且条件3、条件4成立)B-C-E;
X=50,Y=95(判断2为Y且条件3、条件5成立)B-C-E;
X=60,Y=60(判断1、判断2为N且各个条件都不成立)B-D-E;
X=90,Y=90
(1)(5)
X=50,Y=90
(2)(7)
X=90,Y=50(3)(6)
X=70,Y=70(4)(8)
X=40,Y=90
(2)(11)
X=90,Y=40(3)(10)
X=40,Y=40(4)(12)
第9个条件本身自相矛盾,所以不能测试。
条件
(1)与条件(9)(10)(11)(12)矛盾,所以也不能测试。
(6)路径覆盖:
判断/条件覆盖已经覆盖了全部路径。
12.根据下图按六种覆盖方法,设计测试用例
Ta
Ta
Fa
Fa
ea
da
ca
ba
a
(A>1)and(B=0)
(A=2)or(X>1)
X=X/A
X=X+1
路径:
ace——L1abd——L2
abe——L3acd——L4
T1
对于第一个判断:
T2
条件A>1取真为T1,取假为
条件B=0取真为T2,取假为
对于第二个判断:
T3
条件A=2取真为T3,取假为
T4
条件X>1取真为T4,取假为
1语句覆盖
v设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
v在图例中,正好所有的可执行语句都在路径L1上,所以选择路径L1设计测试用例:
【(2,0,4)】
注:
(2,0,4)即:
A=2,B=0,X=4下同。
2判定覆盖
v设计若干个测试用例,运行被测程序,不仅每个语句至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。
v对于图例,如果选择路径L3和L4,就可得满足要求的测试用例:
【(2,1,1)】覆盖【L3】
【(3,0,3)】覆盖【L4】
3条件覆盖
v设计若干测试用例,运行被测程序,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
测试用例覆盖分支条件取值
【(2,0,4)】L1
【(1,1,1)】L2
需要注意的是,条件覆盖不一定满足判定覆盖,如:
测试用例覆盖分支条件取值
【(2,0,1)】L1
【(1,1,2)】L3
4判定/条件覆盖
v设计足够的测试用例,使得判断表达式中的每个条件都取到各种可能的值,而且每个判断表达式也都取到各种可能结果。
测试用例覆盖分支条件取值
【(2,0,4)】L1
【(1,1,1)】L2
5条件组合覆盖
v设计足够的测试用例,运行被测程序,使得所有可能的条件取值组合至少执行一次。
第一个判断
记①A>1,B=0作
②A>1,B≠0作
③A≯1,B=0作
④A≯1,B≠0作
第二个判断
⑤A=2,X>1作
⑥A=2,X≯1作
⑦A≠2,X>1作
⑧A≠2,X≯1作
测试用例覆盖分支覆盖条件覆盖组合
【(2,0,4)】(L1)①,⑤
【(2,1,1)】(L3)②,⑥
【(1,0,3)】(L3)③,⑦
【(1,1,1)】(L2)④,⑧
6路径覆盖
v就是设计足够的测试用例,覆盖程序中所有可能的路径。
测试用例通过路径覆盖条件
【(2,0,4)】L1
【(1,1,1)】L2
【(1,1,2)】L3
【(3,0,1)】L4
13.某工厂公开招工,规定报名者的年龄应在16周岁至35周岁之间(到2005年3月30日止)。
即出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。
假定出生年月由6位数字字符表示,前4位代表年,后2位代表月。
(1)利用等价类法设计测试用例.
(2)利用边界值分析法设计测试用例。
等价类表如下:
输入条件
有效等价类
无效等价类
出生年月
对应数值
月份对应数值
①6位数字字符
②有非数字字符
③少于6个数字符④多于6个数字符
⑤在197003---
198903之间
⑧在1—12之间
⑥<197003
⑦>198903
⑨等于0
⑩>12
依据等价类法设计测试用例如下表:
测试数据
期望结果
覆盖等价类
197311
MAY,72
19725
输入有效
①⑤⑧
输入无效
197622
②
输入无效
③
1983011
输入无效
④
195512
输入无效
输入无效
输入无效
输入无效
⑥
199510
⑦
197300
⑨
⑩
依据边界值分析法设计测试用例如下表:
测试数据
期望结果
5个数字字符
7个数字字符
有1个非法字符
全是非法字符
6个数字字符
输入有效
输入无效
输入无效
输入有效
输入有效
输入无效
刚好35周岁
刚好16周岁
刚好>35
刚好<16
月份为1月
月份为12月
月份刚好<1
月份刚好>12
出生年月
对应数值
应数值
月份对
测试数据
输入条件
19745
1983011
19705A
AUGUST
197003
197003
198903
197002
198904
198901
197012
197100
198513
14、图为开发一个铁路自动售票系统(该系统预计从2004年使用到2014年),请完成下面的数据流图(见下图)和数据字典,即从供选择的答案中选出A、B、C、D、E的内容,并给出F、G和H的内容,填在答案栏中。
(20分)
铁路自动售票系统数据流图
乘客
受理
收款
登记
A
C
车费
B
已收款
车票
D
E
(1)数据流图
[供选择的答案]
A~E
(1)车次表
(2)接受(3)售票记录(4)购票请求(5)拒绝
(2)数据字典
购票请求=F
乘车日期=G
到站=4{字母}20
字母=[“A”..”Z”|”a”..”z”]
车次=”001”..”999”
拒绝=[无车次|无票]
无车次=”notrain”
无票=”noticket”
接受=”tosale”
已收款=”yes”
车次表={起站+止站+车次}
起站=止站=到站
售票记录={乘车日期+起站+止站+车次+座号}
座号=车厢号+座位号
车厢号=”01”..”20”
座位号=H
注:
(1)”01”..”20”表示数字范围从01到20;
(2)乘车日期应给出年、月、日,例如,2004/06/21;
(3)假设每个车厢有100个座位。
答案:
A:
购票请求B:
接受C:
拒绝D:
车次表E:
售票记录
F:
{乘车日期+到站+车次}
G:
”2004”..”2014”+”/”+”01”..”12”+”/”+”01”..”31”
H:
“001”..”100”