2020 软件工程期末试卷 A
一、选择题( 51 分)
1. (8 分)从供选择的答案中选出正确的答案填入下面的( )中。 块间联
系和块内联系是评价程序模块结构质量的重要标准。联系的方 式、共用信息的作用、共用信息的数量和接口的(
A③ )等因素决定了块
间联系的大小。在块内联系中, ( B② )的块内联系最强。
SD方法的总的原则是使每个模块执行( C① )功能,模块间传送
( D ① )参数,模块通过( E② )语句调用其他模块,而且模块间传送的参数 应尽量( F ①)。
此外,SD 方法还提出了判定的作用范围和模块的控制范围等概念。
SD 方法认为,( G ①)应该是( H② )的子集。
供选择的答案:
A: ① 友好性 B: ① 巧合内聚 C: ① 一个 D: ① 数据型 E: ① 直接引用 F: ①少
G~① 作用范围 H:
② 健壮性 ② 功能内聚 ② 多个 ② 控制型 ② 标准调用 ②多
③ 简单性 ③ 通信内聚
④ 安全性 ④ 信息内聚
③ 混合型 ③ 中断
④ 宏调用
② 控制范围
2. (5 分)软件需求分析的任务不应包括( A③ )。进行需求分析可使用多
种 工具,但( B③ )是不适用的。在需求分析中,分析员要从用户那里解决 的最重要的问题是( C① )。需求规格说明书的内容不应当包括( D② ) 该文档在软件开发中具有重要的作用,但其作用不应当包括(
供选择的答案:
E④ )。
A:①问题分析 ②信息域分析③ 结构化程序设计
④确定逻辑模型 ④数据词典
B:①数据流图 ②判定表 ③PAD图
D:①对重要功能的描述 ②对算法的详细过程性描述
C:①要让软件做什么
③ 要求软件工作效率如何
D:①对重要功能的描述 ② 要给该软件提供哪些信息
②对算法的详细过程性描述
③软件确认准则
④软件的性能
E:①软件设计的依
② 用户和开发人员对软件要“做什么”的共同理解 ③ 软件验收的依据 ④ 软件可行性分析的依据
3. (5 分) UML 是一种面向对象的统一建模语言。它包含 10 种图,其中,
用 例图展示了外部 actor 与系统所提供的用例之间的连接, UML 中的外部 actor 指( ①D ),用例可以用( ② C )图来描述。状态图指明了对象所有可能 的状态以及状态间的迁移 (transition) 。如果一个并发的状态由 n 个并发的
子状态图组成,那么,该并发状态在某时刻的状③A )个子状态图 中各取一个状态组合而成。协作图描述了协作的④ A )之间的交互和( 链 接(1ink),它画⑤A 图的形式。
) 成(
① A.人员 B.单位 C.人员或单位 D.人员或外部系统
② A.类 ③ A.每一 ④ A.对象 ⑤ A.对象
B.状态 B.任意 一 B.类 B.类
C.活动 C.任意二 C.用例 C.用例
D.协作
D.任意 m (m ≤ n) D.状态 D.状态
4. (5 分)软件详细设计工具可分为三类,即:图示工具、设计语言和表格
工 具。图示工具中,( A② )简单而应用广泛、( B① )表示法中,每一个处 理过程用一个盒子表示,盒子可以嵌套。 ( C④ )可以纵横延伸,图形的空 间效果好。
( D② ) 是一种设计和描述程序的语言,它是一种面向( E① )的语言 供选择的答案:
A~C: ① NS图 D: ① C E: ① 人
② 流程图 ② PDL ② 机器
③ HIPO 图 ③ RPOLOG ③ 数据结构
④ PAD图 ④ PASCAL ④ 对象
5. (4 分)在使用 UML建模时,若需要描述跨越多个用例的单个对象的行为,
使用( ①D )是最为合适的。 UML 结构包括了基本构造块. 公共机制和( ②
A )。UML 中提供了扩展机制,其中,构造型( Stereotype)扩展了 UML 的
( ③ D ),约束( Constraint)扩展了 UML( ④ B )。 ① A.协作图( Collaboration Diagram)
B.序列图( Sequence Diagram)
活动图( Activity Diagram) D.
C.
状态图( Statechart Diagram) ② A.把这些构造块放在一起的规则
B. 图形或文字修饰
C. 类与对象的划分以及接口与实现的分离 D. 描述系统细节的规格说明
③ A.构造块的特性,允许创建详述元素的新信息
B. 构造块的语义,允许增加新的规则或修改现有的规则 C. 语义,允许创建新的构造块 D. 词汇,允许创建新的构造块
④ A.构造块的特性,允许创建详述元素的新信息
B. 构造块的语义,允许增加新的规则或修改现有的规则 C. 语义,允许创建新的构造块 D. 词汇,允许创建新的构造块
6. (5 分)下面有关软件维护的叙述有些是不准确的, 请列举 5 个正确的叙述
供选择的答案:
① 要维护一个软件,必须先理解这个软件。 ② 阅读别人写的程序并不困难。 ③ 如果文档不齐全也可以维护一个软件。 ④ 谁写的软件就得由谁来维护这个软件。 ⑤ 设计软件时就应考虑到将来的可修改性。 ⑥ 维护软件时一件很吸引人的创造性工作。 ⑦ 维护软件就是改正软件中的错误。 ⑧ 维护好一个软件是一件很难的事情。
答:软件维护人员通常不是该软件的开发人员, 这给软件维护带来很大的困 难。特别是有些软件在开发时没有遵循软件开发的准则,没有开发方法
的支持, 维护这样的软件就更困难。下面列举一些与软件维护有关的问题。
(1) 要维护一个软件,首先必须要理解它。而理解一个别人编写的软件通 常是困难的,尤其是对软件配置(指各种相关的文档)不齐全的软件,理解起来 就更加困难。
(2)需要维护的软件往往缺少合格的文档,或者文档资料不齐全,甚至根 本没有文档。在软件维护中,合格的文档十分重要, 它有助于理解被维护的软件。 合格的文档不仅要完整正确地反映开发过程各个阶段的工作成果, 而且应当容易 理解并应与程序源代码一致。而错误的文档对软件的理解引入歧途。
(3)在软件维护时,不要指望得到原来开发该软件的人员的帮助。开发人 员开发完一个软件后, 往往会从事另一软件的开发, 甚至已离开原开发单位。 即 使原来的开发人员还在,也可能时间太久而忘却了实现的细节。
(4)多数软件在设计时没有考虑到将来的修改,这给软件的修改造成了困 难。而且在修改软件时很可能引入新的差错。
(5)软件维护通常不是一件吸引人的工作。从事维护工作常使维护人员缺 乏成就感,这也严重影响维护工作,从而影响了维护质量的提高。
7. (4 分)从供选择的答案中选出应填入下列( )中的字句。
软件测试的目的是( A ② )。为了提高测试的效率,应该( B④ )。使 用白盒测试方法时,确定测试数据应根据( C① )和指定的覆盖标准。与设计 测试数据无关的文档是( D④ )。
供选择的答案:
A.
③ 找出软件中的所有错误
① 评价软件的质量 ② 发现软件的错误 ④ 证明软件是正确的
B. ① 随机地选取测试数据
② 取一切可能的输入数据作为测试数据 ③ 在完成编码以后制定软件的测试计划 ④ 选择发现错误的可能性大的数据作为测试数据
C.
杂程度
③ 使用说明书
① 程序的内部逻辑 ② 程序的复④ 程序的功能
D.
复杂程度
③ 源程序
④ 项目开发计划
① 该软件的设计人员 ② 程序的
8. (5 分)从供选择的答案中选出应该填入下面( )中的正确答案
A. 汇编程序是指 ( ①)。
① 用汇编语言写的程序 ② 符号程序
③ 汇编语言的处理程序
B. 为了实现递归子程序的正确调用,人们必须用(① )来保存( ⑤)及
有 关信息。 ① 堆栈 ⑤ 入口点
② 线性表 ⑥ 返回地址
③ 队列 ⑦ 断点
)书写实现的
④ PASCAL ④树
C. UNIX 操作系统(① )研制它是用程序语言是 的, (⑦
① Bell 实验室 ② DEC 公司 ③ IBM 公司
⑤ 并发 PASCAL ⑥ MODULA ⑦ C
9. (5 分)在软件维护的实施过程中,为了正确、有效地修改,需要经历以
下
3 个步骤:( A ③ )、( B① )、( C④ )。( A ③ )是决定维护成
败和质量 好坏的关键。( C④ )包括( D② )确认、计算机确认和维护后的 ( E② ) 供选择的答案:
A~C. ① 修改程序 D. ① 动态 E. ① 验证
② 建立目标程序 ③ 分析和理解程序
③ 人工 ③ 检验
④ 自动 ④ 存档
④ 重新验证程序 ⑤ 验收程序
② 静态 ② 验收
10. (5 分)从供选择的答案中选出同下列关于软件测试的各条叙述关系最密
切的字句。
A. 对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行
逐行检查。②
B. 已有的软件被改版时,由于受到变更的影响,改版前正常的功能可
能发生异常,性能也可能下降。因此,对变更的软件进行测试是必 要的。⑩
C. 在意识到被测试模块的内部结构或算法的情况下进行测试。⑨ D. 为了确认用户的需求,先做出系统的主要部分,提交给用户试
用。
⑧
E. 在测试具有层次结构的大型软件时, 有一种方法是从上层模块开始,
由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下
层模块。④
供选择的答案:
A~E.① 仿真器
⑤ 驱动器
② 代码审查 ⑥ 域测试
③ 模拟器 ⑦ 黑盒测试
④桩 ⑧ 原型
⑨ 白盒测试 ⑩ 退化测试
二、解答题( 49 分)
1. (12 分)画出“传感器监测”的用例的活动图 答:
2. (15 分)使用面向对象设计方法 进行高层设计 ,以建立系统的体系结构。
这样的结构有哪几种主要的组成部分?每一部分所承担的职责是什么? 答:这个模型有 5 层结构,又被划分成了 4个组成部分:问题论域、用户界 面、任务管理和数据管理。
问题论域部分的职责是: 组合所有的论域中定义的类, 为应用设计适当的类 层次,为适应语言要求简化继承层次, 细化设计以改善性能, 开发与数据管理部 分的接口,做细化时加入低层对象,评审设计并审查对分析模型所做的增补。
人机交互部分的职责是: 定义用户类型, 开发任务场景,设计用户命令层次, 建立原型以细化与用户交互,设计相关的类和类层次,适当时集成 GUI 类。
任务管理部分的职责是: 标识任务的类型 (如事件驱动, 时钟驱动) ,建立优 先级,标识协调者,为每个任务设计适当的类。
数据管理部分的职责是: 设计数据结构和布局, 设计管理数据结构所需的服 务,标识可以协助实现数据管理的工具,设计适当的类和类层次。
3. (22 分)如何理解模块性?用什么指标来衡量模块性? 答:模块
性,是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。一般采用两个指标度量模块 性。即模块间的耦合和模块的内聚。