软件工程期末复习试卷

更新时间:2024-01-03 05:09:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《软件工程》试题

一、从供选择的答案中选出应填入下列叙述中( )内的正确答案。

软件设计中划分程序模块通常遵循的原则是使各模块间的耦合尽可能( A 3 )。三种可能的模块耦合是:

( B 5 ),例如,一个模块直接引用另一个模块中的数据。

( C 6 ),例如,一个模块把开关量作为参数传送给另一个模块。

( D 1 ),例如,一个模块通过公共数据结构把数据传送给另一个模块。 其中, ( E 5 )的耦合性最强。 【供选择的答案】 A: ① 强 ② 适中 ③ 弱

B~E: ① 公共耦合 ② 数据耦合 ③ 逻辑耦合 ④ 外部耦合 ⑤ 内容耦合 ⑥ 控制耦合

二、为高质量地开发软件项目,在软件结构设计时必须遵循( A3 )的原则,( B2 )建立软件系统的模块结构。并且应根据( C 3 )评价系统模块划分的质量。此外在模块设计时,应从5种基本的( D5 )出发,利用它们组合成一个模块的程序块结构。 要求每个( E1 )的结构应是单入口和单出口。 【供选择的答案】 A:① 质量控制 ② 程序优化 ③ 信息隐蔽 ④ 数据共享 ⑤ 模块通信 B:① 自底向上 ② 自顶向下 ③ 衍变的自顶向下 ④ 随机 ⑤ 回归 C:① 数据独立性 ② 程序独立性 ③ 模块独立性 ④ 可修改性 ⑤ 可理解性 D:① 数据结构 ② 处理结构 ③ 功能结构 ④ 成份 ⑤ 控制结构 E:① 程序块 ② 公共块 ③ 数据块 ④ 记录块 ⑤ 通信块

三、从下列叙述中选出5条关于好的程序设计风格的正确叙述。(在对的前面打√) (1) 使用括号以改善表达式的清晰性。x

(2) 对递归定义的数据结构不要使用递归过程。x (3) 尽可能对程序代码进行优化。v (4) 不要修补不好的程序, 要重新写。v (5) 不要进行浮点数的相等比较。v (6) 应尽可能多地输出中间结果。x (7) 利用数据类型对数据值进行防范。v

(8) 用计数方法而不是用文件结束符或输入序列结束符来判别输入的结束。x (9) 程序中的注释是可有可无的。x (10) 使用有意义的标识符。v

四、从下列叙述中选出5条关于软件测试的正确叙述。(在对的前面打√) (1) 为了使得软件容易测试, 应该使用高级的程序设计语言编制程序。v (2) 程序测试是一个程序的执行过程, 目的是为了发现软件中隐藏的错误。v (3) 如果程序中连锁式连接了8个判定(IF)结构, 则程序中总的路径数达28 。v (4) 白盒测试仅与程序的内部结构有关, 完全可以不考虑程序的功能要求。x

1

(5) 为了快速完成集成测试, 采用一次性集成方式是适宜的。v

(6) 对一批模块进行测试,发现错误多的模块中残留的错误将比其它的模块少。v (7) 好的测试用例应能证明软件是正确的。v

(8) 边界值分析方法是取输入/输出等价类的边界值做为测试用例。v (9) 等价类划分方法考虑了各等价类之间取值的组合情况下可能的结果。v (10) 判定覆盖法可能查不出在判定中逻辑运算符使用有误时产生的错误。v

五、从下列叙述中选出5条有利于软件可维护性的正确叙述。(在对的前面打√) (1) 在进行需求分析时需同时考虑如何实现可维护性问题。v

(2) 完成测试作业后,为了缩短源程序的长度应删去程序中的注解。x (3) 尽可能在软件生产过程中保证各阶段文档的正确性。v (4) 编程时应尽可能使用全局变量。x

(5) 选择时间效率和空间效率尽可能高的算法。v (6) 尽可能利用硬件的特点。x

(7) 重视程序结构的设计,使程序具有较好的层次结构。v (8) 使用维护工具或支撑环境。x

(9) 在进行概要设计时应加强模块间的联系。x

(10) 提高程序的可读性,尽可能使用高级语言编写程序。v

(11) 为了加快软件维护作业的进度,应尽可能增加维护人员的数目。x

六、下面是一段用赛德尔迭代法求解线性方程组的程序。其中A[n,n] 是方程组的系数矩阵, B[n]是方程组的右端项,X[n] 是方程组的解向量。eps是控制迭代精度的较小实数。imax是控制迭代的最大次数。flag是标志,=0,表示迭代不收敛;=1,表示迭代收敛。

