软件工程期末考试试题及答案

preview
需积分: 0 0 下载量 119 浏览量 更新于2022-03-17 收藏 62KB DOCX 举报
### 软件工程知识点解析 #### 一、单项选择题知识点详解 1. **软件危机的表现** - **选项A**: 对软件开发成本和进度的估计常常很不准确,这是软件危机的一个典型表现,因为在早期阶段很难准确预测项目的规模和复杂度。 - **选项B**: 用户对“已完成的”软件系统不满意的现象经常发生,这反映了需求管理和变更控制方面的挑战,也是软件危机的重要表现之一。 - **选项C**: 软件产品的质量往往靠不住,这是由于缺乏有效的质量保证措施和测试策略导致的问题。 - **选项D**: 采用面向对象方法开发软件,并非软件危机的表现,而是现代软件开发的一种常用技术。 2. **软件工程方法学中的要素** - **选项A**: 方法,指的是用于软件开发的具体技术和方法论。 - **选项B**: 工具,是指辅助软件开发的各种工具和技术,如IDE、调试器等。 - **选项C**: 程序,并不是软件工程方法学的核心要素,这里更多地强调方法、工具和过程。 - **选项D**: 过程,指的是软件开发的整体流程和管理方式。 3. **模块的独立性的耦合方式** - **选项A**: 公共耦合,指的是多个模块共享相同的全局数据或代码,这种方式会降低模块的独立性。 - **选项B**: 控制耦合,指的是一个模块通过向另一个模块传递控制信息来影响其行为,这也会影响模块的独立性。 - **选项C**: 数据耦合,是最理想的耦合方式,仅通过参数传递数据而不涉及控制信息的交换。 - **选项D**: 内容耦合,指的是一个模块直接访问另一个模块的内部数据或代码,这是最差的耦合方式。 4. **概要设计** - **选项D**: 概要设计中,开发人员需要解决的主要问题是确定软件的总体结构,包括模块划分、模块之间的接口定义以及全局数据结构的设计。 5. **模块独立性** - **选项C**: 功能内聚是最好的内聚形式,意味着模块只完成单一的功能,这样可以提高模块的可复用性和可维护性。 6. **程序的基本控制结构** - **选项C**: 程序的三种基本控制结构(顺序、选择和循环)都应该有一个入口和一个出口,这样的结构更易于理解和维护。 7. **面向对象分析与设计** - **选项A**: 面向对象分析与面向对象设计虽然紧密相关,但有着明显的区别,前者侧重于问题域的建模,后者侧重于解决方案的构建。 - **选项B**: 面向对象分析到面向对象设计的过程中,模型不断扩展和完善。 - **选项C**: 实际开发过程中,两者之间的界限并不清晰,往往交替进行。 - **选项D**: 这是一个迭代的过程,可能需要多次往返于分析和设计之间。 8. **软件测试** - **选项A**: 确认测试的主要目的是验证软件是否满足用户的需求规格说明书的要求,因此主要用于检测需求分析阶段的错误。 9. **面向对象的高层设计** - **选项C**: 系统交互界面是为了描述用户如何与系统进行交互的部分,通常包括用户界面设计和交互逻辑。 10. **软件维护** - **选项B**: 适应性维护是为了使软件适应新的硬件或软件环境的变化而进行的修改。 11. **UML图类型** - **选项A**: 用例图用于描述系统的功能需求,主要关注系统的行为者及其与系统的交互。 12. **OO的三大特性** - **选项D**: 多态性不属于面向对象编程的三个基本特性(对象、继承和封装),但它是非常重要的一个概念。 13. **类的定义** - **选项C**: “拨号”不是一个可以定义为类的对象。类通常用来表示现实世界中的实体或抽象概念。 14. **黑盒测试** - **选项B**: 边界值分析是一种常用的黑盒测试方法,用于测试边界条件下的异常情况。 #### 二、判断题知识点解析 - **软件定义**: 软件不仅仅是程序,还包括相关的文档和数据。 - **测试用例**: 测试用例通常由输入数据和预期输出组成,而不是实际输出。 - **集成测试**: 集成测试并非总是自顶向下进行,也可以自底向上或其他方式。 - **编码**: 使用局部变量是好的编程实践之一,有助于提高代码的可读性和可维护性。 - **需求分析**: 在需求分析阶段考虑维护性问题可以帮助减少后期的维护成本。 - **顺序图**: 顺序图用于描述对象之间的交互顺序,有助于理解系统的动态行为。 - **概要设计**: 强化模块间的独立性是概要设计的重要目标之一。 - **模块大小**: 模块大小并不是越小越好,而是应该根据功能合理划分。 - **模块联系**: 模块之间的联系不宜过于紧密,以保持系统的灵活性和可维护性。 - **黑盒测试**: 黑盒测试关注的是外部行为,而非内部逻辑。 - **维护**: 维护不仅限于软件交付后的修改,还包括整个生命周期内的各种更新。 - **判定覆盖**: 如果一组测试用例实现了判定覆盖,则一定也实现了语句覆盖。 - **面向对象开发**: 面向对象开发并非仅采用自顶向下的方式,也可以结合其他方法。 - **项目延期**: 增加人手不一定能加速项目进度,甚至可能适得其反。 - **GOTO语句**: 尽量避免使用GOTO语句,以提高代码质量和可维护性。 #### 四、简答题知识点解析 - **螺旋模型**: 螺旋模型结合了瀑布模型和快速原型法的优点,通过迭代的方式逐步细化软件的需求并评估风险,确保项目的顺利进行。 - **模块独立性**: - 定义: 模块独立性是指模块的内部功能与其与其他模块的联系之间的分离程度。 - 度量: 主要通过内聚和耦合两个方面来度量。高内聚低耦合是提高模块独立性的关键。 - 重要性: 提高模块独立性有助于增强软件的可维护性和可扩展性,减少错误的影响范围。 #### 五、综合题知识点解析 - **食堂管理系统数据流图**: - 顶层数据流图(0层): 显示整个系统的外部实体(如食堂管理员和员工)、主要处理过程(如订餐管理)以及数据存储(如菜单信息数据库)。 - 0层数据流图: 对顶层数据流图中的处理过程进行进一步分解,展示更具体的处理细节,例如订单处理、菜单管理等。