清华大学2006年软件工程期末试卷
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
)配置对象通常不包括在项目数据库中。
A. 设计规格说明书
C. 组织结构描述
B. 可执行程序
D. 测试计划
12. 基线(Baseline)是指在项目生命周期的不同时间点上,一个或一组配置项通过(
)
而进入正式受控的一种状态。
A. 存取控制
C. 正式评审
B. 质量控制
D. 变更管理
13. 配置状态报告的主要目的是(
5
三、(共 10 分)在本课程的实验项目中,你们经历了团队组织与开发管理的过程,并应用面向对象 技术进行软件的设计与实现。请结合该实验项目,回答以下问题:
(1) 你使用的配置管理工具是什么?其版本存取的控制流程是什么? (2) 为什么需要定义软件需求的优先级? (3) 为什么需要将整个系统划分成若干子系统?子系统的划分应符合什么原则? (4) 分析类图与设计类图有什么不同? (5) 在类设计中,你建议使用什么方法进行属性的设置和读取?这样做有什么好处?
12
Байду номын сангаас
curHalfs = 0;
13
}
14
void addHalf() {
15
curHalfs = curHalfs + 1
16
if ( curHalfs > 3 )
17
allowVend = 1;
18
}
19
void Vend() {
20
if ( allowVend ) {
21
total = total + curHalfs;
)。
A. 模块之间呈现高耦合
B. 实现分析模型中的所有需求
C. 包括所有组件的测试用例
D. 提供软件的完整描述 E. 选项 B 和 D F. 选项 B、C 和 D
20. (
)可以帮助人们简单方便地复用已经成功的设计或体系结构。
A. 商业组件
C. 逆向工程
B. 设计模式
D. 需求规格说明
21. 下面的(
23. 验证(Verification)与确认(Validation)是贯穿软件生命周期的规范化评估方法,其中验证
的目的是(
),确认的目的是(
)。
A. 检查当前阶段的产品(或制品)是否保持上一阶段的产品(或制品)需求
B. 检查当前阶段的产品(或制品)是否存在错误
C. 检查最终产品是否满足客户需求
D. 检查最终产品是否存在错误
1
Class CoinBox {
2
unsigned total;
3
unsigned curHalfs;
4
unsigned allowVend;
5
Public:
6
CoinBox() {
7
total = 0;
8
allowVend = 0;
9
curHalfs = 0;
10
}
11
void returnHalfs() {
(1) 当 5 角硬币投入机器时调用函数 addHalf (2) 当按下退回硬币按钮时调用函数 returnHalfs (3) 当按下按钮给出饮料时调用函数 vend (4) 当可以给出饮料时变量 allowVend 置为 1,否则置为 0 要求:对下面的程序执行代码走查(其中行号仅用于标识,不是代码的一部分),直接在代码上指 出错误所在之处(不包括注释问题),简要说明理由并改正错误。
四、(共 10 分) (1) 下图是抽象工厂设计模式的一般结构模型中的类,将类之间的关系补充完整。
AbstractFactory
AbstractProduct_A
Client
ConcreteFactory_A
ConcreteFactory_B
ProductA_FactoryA ProductA_FactoryB AbstractProduct_B
)不是良好编码的原则。
A. 在开始编码之前建立单元测试
B. 建立一种有助于理解的直观布局
C. 保持变量名简短以便代码紧凑
D. 确保注释与代码完全一致
3
22. 下面的(
)界面设计原则不允许用户保持对计算机交互的控制。
A. 允许交互中断
B. 允许交互操作取消
C. 对临时用户隐藏技术内部信息
D. 只提供一种规定的方法完成任务
)准则。
A. 从来不为个人获利而窃取数据
B. 从来不散布或出售项目中自己工作的信息
C. 从来不故意毁坏或修改别人的程序、文件或数据
D. 从来不侵犯个人、小组或组织的隐私
E. 选项 B、C 和 D
F. 选项 A、B、C 和 D
1
6. 软件开发的增量模型是(
)。
A. 用于大型开发团队项目的最好方法
B. 核心工作产品需要快速开发时使用的一种好方法
(3) 如果要增加新的具体工厂(Factory)类并继承 AbstractFactory 类,则应如何修改上述类 图以适应这个需求变化?
6
五、(共 10 分)下面给出的 C++程序类 CoinBox 用于实现一个简单的饮料自动售货机,该售货机 只接受 5 角的人民币硬币,一个饮料的售价是 2 元人民币。
C. 需求被明确定义时使用的一种合适方法
D. 需求不明确时使用的一种合适方法
7. 基于组件的开发模型是(
)。
A. 只适用于计算机硬件设计
B. 不能支持可重用组件的开发
C. 在面向对象技术获得支持的情况下应用得更好
D. 增加了开发风险和成本
8. 软件项目规划的第一步是(
)。
A. 确定项目预算
B. 选择团队的组织模型
22
curHalfs = 0;
23
allowVend = 0;
24
}
25
}
26 };
7
六、(共 15 分)请结合等价类和边界值的方法,编写关于租船记时程序的功能测试用例。该程序的 输入是开始时间 startTime 和结束时间 endTime,其中时间是以 12 小时的 hh:mm 格式表示, 且假设租船的最早开始时间是 7:00am,最晚结束时间是 8:00pm;该程序的输出是租船的时 间数,格式为 xx 小时 xx 分钟。
C. 系统的输入与输出
15. 需求规格说明描述(
)。
A. 基于计算机系统的功能、性能和约束
B. 每一个子系统的实现
C. 软件体系结构元素
D. 系统使用说明
16. 实施需求验证评审的最好方式是( A. 检查系统模型以便发现错误 B. 让客户阅读需求说明
)。 C. 将需求说明交给设计团队征求意见 D. 使用问题列表检查每一项需求
D. 选项 A 和 B
B. 软件与硬件
E. 选项 B 和 C
C. 人
F. 选项 A、B 和 C
4. 软件过程的基本活动是(
)。
A. 分析、设计、实现、测试、演化
B. 沟通、计划、建模、构造、部署
C. 计划、分析、设计、实现、调试
D. 沟通、风险管理、度量、产品化、评审
5. 软件工程师在从事软件工作时应使用下面的(
C. 确定项目的约束 D. 建立项目的目标和范围
9. 下面的(
)方法最不适合你向团队成员解释他或她为什么表现不合格。
A. 个人谈话
C. 正式报告
B. 项目团队会议
D. 电子邮件
10. 功能点估算技术需要以( A. 信息域 B. 项目进度
)为基础进行问题分解。 C. 软件功能 D. 过程活动
11. 下面的(
《软件工程》试题(2006.6.14)
班级:
成
一
绩
姓名:
二
三
四
学号:
五
六
合计
一、(共 30 分)每空选择一个正确的答案,将相应字母或序号填入如下的( )中。
1. 软件工程的基本目标是(
)。
A. 消除软件固有的复杂性
B. 开发高质量的软件
C. 努力发挥开发人员的创造性潜能 D. 更好地维护正在使用的软件产品
ProductB_FactoryB ProductB_FactoryA
(2) 如果要增加新的产品(Product)类型,如在已有的 AbstractProductA 和 AbstractProductB 外再增加新的 AbstractProductC 及相应的具体子类,则应如何修改上述类图以适应这个需 求变化?
)。
A. 允许项目经理修改项目进度和成本估算
B. 评估软件开发人员和组织的绩效
C. 确保变更信息传达到受影响的团体
D. 选项 A 和 C
E. 选项 A、B 和 C
2
14. 在需求开发过程中,软件工程师应与客户合作共同定义(
)。
A. 客户可见的使用场景
D. 选项 A 和 B
B. 重要的软件特性
E. 选项 A、B 和 C
2. 下面的(
)说法是正确的。
A. 软件危机在 20 世纪 70 年代末期全面爆发
B. 当前先进的软件工程方法已经解决了软件危机的问题
C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题
D. 软件危机是指在软件产品中存在一系列的质量问题
3. 下面的(
)是计算机系统的基本元素。
A. 文档
24. 使用独立测试团队的最好理由是(
)。
A. 软件开发人员不需要做任何测试
B. 测试团队将更彻底地测试软件
C. 测试人员在测试开始之前不参与项目
D. 开发人员与测试人员之间的争论会减少
25. 下面的(
)说法是正确的。
A. 恢复测试是以各种方式迫使软件失效从而检测软件是否能够继续执行的一种系统测试
B. 安全测试是检测系统中的保护机制是否可以保护系统免受非正常的攻击
(1) 软件应该易于使用。 (2) 系统通过 ADO 与图书资料数据库连接,并从图书资料数据表中获得图书资料的基本
信息。 (3) 由于版权的限制,某些电子资料只能让用户浏览和打印而不能下载。 (4) ATM 系统检验用户存取的合法性。 (5) ATM 系统每周 7 天、每天 24 小时都可以使用。 4. 经过代码审查和单元测试,单个组件的有效性已经得到全面验证,为什么还要进行集成测试? 在集成测试时,增量式集成方法为什么比一次性整体集成方法要好? 5. 下图是 MortgageApplication 对象的状态图,假设有一个要求,即增加一个“Cancelled”状 态,图中除“Closed”状态外的任何状态都可以转换到该状态。请画出修改后的状态图,注意 应给出一种最佳的方法。
序号
测试用例描述
输入参数
startTime
endtime
期望输出
8
C. 只有质量差的软件产品才需要维护
D. 软件的维护成本通常比开发成本低
28. 逆向工程(Reverse Engineering)通常用在软件生命周期的(
码或目标代码中提取设计信息。
A. 需求分析
C. 软件测试
B. 软件设计
D. 软件维护
)阶段,它是从源代
4
二、(共 25 分)回答下列问题: 1. 一架客机由数百万个单独的部件组成,需要上千人组装。微软于 1989 年 11 月发布的 Windows
C. 压力测试是检测在极限环境中使用系统时施加在用户上的压力
D. 性能测试只对实时系统或嵌入式系统是重要的
26. 类的行为应该基于( A. 数据流图 B. 对象图
)进行测试。
C. 状态图 D. 用例图
27. 下面的(
)说法是正确的。
A. 遗留系统是许多年以前开发的且已经没有商业价值的计算机系统
B. 更换遗留系统是有业务风险的
17. 分析模型使用(
)描述软件。
A. 体系结构、界面和组件
B. 成本、风险和进度
C. 信息、功能和性能 D. 以上选项都不是
18. 内聚表示一个模块(
)的程度,耦合表示一个模块(
A. 可以被更加细化
B. 仅关注在一件事情上
C. 能够适时地完成其功能
D. 联接其他模块和外部世界
)的程度。
19. 良好设计的特征是(
Word 最初版本,花费了 55 人年,生成了 149,000 行源代码,晚了 4 年交付使用。客机通常 都是按时并低于预算交付使用,而软件却非如此。请讨论一下开发客机与开发文字处理软件的 不同之处,分析并说明导致这种局面的原因。 2. 软件生命周期主要包括哪些阶段?请简要说明各阶段的主要任务。 3. 下列需求描述是否存在问题?如果有问题,请说明所存在的问题并给出一种正确的描述。