for k := 1 to n do X[k] := 0.0; X[n] := 1.0; for i := 1 to imax do begin flag := 1; for j := 1 to n to begin s := B[j]; for k := 1 to n do begin

if j =k then s := s + X[k]; s := s-A[j, k] * X[k] end;

if abs(X[j]-s) > (abs(s) + 1.0) * eps then flag := 0; X[j] := s; end;

if flag =1 then goto L1; end; L1:

(1) 试画出它的结构化的程序流程图。 (2) 将它改为N-S图。

(3) 计算它的McCabe环路复杂性。

七、下面是一趟插入排序的程序, 把R[i+1]插入到R[1..i]的适当位置 R[0] = R[i + 1]; j = i;

while ( R[j] > R[0] )

{ R[j + 1] = R[j]; j = j -1; }

2

R[j + 1] = R[0];

用路径覆盖方法为它设计足够的测试用例(while循环次数为0次、1次、2次)。

八、阅读下列关于软件可靠性方面的叙述,回答问题1和问题2。

软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。

某软件中心的评测部为了评估已开发实现的应用软件ASP的可靠性,决定采用软件可靠性的错误播种模型来进行测试和评估。评测部在评估时,作了下列三个假设:

(1) 在测试前,单位长度的故障个数ET / IT 为一常数,此常数基本上落在一个固定的范围内。其中IT 为被测程序的长度(即机器指令条数),ET 为被测程序中故障总数。

(2) 失效率正比于软件中剩余的(潜伏的)故障数,平均无故障时间MTTF与单位长度的剩余故障个数成反比,即 MTTF = 1/(K*εr )。其中εr 为单位长度剩余故障个数,K的典型值现取为200。

(3) 测试中发现的错误都得到了及时改正,在测试过程中没有引入新的错误。评测部对ASP软件人为地植入了10个错误,即NS = 10,在开始测试的一小段时间内,发现了160个固有故障,即n = 160,又发现了

5

植入的故障2个,即nS = 2,被测程序ASP的长度(机器指令条数)为10 。

问题1:用故障播种(植入)的数学模型,估算出被测程序ASP的固有故障的个数N的值。如果通过测试一段时间后,发现的固有错误个数为ED = 795时,请估算此程序的平均无故障时间MTTF值。

问题2:若要求把此MTTF再提高4倍,应至少再排除多少个固有错误? 请简要地列出有关计算式。

参考答案

一、答案:A. ③ B. ⑤ C. ⑥ D. ① E. ⑤

二、答案:A. ③ B. ② C. ③ D. ⑤ E. ①

三、答案:正确的叙述有:(1)、(4)、(5)、(7)、(10)

说明:(1) 利用括号可以明确地规定表达式中各运算符的优先顺序,这样可以提供表达式运算的清晰性,因此是对的。(4) 对于不好的程序,一是程序逻辑混乱以致理解困难,二是隐藏错误多,三是错误定位和修改容易出问题,所以修修补补,越补越糟,不如重新写。(5) 浮点数的运算有其近似性,两个浮点数可能会非常接近但永远不会相等,所以做浮点数的相等比较可能不会有结果。(7) 利用数据类型来检查数据值,这是静态分析的一种手段,叫做类型分析,因此是对的。(10) 使用有意义的标识符,可以提高程序的可读性,因此是对的。

其它的叙述都不对。(2) 对递归定义的数据结构,应当使用递归过程来解决基于这种数据结构的应用问题。(3) 程序代码的优化工作应交给编译器来做,程序设计时应首先考虑程序代码的清晰性、简明性、可读性、正确性、以至于可维护性。(6) 输出中间结果只是在调试程序时才有用,其它时候输出大量中间结果,不但浪费资源,而且给使用者造成麻烦。(8) 从文件输入数据时,应当使用文件结束符来判断输入的结束,使用计数方法判断输入结束不一定是最佳方式。(9) 程序中的注释是必须的,不是可有可无的。

四、答案:正确的叙述有:(1)、(2)、(3)、(4)、(8)。

说明:(1) 使用高级语言编写的程序模块化、结构化程度都比较好,可读性强,容易测试。(2) 程序测试本身应当是一个程序的执行过程,而不是静态的逻辑分析,其目的是发现程序中潜藏的错误。(3) 连锁式分

n8

