1、北方工业大学试卷 第 1 页 共 13页 北方工业大学软件工程课程期末复习题 A 卷2014 年春季学期开课学院:信息工程学院 考试方式:闭卷 考试时间:120 分钟班级 姓名 学号 题 号 一 二 三 四 五 六 七 八 九 十 总 分得 分阅卷人一.简要回答下列各问题(共 40 分,每个小题 5 分)(1) 阐述软件工程的定义。答: 是指导计算机软件开发和维护的一门工程学科; 采用工程的概念、原理、技术和方法来开发和维护软件; 把证明正确的管理技术和最好技术综合运用到软件开发中; 研究经济地开发出高质量的软件方法和技术; 研究有效维护软件的方法和技术。(2) 简述软件危机的原因。答: 缺乏
2、软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误 。 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。 缺少有效的软件评测手段,提交用户的软件质量不能完全保证。序号订线装北方工业大学试卷 第 2 页 共 13页 (3) 画出软件生存周期的瀑布模型的示意图,并简单评述其优缺点。(4) 画出软件生存周期的增量模型的示意图,并简述其优点。优点: 可强迫开发人员采用规范化的方法。 严格地规定了每个
3、阶段必须提交的文档。 要求每个阶段交出的所有产品都必须是经过验证的。缺点 由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格说明与用户需求之间有差异,就会发生这种情况。 瀑布模型只适用于项目开始时需求已确定的情况。1-2 瀑布模型示意图 能在较短时间内向用户提交可完成一些有用的工作产品,即从第 1 个构件交付之日起,用户就能做一些有用的工作。 逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。 项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交
4、付给客户。 优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试。北方工业大学试卷 第 3 页 共 13页 (5) 画出 D.Ross 提出的软件工程结构化分析方法的框架示意图,并解释数据字典和数据流的含义。 答:(6) 举例说明变换型和事务型流图的特点。答:变换型流图由输入、中心变换和输出 3 部分组成,而且逐层展开。如:事务型流图通常接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。(7) 给出下面变换型数据流图对应的模块结构图。答:数据字典:数据字典以词条方式定义在数据模型、功能模型和行为模型中出现的数据对象及
5、控制信息的特性,给出它们的准确定义,包括数据流、加工、数据文件、数据元素,以及数据源点、数据汇点等。 数据流图: 或 加 工 。 对 输 入 数 据 进 行 变 换 以 产 生 输 出 数 据 , 其 中 要 注 明 加 工 的 名 字 。 或 外 部 实 体 , 即 数 据 输 入 源 ( Source) 或 数 据 输 出 汇 点 ( Sink) 。 其 中 要 注 明 数据 源 或 数 据 汇 点 的 名 字 。 或 数 据 存 储 。 要 用 名 词 或 名 词 性 短 语 为 数 据 存 储 命 名 。 数 据 流 。 描 述 被 加 工 数 据 及 传 递 方 向 。 箭 头 旁
6、边 要 注 明 数 据 流 的 名 字 , 可 用 名词 或 名 词 性 短 语 命 名 。 北方工业大学试卷 第 4 页 共 13页 (8) 给出下面交易型数据流图对应的模块结构图。答:(9) 举例说明模块结构图优化方法中的不同模块相似部分调整的原则。答: 完全相似的模块可以归并; 两个模块部分相似的代码可以通过建立公共新模块,并设立对公共模块调用进行调整。例如:XR 1YR 1XR 1YXR 1YRR 1R R 1XRR 1YR R 1(10) 举例说明模块结构图优化方法中作用域与控制域调整的原则。答:作用域是指判断语句所在模块和他判断调用的下属模块,而控制域是指他本身以及他的下属模块;一
7、般要求作用域在控制域内。例如: D 通过 B 判断调用 C,故 D 的作用范围不在它的控制范围内,调整为右图。BT O PFEDCAT O PFEDCBA北方工业大学试卷 第 5 页 共 13页 (11) 试将下面的代码段进行局部调整,使其更容易理解。1) 要进行适当的缩排;2) 增加必要的注释;3) 增加必要的语句,以免产生错误;For(i=1;i=n-1,i+)t=i;for(j=i+1,j=n,j+)if(ajat)t=j;if(t!=i)tm=at;at=ai;ai=tm答:int i=0;/*实现*功能int t=0;int tm=0;For(i=1;i=n-1,i+) /*实现*功
8、能t=i;for(j=i+1,j=n,j+) /*实现*功能if(ajat)t=j;if(t!=i)tm=at; /*实现*功能at=ai;ai=tm(12)试按照规范编写一个求 3 个数中最小值的程序。程序规范如下:1) 禁止使用 GOTO 语句;2) 使用缩排编写程序;3) 变量命名明晰答:main() / a c code about finding out the small one in tree input number int num1,num2,num3,min;printf(“Please input three numbers:“);scanf(“%d,%d,%d“,if
9、(num1num2) MIN=num1;else MIN=num2;if (num3MIN) MIN=num3;printf(“The small one is:%d“,small);北方工业大学试卷 第 6 页 共 13页 (13)举例说明软件测试的不完备性。答:就目前的软件测试方法而言,还无法做到对代码的完全覆盖测试,所以说软件测试是不完备的。例如,下面的代码是无法完全测试的。(14)试解释单元测试中 “驱动模块” 、 “桩模块”与“被测模块”含义以及它们之间的关系。答: 驱动模块相当于被测模块的主程序,它接收测试数据,并把这些数据传送给被测模块,最后再输出实测结果。 桩模块也叫做存根模块
10、,用以代替被测模块调用的子模块。 被测模块是单元测试要测试的模块,他与驱动模块和桩模块有被调用和调用的关系。(15)简述软件改正性、适应性维护的含义。答:改正性是为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应进行的诊断和改正错误的过程。适应性维护是指,随着信息技术的飞速发展,软件运行的外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而修改软件的过程叫做适应性维护包含的不同执行路径数达 520条,对每一条路径进行测试需要1 毫秒,假定一年工作 365 24小时,要想把所有路径测试完,需 317
11、0 年。北方工业大学试卷 第 7 页 共 13页 (16)举例说明影响维护工作量的因素。答:(1) 系统规模:系统规模大,维护困难;(2) 程序设计语言:开发语言复杂,维护也困难;(3) 系统年龄大小:时间久远的系统,维护困难;(4) 数据库技术的应用水平:数据应用水平低,维护工作量大。(5) 所采用的软件开发技术及软件开发工程化的程度:工程化程度高,维护相对容易。例如:商业企业进销存管理软件。由于商品品种多,经营手段灵活,所以对数据库技术应用的水平要求比较高;一般大型商业企业,如沃尔玛是全球连锁,所以系统规模巨大,维护困难;商业企业管理软件一般要处理的内容多样,目前还没有一种语言可以完成整个
12、系统的开发任务,所以选择功能相对强大的语言会减少开发困难。北方工业大学试卷 第 8 页 共 13页 二、已知程序框图如图 2-1 所示,试分别给出(a)语句覆盖, (b)条件覆盖, (c)判断覆盖, (d )条件组合覆盖, (e)判断/条件的最小测试用例和路径。 (每小题 5 分,共 25 分)答:(a)语句覆盖路径:ace测试用例【(2, 0, 4),(2, 0, 3)】 (b)条件覆盖路径:ace测试用例:【(2, 0, 4),(2, 0, 3)】路径:abd测试用例:【(1, 1, 1),(1, 1, 1)】(c)判断覆盖路径:ace测试用例:【(2, 0, 4),(2, 0, 3)】路
13、径:abd测试用例:【(1, 1, 1),(1, 1, 1)】(d)条件组合覆盖路径:ace测试用例:【(2, 0, 4),(2, 0, 3)】路径:abd测试用例:【(1, 1, 1),(1, 1, 1)】路径:abe测试用例:【(2, 1, 1),(2, 1, 2)】路径:abe测试用例:【(1, 0, 3),(1, 0, 4)】(e)判断/条件覆盖路径:ace测试用例:【(2, 0, 4),(2, 0, 3)】路径:abd测试用例:【(1, 1, 1),(1, 1, 1)】北方工业大学试卷 第 9 页 共 13页 三、现有一个 PASCAL 语言的编译器。试采用黑盒测试法测试该编译器对语
14、法规定:“标识符是由字母开头、后跟字母或数字的任意组合构成;有效字符数为 8 个,最大字符数为 80 个;标识符必须先说明,再使用;在同一说明语句中,标识符至少必须有一个。 ”的一致性。 (每一个分类 5 分,共 25 分)答:等价类划分如下:测试用例:下面选取了 8 个测试用例,它们覆盖了所有的等价类。 VAR x,T1234567:REAL; (1) (2) (4) (7) (8) (11) (13)BEGIN x:=3.414;T1234567:=2.732; VAR :REAL; (3) VAR x,:REAL; (5) VAR T12345:REAL; (6)多于 80 个字符 VA
15、R T $:CHAR; (9) VAR GOTO:INTEGER; (10) VAR 2T:REAL; (12) VAR PAR:REAL; (14)BEGINPAP:=SIN(3.14*0.8)/6; 北方工业大学试卷 第 10 页 共 13页 四、已知程序伪代码如图 4-1 所示,试完成下列工作:1) 试用算法 4.1 给出对应的流图;2) 计算流图的复杂性 V(G);3) 求基本路径构成的基本集合(num 1,num2,num3 各取一次最小值) ;4) 给出每条路径执行的期望结果;5) 给出每一条路径的测试用例。 (每小题 3 分,共 15 分)答:环形复杂性:3基本路径集:12357
16、1245712367期望结果:12357 的结果:num1 是最小值12457 的结果:num2 是最小值12367 的结果:num3 是最小值测试用例:Num1=3;num2=4;num3=5Num1=4;num2=3;num3=5Num1=4;num2=5;num3=3main() / a c code about finding out the small one in tree input number int num1,num2,num3,Min;printf(“Please input three numbers:“);(1)scanf(“%d,%d,%d“,(2)if (num1num2) (3)MIN=num1;else (4)MIN=num2;(5)if (num3MIN) (6)MIN=num3;(7)printf(“The small one is:%d,Min);printf(“min=%dn“,min);图 4-1 一个计算三个数中最小值的程序12435786