软件工程是一门涉及软件开发全过程的学科,它涵盖了需求分析、设计、编码、测试和维护等多个阶段。在这些历年考试题中,我们可以提炼出以下几个关键知识点:
1. **软件设计**:软件设计是将软件需求转化为具体实现的过程,包括了总体结构设计和详细设计。系统总体结构图用于支持软件的详细设计,而数据结构与数据库设计是设计阶段的重要任务之一。PAD图(Problem Analysis Diagram)是一种用于软件详细设计的表示工具。
2. **软件需求分析**:需求分析阶段的主要产出是软件需求规格说明书,它是后续设计、编码和测试的基础。需求规格说明书应具备完整性、无歧义性、正确性、可验证性和可修改性,其中最重要的是正确性,确保需求清晰准确。
3. **软件测试**:软件测试的主要目的是发现程序中的错误,而非改正错误。软件测试分为多个阶段,包括单元测试、集成测试和系统测试等。在模块测试中,需要使用驱动模块和承接模块(桩模块)来辅助测试。
4. **软件生命周期**:软件生命周期指的是软件从提出需求、开发、使用到最终退役的整个过程,包含了定义阶段(如需求分析)、开发阶段(如详细设计、编码)和维护阶段。
5. **软件结构和模块化**:在软件设计中,遵循高内聚低耦合的原则,即模块内部元素紧密相关,而模块间相互依赖性较低,这样有利于提高模块的独立性和软件的可维护性。
6. **程序调试**:程序调试是识别并定位错误的过程,不是改正错误。软件测试和调试是软件开发中的重要环节,有助于提升软件质量。
7. **数据流程图(DFD图)**:DFD图是结构化方法在需求分析阶段的常用工具,用于描绘数据在系统中的流动和处理过程,不是设计阶段或详细设计阶段的工具。
8. **结构化程序设计原则**:结构化程序设计强调自顶向下、模块化和逐步求精的设计思想,其中模块化和逐步求精是核心原则,而可封装是面向对象编程中的概念。
9. **软件设计图**:N-S图、PAD图和程序流程图是软件设计中常见的表示工具,分别用于不同层次的设计。例如,N-S图常用于表示程序的结构,PAD图用于详细设计,而程序流程图则更侧重于程序的执行流程。
10. **耦合性和内聚性**:这两个概念是衡量模块独立性的指标。高内聚意味着模块内部元素紧密相关,低耦合表示模块间的相互依赖性小,提高这两者有利于提高模块的独立性。
11. **数据流图**:数据流图(DFD)中的带箭头线段表示数据流,即信息在系统中的传递路径。
通过这些题目,我们可以看到软件工程实践中的关键概念和方法,这些都是软件开发人员必须掌握的基本知识。理解和熟练应用这些知识点,对于在实际工作中解决软件开发问题至关重要。