支结构有n个判定,其路径数有2条,因此当n = 8时程序中总的路径数有2条。(4) 白盒测试基于程序的内部结构设计测试用例,可以不考虑程序的功能要求。(8) 由于在等价类的边界上最容易出错,所以边界值分析方法选取输入∕输出等价类的边界值作为测试用例,可以有效地查错。 不正确的叙述,如(5) 采用一次性集成方式进行模块组装,往往成功的可能性低,而且出现错误时,不容易确定在什么地方出了问题,因此应采用增殖式集成方式,可以把出错的范围局限到少数模块中间。(6) 测试的实践表明,对一批模块进行测试,发现错误多的模块中残留的错误也多,因此必需注意这一现象,

3

弄清哪些模块问题发现得多,对这些模块重点测试。(7) 好的测试用例是能够发现新错误的测试用例,发现不了问题的测试用例就不是好的测试用例,用它们做测试是浪费时间和金钱。(9) 等价类划分法是选择输入等价类的代表值作为测试用例,而因果图法才是考虑了各等价类之间取值的组合情况及可能的结果来设计测试用例的。(10) 语句覆盖法可能查不出在判定中逻辑运算符使用有误时产生的错误。而判定覆盖法则可能查不出在判定中某些条件中关系运算符使用有误时产生的错误。

五、答案:正确的叙述有:(3)、(5)、(7)、(8)、(10)

说明:(3) 尽可能在软件生产过程中保证各阶段文档的正确性,对于保证软件的可靠性、功能性等有相当大的作用,这样可减少用户提出维护请求的可能,即使要更新,工作的难度和工作量也会降低。(5) 选择时间效率和空间效率尽可能高的算法,可以让编程者把注意力集中在提供程序的正确性、可理解性、可修改性、可测试性、可使用性等方面,从而提高可维护性,不必为追求效率而把程序编写得让人看不懂。(7) 如果程序结构设计得较好,层次结构合理,在维护时理解程序和修改程序容易,不易出错。(8) 使用维护

工具或支撑环境可以大大降低维护的工作量。(10) 用高级语言编写程序,易读易懂,可以提高可维护性。

不正确的叙述,如(1) 在需求分析时主要考虑软件要“做什么?”这一阶段对可维护性可以提出要求,要达到什么指标,而如何实现可维护性,是在设计和实现阶段考虑的问题。(2) 在程序中加入注释,这是提高程序可读性,从而提高可维护性的重要手段,不能因为测试通过就删去它们。(9) 在软件概要设计时,对产生的程序模块结构的评价方法就是看模块之间的耦合(联系)是否松散。如果联系密切,这样的结构各部分牵连太多,是不好的。(4) 因此在编程时尽可能用参数表,而不应当用全局变量来传送信息。(6) 尽可能利用硬件的特点,这样的程序可移植性很差,自然维护起来就相当困难了。(11) 增加维护人员会降低维护的生产率,有可能对维护进度带来不利的影响。

六、答案:(1) 结构化的程序流程图:

F k≤n T X[k] = 0; k++; i

i ++; F j≤n T s = B[j]; k = 1; k = 1; F k≤n T

k≤n (2) N-S图:

X[k] = 0; k++; F j==k T j≤n

s = s + X[k];

4

F

x[n]=1; i=1; flag = 0;

i < imax && flag == 0

flag = 1; j = 1; s = s - A[j][k]*X[k]; k ++; s = B[j]; k = 1; k≤n

F F j==k s = s + X[k]; s = s - A[j][k]*X[k]; k ++; |X[j]-s| > (|s|+1)*eps T T |X[j]-s| > (|s|+1)*eps flag = 0;

X[j] = s; j ++; flag = 0; X[j] = s; j ++;

i ++;

(3) McCabe环路复杂性度量V(G) = 判定语句个数+1 = 8

