一、选择题:(每题1分,共20分)(将答案写在题号前的()中)
( C )1. 软件是( )。
A. 处理对象和处理规则的描述 B. 程序
C. 程序及其文档 D. 计算机系统
( B )2. 软件需求规格说明的内容不应包括( )。
A. 主要功能 B. 算法的详细描述 C. 用户界面及运行环境 D. 软件的性能
( B )3. 程序的三种基本控制结构是( )。
A. 过程、子程序和分程序 B. 顺序、选择和重复 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分)将答案写在题号前的( )中,正确用√, 错误用χ。
( × )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 、 提高可维护性的方法有哪些?
答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。
在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。
在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。
在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。 在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。
在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。
为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术。
简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。 【解答】
测试过程按 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; }
i = i +1;
}
输出重根的方程的个数j; } 【解答】 (1)N-S图 i = 1; j = 0;
while ( i <= 10 )
输入a, b, c; 计算 p = b2 - 4ac;
p < 0 ? F
输出“方程i”无实根 F
?
F
?
p == 0 ?
求出重根并输出; j = j + 1;
i = i + 1;
输出重根的方程个数i
p > 0 ?
求出根并输出
T
T T
(2)PAD图
i = 1; j = 0; 输入a,b,c; 计算 p = b2–4ac;
求出根并输出 p > 0 ?
p < 0 ? while ( i <= 10 )
输出方程i无实根
求出重根并输出; j = j+1; p = 0 ? i = i + 1; 输出重根的方程个数i 3、:输入三整数,判断是否构成三角形,如构成三角形,则输出三条边的值,否则输出”不能构成三角形”. 要求:1.用程序流程图表示该问题的算法;2.计算程序复杂度; 3.设计路径覆盖的测试用例。 答: 开始 ① ②Ⅰ
输入A,B,C ① A+B>C ② T A+C>B ③ T B+C>A ④ 输出ABC ⑤
⑦ Ⅳ
结束 T ⑤ 不能构成三角形 F F F ③Ⅱ Ⅲ④ ⑥ ⑦
路径:
1.①—②—③—④—⑥—⑦ 2.①—②—⑤—⑥—⑦ 3.①—⑤—⑥—⑦
4.①—②—③—⑤—⑥—⑦
程序复杂度=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 不能构成三角形 不能构成三角形 不能构成三角形