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