七、`画出该程序的流程图: R[0] = R[i+1]; j = i; ①

测试用例设计 循环 次数 0 1 2 输 入 数 据 j i i i i i i R[i-2] ― ― ― ― 1 2 R[i-1] ― ― 1 2 3 3 R[i] 1 1 3 3 4 4 R[i+1] 2 1 2 2 2 2 R[0] 2 1 2 2 2 2 j i i i-1 i-1 i-2 i-2 ② R[j] > R[0]? T R[j+1] = R[j]; j --; R [j+1] = R[0]F ; | X[j]-s | > (|s|+1)*eps F T flag = 0 X[j] = s j = j+1 预 期 结 果 R[i-2] ― ― ― ― 1 2 R[i-1] ― ― 1 2 2 2 R[i] 1 1 2 2 3 3 R[i+1] 2 1 3 3 4 4 覆 盖 路 径 约束 < = >< >= >>< >>= 路 径 ①③ ①③ ①②③ ①②③ ①②②③ ①②②③ ③

八、答案:

〖问题1〗利用故障播种(植入)模型,被测程序ASP的固有故障个数N的值为: N = NS * n / nS = 10 * 160 / 2 = 800 (个故障)。 根据Shooman模型:

IT105MTTF???100K(ET?EC(t))200(800?795)

5

〖问题2〗把此MTTF再提高4倍,则MTTF = 500,有 得: EC(t) = 799

因此,只要再排除799 - 795 = 4个固有错误,MTTF就可再提高4倍。

IT105MTTF???500K(ET?EC(t))200(800?Ec(t))

一、单项选择题 每小题1分,共20分。(在每小题的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内)

1.在下列工具与环境中( d )属于较早期的CASE。 A.基于信息工程CASE B.人工智能CASE C.结构的基于图形CASE D.集成的CASE环境

2.Putnam成本估算模型是一个( d )模型。

A.静态单变量 B.动态单变量 C.静态多变量 D.动态多变量 3.在McCall软件质量度量模型中,( b )属于面向软件产品修改。 A.可靠性 B.可重用性 C.适应性 D.可移植性 4.ISO的软件质量评价模型由3层组成,其中用于评价设计质量的准则是( b ) A.SQIC B.SQMC C.SQRC D.SQDC 5.软件复杂性度量的参数包括( c )

6

A.效率 B.规模 C.完整性 D.容错性 6.对象实现了数据和操作的结合,使数据和操作( c )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 7.软件调试技术包括( b )

A.边界值分析 B.演绎法 C.循环覆盖 D8.瀑布模型的存在问题是( d ) A.用户容易参与开发 B.缺乏灵活性

C.用户与开发者易沟通 D.适用可变需求

9.软件测试方法中的静态测试方法之一为( b ) A.计算机辅助静态分析 B.黑盒法 C.路径覆盖 D.边界值分析

10.软件生命周期中所花费用最多的阶段是( d )

A.详细设计 B.软件编码 C.软件测试11.第一个体现结构化编程思想的程序设计语言是( b ) 7

.集成测试 .软件维护 D

A.FORTRAN语言 B.Pascal语言 C.C语言 D.PL/1语言 12.程序的三种基本控制结构是( b ) A.过程、子程序和分程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和转移

13.在详细设计阶段,经常采用的工具有( d )

A.PAD B.SA C.SC D14.详细设计的结果基本决定了最终程序的( c )

A.代码的规模 B.运行速度 C.质量 D15.需求分析中开发人员要从用户那里了解( a )

A.软件做什么 B.用户使用界面 C.输入的信息 D16.结构化程序设计主要强调的是( d )

A. 程序的规模 B. 程序的效率

C. 程序设计语言的先进性 D. 程序易读性

17.IDEF。图反映系统( d )

8

.DFD .可维护性 .软件的规模 A.怎么做 B.对谁做 C.何时做 D.做什么 18.经济可行性研究的范围包括( d )

A.资源有效性 B.管理制度 C.效益分析 D.开发风险 19.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开 发的决策依据,因必须给出( d)的回答。

A.确定 B.行或不行 C.正确 D.无二义 20.需求分析阶段的任务是确定( d )

A. 软件开发方法 B. 软件开发工具 C. 软件开发费 D. 软件系统的功能

二、填空题(每空2分,共20分)。

21.在软件开发过程中要产生大量的信息,要进行大量的修改, 能协调软件开发,并使混乱减到最低程度。

22.规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件具有 的软件。

23.McCall提出的软件质量模型包括 个软件质量特性。

24.软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、 、

可使用性和效率。

9

25.为了便于对照检查,测试用例应由输入数据和预期的 两部分组成。 26.程序设计语言的心理特性主要表现在 、简洁性、传统性、局部性和顺序性。 27.软件结构是以 为基础而组成的一种控制层次结构。

28.在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、 。

29.结构化语言是介于自然语言和 之间的一种半形式语言。

30.若年利率为i,不计复利,n年后可得钱数为F,则现在的价值P= 。

三、名词解释题 每小题3分,共15分。

31.软件生存周期模型 32.数据字典(DD) 33.内聚性 34.JSP方法 35.多态性

四、简答题 每小题5分,共20分。

36.简述容错技术的四种主要手段,并解释。 37.以G.J.Myers的观点,简述对软件测试的目的。

38.就程序设计语言的工程特性而言,对程序编码有哪些要求?

10

39.模块的内聚性包括哪些类型?

五、应用题 第40小题7分,第41小题8分,第42小题10分,共25分。

40.下面是某程序的流程图: (1)计算它的环路复杂性。

(2)为了完成基本路径测试,求它的一组独立的路径。 41.根据下列条件使用等价划分法设计测试用例。

某一8位微机,其十六进制常数定义为:以0x或0X开头的数是十六进制整数,其值的范围是-7f~7f(表示十六进制的大小写字母不加区别),如0X13,0X6A,-0X3c。 42.图书馆的预定图书子系统有如下功能: (1)由供书部门提供书目给订购组; (2)订书组从各单位取得要订的书目;

11

(3)根据供书目录和订书书目产生订书文档留底; (4)将订书信息(包括数目,数量等)反馈给供书单位; (5)将未订书目通知订书者;

(6)对于重复订购的书目由系统自动检查,并把结果反馈给订书者。 试根据要求画出该问题的数据流程图,并把其转换为软件结构图。

《软件工程》试卷1答案

一、单项选择题 每小题1分,共20分。(在每小题的四个选项中只有一个选项是符合题目

要求的,请将正确选项前的字母填在题后的括号内) 1.在下列工具与环境中( c )属于较早期的CASE。 A.基于信息工程CASE B.人工智能CASE C.结构的基于图形CASE D.集成的CASE环境

2.Putnam成本估算模型是一个( D )模型。

A.静态单变量 B.动态单变量 C.静态多变量 D.动态多变量 3.在McCall软件质量度量模型中,( C )属于面向软件产品修改。

12

A.可靠性 B.可重用性 C.适应性 D.可移植性 4.ISO的软件质量评价模型由3层组成,其中用于评价设计质量的准则是( D ) A.SQIC B.SQMC C.SQRC D.SQDC 5.软件复杂性度量的参数包括( B )

A.效率 B.规模 C.完整性 D.容错性 6.对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 7.软件调试技术包括( B )

A.边界值分析 B.演绎法 C.循环覆盖 D.集成测试 8.瀑布模型的存在问题是( B ) A.用户容易参与开发 B.缺乏灵活性

C.用户与开发者易沟通 D.适用可变需求

9.软件测试方法中的静态测试方法之一为( A ) A.计算机辅助静态分析 B.黑盒法 C.路径覆盖

13

D.边界值分析

10.软件生命周期中所花费用最多的阶段是( D )

A.详细设计 B.软件编码 C.软件测试 D.软件维护 11.第一个体现结构化编程思想的程序设计语言是( B )

A.FORTRAN语言 B.Pascal语言 C.C语言 12.程序的三种基本控制结构是( B ) A.过程、子程序和分程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和转移

13.在详细设计阶段,经常采用的工具有( A )

A.PAD B.SA C.SC D14.详细设计的结果基本决定了最终程序的( C )

A.代码的规模 B.运行速度 C.质量 D15.需求分析中开发人员要从用户那里了解( A )

A.软件做什么 B.用户使用界面 C.输入的信息16.结构化程序设计主要强调的是( D )

A. 程序的规模

14

D.PL/1语言 .DFD .可维护性 .软件的规模 D B. 程序的效率

C. 程序设计语言的先进性 D. 程序易读性

17.IDEF。图反映系统( D )

A.怎么做 B.对谁做 C.何时做 D.做什么 18.经济可行性研究的范围包括( C )

A.资源有效性 B.管理制度 C.效益分析 D.开发风险 19.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开 发的决策依据,因必须给出( B )的回答。

A.确定 B.行或不行 C.正确 D.无二义 20.需求分析阶段的任务是确定( D )

A. 软件开发方法 B. 软件开发工具 C. 软件开发费 D. 软件系统的功能

二、填空题(每空2分,共20分)。

21.在软件开发过程中要产生大量的信息,要进行大量的修改, (软件配置管理) 能协调软件开发,并使混乱减到最低程度。

15

22.规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件具有 (容错功能) 的软件。

23.McCall提出的软件质量模型包括 (11) 个软件质量特性。

24.软件可维护性度量的七个质量特性是 (可理解性、可测试性、可修改性、可靠性、 可

移植性 、 可使用性和效率)。

25.为了便于对照检查,测试用例应由输入数据和预期的 (输出结果) 两部分组成。 26.程序设计语言的心理特性主要表现在 (歧义性) 、简洁性、传统性、局部性和顺序性。 27.软件结构是以 (模块) 为基础而组成的一种控制层次结构。

28.在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、 (判定树) 。

29.结构化语言是介于自然语言和 (形式语言) 之间的一种半形式语言。 30.若年利率为i,不计复利,n年后可得钱数为F,则现在的价值P= ( F/(1+(n*i)) ) 。 三、名词解释题 每小题3分,共15分。 31.软件生存周期模型

是描述软件开发过程中各种活动如何执行的模型。

32.数据字典(DD)

数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。

33.内聚性

16

内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。

34.JSP方法

JSP方法是面向数据结构的设计方法,其定义了一组以数据结构为指导的映射过程,它根据输入,输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构。

35.多态性

指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。或(不同的对象,收到同一消息可以产生不同的结果。)

四、简答题 每小题5分,共20分。 36.简述容错技术的四种主要手段,并解释。

结构冗余:包括静态冗余、动态冗余和混合冗余。

信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。 时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。 冗余附加技术:指为实现上述冗余技术所需的资源和技术。

37.以G.J.Myers的观点,简述对软件测试的目的。

软件测试是(1)为了发现错误而执行程序的过程;(2)一个好的用例能够发现至今尚未发现的错误的测试。(3)一个成功的测试是发现至今尚未发现的错误的测试。

38.就程序设计语言的工程特性而言,对程序编码有哪些要求?

就程序设计语言的工程特性而言,对程序编码有如下要求:

(1)可移植性

17

(2)开发工具的可利用性

(3)软件的可重用性

(4)可维护性

39.模块的内聚性包括哪些类型?

模块的内聚性包括:

(1)偶然内聚

(2)逻辑内聚

(3)时间内聚

(4)通信内聚

(5)顺序内聚

(6)功能内聚

五、应用题 第40小题7分,第41小题8分,第42小题10分,共25分。

18

40.下面是某程序的流程图: (1)计算它的环路复杂性。

(2)为了完成基本路径测试,求它的一组独立的路径。

解:

(1)环路复杂性=判断数+1=6+1=7(个) (2)路径1:(0)—①—(13)—(19) 路径2:(0)—②—③—(14)—(19) 路径3:(0)—②—④—⑤—(15)—(19) 路径4:(0)—②—④—⑥—⑦—(16)—(19)

路径5:(0)—②—④—⑥—⑧—⑨—(17)—(19) 路径6:(0)—②—④—⑥—⑧—⑩—(18)—(19) 路径7:(0)—②—④—⑥—⑧—⑩—(12)—(19) 41.根据下列条件使用等价划分法设计测试用例。

某一8位微机,其十六进制常数定义为:以0x或0X开头的数是十六进制整数,其值的范围是-7f~7f(表示十六进制的大小写字母不加区别),如0X13,0X6A,-0X3c。

解答:等价划分法

①划分等价类并编号,如下表所示。 十六进制整型常量输入条件的等价类表

19

输入数据 合理等价类 不合理等价类 3. 非0x或非-打头的串 十六进制整数 4. 含有非数字且(a,b,c,d,e,f)以外字1. 0x或0X开头1~2位符 数字串 5. 多于5个字符 2. 以-0x打头的1~2位数字串 6. -后跟非0的多位串 7. -0后跟数字串 8. -后多于3个数字 10.小于-7f 十六进制数范围 9.在-7f~7f之间 11.大于7f ②为合理等价类设计测试用例,表中有三个合理等价类,设计两个例子

测试数据 0×23 -0×15 期望结果 显示有效输入 显示有效输入 覆盖范围 1,9 2,9 ③为每个不合理等价类至少设计一个测试用例

测试数据 2 G12 123311 -1012 -011 -0134 -0x777 0x87

期望结果 显示无效输入 显示无效输入 显示无效输入 显示无效输入 显示无效输入 显示无效输入 显示无效输入 显示无效输入 覆盖范围 3 4 5 6 7 8 10 11 42.图书馆的预定图书子系统有如下功能: (1)由供书部门提供书目给订购组;

20

(2)订书组从各单位取得要订的书目;

(3)根据供书目录和订书书目产生订书文档留底; (4)将订书信息(包括数目,数量等)反馈给供书单位; (5)将未订书目通知订书者;

(6)对于重复订购的书目由系统自动检查,并把结果反馈给订书者。 试根据要求画出该问题的数据流程图,并把其转换为软件结构图。

《软件工程》试卷2

一、选择题:(每题1分,共20分)(将答案写在题号前的()中)

( C )1. 软件是( )。

A. 处理对象和处理规则的描述 B. 程序 C. 程序及其文档 A. 主要功能

D. 计算机系统

( B )2. 软件需求规格说明的内容不应包括( )。

B. 算法的详细描述

21

C. 用户界面及运行环境 A. 过程、子程序和分程序

D. 软件的性能 B. 顺序、选择和重复

( B )3. 程序的三种基本控制结构是( )。

C. 递归、迭代和回溯 D. 调用、返回和转移 ( D ) 4. 面向对象的分析方法主要是建立三类模型,即( )。 A) 系统模型、ER模型、应用模型 B) 对象模型、动态模型、应用模型 C) E-R模型、对象模型、功能模型 D) 对象模型、动态模型、功能模型

( C ) 5. 在E-R模型中,包含以下基本成分( )。 A) 数据、对象、实体 B) 控制、联系、对象 C) 实体、联系、属性 D) 实体、属性、操作

( A ) 6. 各种软件维护的类型中最重要的是( )。 A) 完善性维护 B) 纠错性维护 C) 适应性维护 D) 预防性维护 ( B ) 7.软件测试的目标是( )。

A. 证明软件是正确的

B. 发现错误、降低错误带来的风险

C. 排除软件中所有的错误 D. 与软件调试相同 ( D )8.软件生命周期中所花费用最多的阶段是( )

A.详细设计 B.软件编码 C.软件测试 D.软件维护

( C )9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是( )

A.条件覆盖法 B.等价分类法 C.边界值分析法 D.错误推测法

( D )10、详细设计的基本任务是确定每个模块的( )设计

A.功能 B.调用关系 C.输入输出数据 D.算法

( A )11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( )

A.模块化的根据 B.逐步求精的根据 C.抽象的根据 D.信息隐藏和局部化的根据

( D )12.下面几种白箱测试技术,哪种是最强的覆盖准则 ( )

A.语句覆盖 B.条件覆盖 C.判定覆盖 D.条件组合覆盖

( A )13.面向数据流的设计方法把( )映射成软件结构。

A.数据流 B.系统结构 C.控制结构 D.信息流

( A )14.内聚程度最低的是( )内聚

A.偶然 B.过程 C.顺序 D.时间

( A )15.确定测试计划是在( )阶段制定的.

A.总体设计 B.详细设计 C.编码 D.测试

( D )16.需求分析的产品是( )

A.数据流程图案 B.数据字典 C.判定表 D.需求规格说明书

( C )17.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( )

A.数据库设计 B.数据通信 C.数据定义 D.数据维护

( D )18.( )引入了“风险驱动”的思想,适用于大规模的内部开发项目。 A.增量模型 B.喷泉模型 C.原型模型 D.螺旋模型 ( D )19.模块的内聚性最高的是( )

A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚

( D )20.提高测试的有效性非常重要,成功的测试是指( )

A.证明了被测试程序正确无误 B. 说明了被测试程序符合相应的要求 C.未发现被测程序的错误 D.发现了至今为止尚未发现的错误

二.判断题(每题1分,共10分)将答案写在题号前的( )中,正确用√, 错误用χ。

22

( × )1、开发软件就是编写程序。

( × )2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等 测

试。

( × )3、编程序时应尽可能利用硬件特点以提高程序效率. ( × )4、软件需求分析的任务是建立软件模块结构图。 ( √ )5、尽可能使用高级语言编写程序

( × )6、以结构化分析方法建立的系统模型就是数据流图。 ( × )7、进行总体设计时加强模块间的联系。 ( × )8、编码时尽量多用全局变量.

( √ )9、用CASE环境或程序自动生成工具来自动生成一部分程序. ( × )10、软件测试是要发现软件中的所有错误。

三、填空题(每题1分,共5分):将结果填在( )

1、将下面的关系按继承关系、聚集关系或普通关联进行分类。 小汽车---------红旗轿车 ( 继承 ) 小汽车---------驾驶员 ( 普通关联 ) 班级------------学生 ( 聚集 )

2、将下列各项分为类或类的实例

我的汽车 ( 实例 ) 交通工具 ( 类 )

三、简答题:(每题5分,共25分)

1. 软件生命期各阶段的任务是什么? 答:软件生命期分为7个阶段: 1、问题定义:要解决的问题是什么

2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性 3、需求分析:系统必须做什么

4、总体设计:系统如何实现,包括系统设计和结构设计 5、详细设计:具体实现设计的系统 6、实现:编码和测试

7、运行维护:保证软件正常运行。

2、软件重用的效益是什么?

答:1、软件重用可以显著地改善软件的质量和可靠性。

2、软件重用可以极大地提高软件开发的效率。

3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。

3、 自顶而下渐增测试与自底而上渐增测试各有何优、缺点? 答:

① 自顶而下渐增测试

优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。

缺点:需要存根程序,底层错误发现较晚。 ② 自底而上渐增测试

优点与缺点和自顶而下渐增测试相反。

4 、 提高可维护性的方法有哪些?

答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。

23

在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。

在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。

在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。

在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。 在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。

为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术。

简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。 【解答】

测试过程按 4 个步骤进行,即单元测试(模块测试)、集成测试(子系统测试和系统测试)、确认测试(验收测试)和平行运行。

单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。

集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。与其相关的文档是集成测试计划和软件需求说明书。

确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。与其相关的文档是确认测试计划和软件需求说明书。 平行运行把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。与其相关的文档:用户指南、使用手册等。

四、应用题(每题8分,共40分)

1、 假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的

零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。要求:画出系统的数据流图。 答:

2、 将下面给出的伪码转换为N-S图和PAD图。 void root ( float root1, float root2 ) {

i = 1; j = 0; while ( i <= 10 ) {

输入一元二次方程的系数a, b, c; p = b*b – 4*a*c;

if ( p < 0 ) 输出“方程i无实数根”; else if ( p > 0 ) 求出根并输出; if ( p == 0 ) { 求出重根并输出; j = j + 1;

24

} i = i +1;

}

输出重根的方程的个数j; }

【解答】

(1)N-S图 i = 1; j = 0; while ( i <= 10 ) 输入a, b, c; 计算 p = b2 - 4ac; F p < 0 ? T

输出“方程i” F p > 0 ? T

无实根 ? 求出根并输出 p == F

0 ? ? T 求出重根并输出; j = j + 1;

i = i + 1;

输出重根的方程个数 i (2)PAD图

i = 1; j = 0; 输入a,b,c; 计算 p = b2–4ac;

求出根并输出 p > 0 ?

while ( i <= 10 ) p < 0 ?

输出方程i无实根

p = 0 ? 求出重根并输出

; j = j+1;

输出重根的方程个数i i = i + 1;

3、:输入三整数,判断是否构成三角形,如构成三角形,则输出三条边的值,否则输出”不能构成三角形”. 求:1.用程序流程图表示该问题的算法;2.计算程序复杂度; 3.设计路径覆盖的测试用例。 答:

25

开始 输入A,B,C ① F A+B>C T A+C>B T B+C>A T ② F ③ F ④ ⑤ 不能构成三角形 输出ABC ⑦ 结束 路径: ① 1.①—②—③—④—⑥—⑦ 2.①—②—⑤—⑥—⑦ 3.①—⑤—⑥—⑦ Ⅰ② 4.①—②—③—⑤—⑥—⑦

Ⅱ ③ ⑤ Ⅲ④ Ⅳ ⑥

26

程序复杂度=3+1=4

路径 1 2 3 4

测试用例(A,B,C) A=3,B=4,C=5 A=5,B=8,C=2 A=2,B=2,C=5 A=5,B=2,C=2 测试用例 结果 A=3,B=4,C=5 不能构成三角形 不能构成三角形 不能构成三角形

4、某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定树表示与上述每种条件组合相对应的计算行李费的算法. 答案:

5、一个软件公司有许多部门,分为开发部门和管理部门两种,每个开发部门开发多个软件产品,每个部门由部门名字唯一确定。该公司有许多员工,员工分为经理,工作人员和开发人员。

开发部门有经理和开发人员,管理部门有经理和工作人员。每个开发人员可参加多个开发项目,每个开发项目需要多个开发人员,每位经理可主持多个开发项目,建立该公司的对象模型。 答案: 软件公司

部门名 有 有

1+ ▼ 部门 软件产品 1+ 1+ 开发部门 管理部门 开发 员工 有 ▼ 1+ ▼ 有 ▼ ▼ 有 经理 工作人员 开发人员 1+ 参加 1+ 是

1+ 开发项目 是 27

本文来源:https://www.bwwdw.com/article/03xx.html

Top