软件工程考试题.docx
《软件工程考试题.docx》由会员分享,可在线阅读,更多相关《软件工程考试题.docx(13页珍藏版)》请在冰豆网上搜索。
软件工程考试题
一、填空题
1.软件生命周期可划分为定义、开发和维护3个时期,通常把这3个时期再细分为8个阶段,它们是①问题定义、②可行性研究、③需求分析、④总体设计、⑤详细设计、⑥编码和单元测试、⑦综合测试和⑧维护,其中的维护阶段的工作量是8个阶段中最大的。
2.可行性研究的任务是从技术、经济和操作等三个方面研究软件项目可行性。
3.至少应该从一致性、现实性、完整性和有效性4个方面验证软件需求的正确性,其中完整性和有效性这两个方面的正确性必须有用户的积极参与才能验证,而且为了验证这两个方面的正确性,往往需要开发原型系统。
4.软件总体设计时应遵循模块化、抽象、逐步求精、信息隐藏、局部化、和模块独立等6条基本原则。
详细设计通常以结构程序设计技术为逻辑基础,因为从软件工程观点看,可理解性是软件最重要的质量标准之一。
5.软件测试的目的是发现错误,通常把测试方法分为黑盒测试和白盒测试两大类。
因为通常不可能做到穷尽测试,所以精心设计测试方案是保证达到测试目的所必须的。
6.软件维护通常包括4类活动,它们分别是改正性维护、适应性维护、
完善性维护、预防性维护。
二、判断下述提高软件可维护性的措施是否正确,正确的在括弧内写对,错的写错。
1.在进行需求分析时同时考虑维护问题。
(对)
2.完成测试后,为缩短源程序长度而删去程序中的注释。
(错)
3.尽可能在软件开发过程中保证各阶段文档的正确性。
(对)
4.编码时尽可能使用全局变量。
(错)
5.选择时间效率和空间效率尽可能高的算法。
?
(错)
6.尽可能利用硬件的特点以提高效率。
?
(错)
7.重视程序结构的设计,使程序具有较好的层次结构。
(对)
8.使用维护工具或软件工程环境。
(对)
9.进行概要设计时尽可能加强模块间的联系。
(错)
10.提高程序可读性,尽可能使用高级语言编程。
(对)
三、按下述要求完成给出的程序流程图,即在答案栏内写出图中A、B、C、D、E的正确内容
给程序输入二维数组W(I,J),其中I≤M,J≤N(MTN均为正整数)。
程序打印出数组中绝对值最小的元素值Q=W(K,L),及其下标K、L的值。
假定数组中仅有一个绝对值最小的元素。
应该完成的程序流程图如下所示
[答案栏]
A:
|Q|>|W(i,j)|
B:
j=j+1
C:
j循环untilj>N
D:
i=i+1
E:
i循环untili>N
四、下面给出了用盒图描绘的一个程序的算法,请用逻辑覆盖法设计测试方案,要求做到用语句覆盖()和路径覆盖
解:
实现语句覆盖的测试方案如下:
1)覆盖THEN部分的语句,即使得条件(A>0)AND(B>0)和条件(C>A)OR(D
输入:
A=1,B=1,C=0,D=1
预期输出:
X=2,Y=2
2)覆盖ELSE部分的语句,即使得条件(A>0)AND(B>0)和条件(C>A)OR(D
输入:
A=0,B=-1,C=0,D=1
预期输出:
X=1,Y=1
2.实现路径覆盖的测试方案如下:
1)覆盖两个条件均为假的路径
输入:
A=-1,B=-2,C=-3,D=3
预期输出:
X=1,Y=0
2)覆盖第一个条件为假第二个条件为真的路径
输入:
A=-1,B=-2,C=1,D=-3
预期输出:
X=1,Y=4
3)覆盖第一个条件为真第二个条件为假的路径
输入:
A=1,B=1,C=0,D=2
预期输出:
X=2,Y=2
4)覆盖两个条件均为真的路径
输入:
A=-1,B=-2,C=2,D=1
预期输出:
X=3,Y=1
总结:
逻辑覆盖法:
语句覆盖:
测试用例能使被测程序的每条执行语句至少执行一次
判断覆盖:
测试用例能使被测程序中的每个判断至少取得一次“真”和一次“假”,又称分支覆盖
条件覆盖:
测试用例能使被测程序中每个判断的每个条件至少取得一次“真”和一次“假”。
如果判断中只有一个条件,则条件覆盖便满足判断覆盖,否则,不一定。
判断/条件覆盖:
测试用例既满足判断覆盖,又满足条件覆盖。
条件组合覆盖:
测试用例使每个判定中所有可能的条件取值组合至少执行一次。
(本题:
16种)(最佳)
五、某高校可用的电话号码有以下几类:
校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨外地电话需先拨0,如果是本市电话再接着拨8位电话号码(第1位不是0),如果是外地电话则先拨区码(3~5数字),再拨当地电话号码(7或8位数字,第1位不是0)。
请定义上述的电话号码。
解:
电话号码=[校内号码|校外号码]
校内号码=非零数字+3位数字
校外号码=[本市号码|外地号码]
本市号码=数字零+非零数字+7位数字
外地号码=数字零+区码+当地号码
当地号码=非零数字+6{数字}7
区码=3{数字}5
非零数字=[1|2|3|4|5|6|7|8|9]
数字零=0
3位数字=3{数字}3
7位数字=7{数字}7
数字=[0|1|2|3|4|5|6|7|8|9]
以下是用程序流程图描绘的处理算法,请把它改画为等价的盒图(N-S图)。
解:
七、办公室复印机的工作过程大致如下:
未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接受复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排队故障,故障排除后回到闲置状态。
请用状态转换图描绘复印机的行为。
解
八、为开发一个铁路自动售票系统(该系统预计从2009年使用到2019年),请完成下面的数据流图和数据字典,即从供选择的答案中选出A、B、C、D和E的内容
1.数据流图
[供选择的答案]
A~E ⑴车次表;⑵接受;⑶售票记录;⑷购票请求;⑸拒绝。
解:
A:
购票请求,B:
接受C:
拒绝D:
车次表E:
售票记录
2.数据字典
购票请求={乘车日期+到站+车次}
乘车日期=“2009”...“2019”+“/”+“01”...“12”+“/”+‘“01”...“31”
到站=4{字母}20
字母=[“A”…“Z”|“a”…“z”]
车次=“001”…“999”
拒绝=[无车次|无票]
无车次=“notrain”
无票=“noticker”
接受=“tosale”
已收款=“yes”
车次表={起站+止站+车次}
起站=止站=到站
售票记录={乘车日期+起站+止站+车次+座号}
座号=车厢号+座位号
车厢号=“01”…“20”
座位号=“001”...“100”
注:
⑴“01”…“20”表示数字范围从01到20;启示
⑵乘车日期应给出年、月、日,例如,2009/08/21;
⑶假设每个车厢有100个座位。
九、画出简化的文本编辑程序的用例模型,该编辑程序的主要功能有建立文件、打开文件、插入文本、修改文本和保存文件。
解:
十、如下图所示的程序流程图描绘了一个非结构化的程序(非结构化===>结构化)。
为什么说它是非结构化的?
解:
循环控制结构有两个出口。
利用附加变量flag设计一个等价的结构化程序,用盒图描绘设计结果。
不用附加变量,设计一个等价的结构化程序,用盒图描绘设计结果。
解:
十一、画出图形用户界面(GUI)的状态转换图。
该界面具有一个主菜单和一个带有文件打开命令的文件菜单,在每个菜单上都有一条退出命令。
假设每次只有一个文件能够打开。
解:
十二、有一个长度为48000条机器指令的程序,第一个月由甲、乙二人分别测试它。
甲改正了20个错误,使程序的平均无故障时间(MTTF)达到了8小时。
乙在测试该程序的另一个副本时改正了24个错误,其中6个错误与甲改正的相同。
然后,由甲一个人继续测试这个程序。
请问
⒈刚开始测试时程序逻辑中的错误总数ET是多少?
解:
估计:
20*24/6=80个
⒉为使平均无故障时间达到240h,如果甲不利用乙的工作成果,则他还需再改正多少个错误?
解:
由
(1),Et=80===>K=100
==>Ec
(1)=78,故他还需改正78-20=58个错误。
注:
采用此法,纠错接受后,依然有80-78=2个错误潜伏在程序中。
⒊为使平均无故障时间达到480h,如果甲利用了乙的工作成果,则他还需再改正多少个错误?
解:
==>Ec
(2)=79
甲乙共已经测试了20+24-6=38个错误,因此还需测试79-38=41个错误。
注:
采用此法,纠错接受后,依然有80-79=1个错误潜伏在程序中。
十三、用Jackson图表示下图所示的二维表格:
解:
:
十四、有一过程,其流程如下图所示。
其中b1、b2、b3为判定的逻辑条件,s1、s2为加工处理。
试用判定表给予描述。
解: