一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号
填在题干的括号内。每小题 1 分,共 15 分 )
6.D
1.C
9.C
14.D
2.B
10.B
5.A
13.C
3.C
11.D
4.B
12.B
7.C
15.A
8.A
二、多项选择题 ( 在每小题的四个备选答案中,选出一个或者多个正确答案,并将正确答
案的序号填在题干的括号内。每小题 1 分,共 15 分 )
2 ABC 3 ABD
1 B
9 AB
10 AB
8 ABC
14 ABCD 15 C
4 CD
5 ACD
11 ABCD 12 ABD
7 CD
6 B
13 AC ABD
2
(√)
4 (√)
3 ( ×)
三、判断题(在题干括号内填写适合符号,正确填√ ,错误填×。每小题 1 分,共 10 分 )1
(√)
7 (×)
8( √)
四、问答题
1. 有哪些主要的软件开发方法?(3 分)
5 ( √) 6 ( √)
10 ( √)
12 (×)
13 (×)
11 (×)
9 (×)
答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。
2. 软件生存周期各阶段的主要任务是什么? (5 分)
答:软件生存周期按瀑布模型分为 6 个阶段:
●可行性研究与计划(确定系统的目标和规模,分析项目的可行性);
●需求分析与规格说明(明确系统的规格和要求);
●设计(包括概要设计和详细设计,将系统分解为模块);
●编程(用程序语言实现每个模块,简单容易);
●测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);
●运行维护(扩充功能、纠错等)。
3.Coad/Yourdon 方法主要有面向对象分析(OOA)和面向对象设计(OOD)。OOA 概
念模型由 5 个层次组成,请简述这 5 个层次。(5 分)
答:OOA 概念模型的 5 个层次分别是:
(1) 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整 个
应用的基础,然后,据此分析系统的责任。
(2) 识别结构。该阶段分为两个步骤。第一,识别“一般-特殊”结构,该结构捕获了识
别出的类的层次结构;第二,识别“整体-部分”结构,该结构用来表示一个对象如何成为
另一个对象的一部分,以及多个对象如何组装成更大的对象。
(3) 定义属性。其中包括定义类的实例(对象)之间的实例连接。
(4) 定义服务。其中包括定义对象之间的消息连接。
(5) 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以
便于理解。
4.软件测试通常包含哪几个基本步骤?(5 分)
答:软件测试通常应该对需求、总体设计、详细设计、编码实现各个阶段所获得的开发产
品进行测试,软件测试应该贯穿于整个软件开发的全过程。
软件测试过程按测试的先后次序可分为以下步骤进行:单元测试、集成测试、确认测
试和系统测试,最后进行验收测试。
⑴单元测试。完成每个模块的测试,尽可能发现模块内部的错误。单元测试主要采用
白盒测试法。
⑵集成测试。把已测试过的模块按照一定顺序组装起来,构成软件系统。主要采用黑
盒测试法。但对发现错误较多的新子系统,还可能采用白盒法进行回归测试。
⑶确认测试:检验所开发的软件能否满足所有功能和性能需求的最后手段,通常均采
用黑盒测试法。
⑷系统测试:完成确认测试以后,检验它能否与系统的其他部分(如硬件,数据库及
操作人员)协调工作,需要进行系统测试。
⑸验收测试:检验软件产品质量的最后一道工序是验收测试。与前面讨论的各种测试
活动的不同之处主要在于它突出了客户的作用,同时软件开发人员也应有一定程度的参与。
五、综合设计题(共 25 分)
1.设计测试用例(13 分)
某校制定了教师的讲课课时津贴标准和办法。教师每课时津贴费标准是:教授 40 元,
副教授 30 元,讲师 20 元,助教 16 元。但是如果每次上课班级人数 60 人以上(含 60 人),
则将每课时津贴费增加 50%。同时助教只有其工龄超过两年才能获得相应的课时津贴费。某
“调整津贴”处理模块具备以上办法的功能。请用等价类划分法进行○1 划分等价类 ○2 设
计测试用例。
划分等价类(5 分)(每答错 1 个扣 0.9 分)
输入条件
合理等价类
不合理等价类
职称和上课班
级人数
①教授、人数<60
②副教授、人数<60
③讲师、人数<60
○4 教授、人数>=60
○5 副教师、人数>=60
○6 讲师、人数>=60
○7 四种职称之外任意一种
职称兼工龄和
上课班级人数
○8 助教兼工龄大于 2 年、人
数<60
○9 助教兼工龄大于 2 年、人
数>=60
○10助教兼工龄等于两年
○12助教兼工龄小于两年
设计测试用例(8 分)(每答对 3 个获得 2 分)
输入数据
预期结果
覆盖范围
教授、人数=45
输入有效,津贴费 40 元
副教授、人数<60
输入有效,津贴费 30 元
①
②
讲师、人数<60
输入有效,津贴费 20 元
教授、人数>=60
输入有效,津贴费 60 元
副教师、人数>=60
输入有效,津贴费 45 元
讲师、人数>=60
输入有效,津贴费 35 元
工程师
输入无效
助教兼工龄大于 2 年、
人数<60
助教兼工龄大于 2 年、
人数>=60
输入有效,津贴费 16 元
输入有效,津贴费 24 元
助教兼工龄等于两年
输入有效,不给津贴
助教兼工龄小于两年
输入有效,不给津贴
○3
○4
○5
○6
○7
○8
○9
○10
○12
(二)系统分析设计题(15 分)
已知在银行储蓄系统中有如下主要功能
1)银行储蓄系统的 1 层 DFD 如下:请将 1 层 DFD 图完善。(4 分)
填写应该为:P3. 取款处理 P2. 存款处理 P6. 账户管理,P6 日报表查询打印
2)储户注册模块分解后的 2 层 DFD 图 (柜台员代替储户操作)
D1 储户信息表
柜
台
员
P1.1
储 户 信
息 数 据
录入
P1.2
储户信息
数据维护
3)根据以上 1 层 DFD 的需求分析,画出银行储蓄系统模块结构图,并对模块功能进行描述
(每个模块 0.5 分。每个模块功能说明 0.5 分。共 3 分
(三)OOD 设计题。 (共 14 分) 下面是一个学生借书的顺序图。根据图形和下面函数说明,
在相应的类图中填写对应的操作(函数)。
(1)根据顺序图,回答一下问题。(1,2 题 1.5 分,3 题 2 分,共 5 分)
1. 取款页面类的“检验卡和取款单()”调用了哪些类的函数直到显示检验结果为止?
答:先后调用了账户类的检验()函数、数据存取类的查询账户和存款()函数、账户类的判
断账户和存款够否()函数、取款页面类的显示检验结果()函数。
2. 密码键盘类实例在判断账户存款足够后,并发产生了哪两个类的实例而各自调用了什么
函数?
答:并发产生了银行储蓄流水类实例和账户存取款类实例,分别调用了计算银行余额利息()
函数和算账户余额利息()函数。
3. 储户在取款签单和利息签单上签字后,取款页面类并发产生了哪两个类实例而各自调用
了什么函数?其功能各是什么?
答:并发产生了银行储蓄流水类实例和账户存取款类实例,分别调用了存储银行往来信息()
函数和存储个人取款信息()函数。
存储银行往来信息()函数的功能是将计算好的银行某种储蓄种类的存储余额和支付的
利息,以及日期,经手人等信息存储到银行储蓄流水表中,其对数据库表的存储是调用数
据存取类的添加银行流水()函数完成的。
存储个人取款信息()函数的功能是将计算好的个人某种储蓄种类的存储余额和支付的
利息,以及日期,经手人等信息存储到该账户储蓄流水表中,其对数据库表的存储是调用
数据存取类的添加个人存取记录()函数完成的。
(2)从以上顺序图可见,OOA 阶段设计的类是:_账户类_、__账户存取款类_、_银行储蓄
流水类_。它是解决 问题域问题。 在 OOA 设计的基础上,OOD 阶段设计增加设计的类是:_
取款页面类_、_密码键盘类、打印类_、_数据存取类_。OOD 类设计主要解决_人机交互_域
和_数据处理_域问题 (5 分)
(3)将以上顺序图的类函数添加到以下相关类中。(4 分)
数据存取类中有查询账户和存款()函数、查密码()、添加银行流水()、添加个人存取
记录()函数。
银行储蓄流水类中有银行余额利息()、存储银行往来信息()函数
账户存取款类中有算账户余额利息()、存储个人取款信息()函数。
账户类中有检验()函数、显示检验结果()函数。