### 华农2012软件工程复习提纲及知识点详解
#### 一、试卷题型和分值分布概述
本次考试将分为六个部分:选择题、判断题、术语解释题、简答题、测试用例设计题以及应用题。具体分值分布如下:
1. **选择题**(单选)5个,每个2分,共10分。
2. **判断题**10个,每个1分,共10分。
3. **术语解释题**4个,每个5分,共20分。
4. **简答题**5个,每个6分,共30分。
5. **测试用例设计题**,10分。
6. **应用题**,20分。
#### 二、考试出题范围详解
##### 1. 应用题
- **考察内容**:本题将重点考察学生对结构化分析与设计技术的理解和运用能力。
- **题型示例**:给出一个具体的软件项目背景和需求描述,要求考生能够根据这些信息绘制出相应的数据流图(DFD)、编写数据字典条目,并设计出合理的软件体系结构。考生可以参考平时的作业和课堂案例进行复习。
##### 2. 测试用例设计题
- **考察内容**:本题将综合考察考生对黑盒测试和白盒测试技术的应用能力。
- **题型示例**:
- **黑盒测试**:给出一个软件的需求规格说明,要求使用等价类划分法和边界值分析法设计测试用例。
- **白盒测试**:提供一段程序代码或其流程图,要求采用语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖或路径测试等方法设计测试用例。
##### 3. 简答题和术语解释题
- **考察内容**:这两类题型主要考查学生对于软件工程各个阶段的基本概念和思想的掌握程度。
- **题型示例**:考生需要能够准确解释和理解软件开发过程中的关键术语和概念,如软件需求规约的主要内容、软件设计阶段的任务等。
##### 4. 选择题和判断题
- **考察内容**:这类题型主要是检验考生对软件工程基础知识的掌握程度。
- **题型示例**:例如,考生需要能够区分不同的软件开发模型(如瀑布模型、增量模型等),并理解它们的特点和局限性。
#### 三、基本概念和知识点详解
1. **计算机软件概念**:计算机软件是指为完成特定任务而编写的指令集或程序集合,包括系统软件和应用软件两大类。
2. **软件发展的三个阶段**:
- **程序设计**阶段:早期阶段,软件被视为一系列指令。
- **程序系统**阶段:软件开始被看作是由多个程序组成的系统。
- **软件工程**阶段:引入了工程化的方法来管理和控制软件开发过程。
3. **软件工程概念**:软件工程是一种系统化、规范化且可量化的方法来开发和维护软件。
4. **软件生存周期概念及其六个阶段**:软件生存周期是指软件从构思到退役的整个生命周期,通常分为需求分析、设计、编码、测试、部署和维护六个主要阶段。
5. **瀑布模型思想、特点及局限性**:
- **思想**:瀑布模型将软件开发过程视为一系列顺序相连的阶段。
- **特点**:每个阶段必须完成才能进入下一个阶段。
- **局限性**:缺乏灵活性,一旦进入下一阶段很难回到前面的阶段修改。
6. **增量模型、原型模型、螺旋模型各自的思想、特点及局限**:
- **增量模型**:软件开发被划分为一系列小的增量构建,每完成一个增量就交付一部分功能给用户。
- **原型模型**:快速构建一个软件系统的原型供用户测试和反馈,再逐步完善。
- **螺旋模型**:结合了瀑布模型和原型模型的优点,通过迭代和风险评估来管理软件开发过程。
7. **喷泉模型、形式化方法模型的概念**:
- **喷泉模型**:适用于面向对象的开发方法,强调迭代和无间隙的开发过程。
- **形式化方法模型**:使用数学方法来描述软件系统的功能和行为,确保软件的正确性和可靠性。
8. **基于计算机的系统概念及六个组成元素**:
- **概念**:基于计算机的系统是由硬件、软件、数据、人员、规程和环境六部分组成的系统。
- **组成元素**:
- **硬件**:物理设备。
- **软件**:操作系统、应用程序等。
- **数据**:存储和处理的信息。
- **人员**:用户和操作者。
- **规程**:指导如何使用系统的文档和指南。
- **环境**:系统运行的外部条件。
9. **可行性分析的任务**:可行性分析主要任务是在项目开始前评估项目的经济、技术和社会可行性。
10. **需求工程的六个阶段及任务**:
- **启动**:确定需求获取的目标和计划。
- **获取**:收集和记录利益相关者的期望和要求。
- **分析**:理解和解释收集到的需求信息。
- **协商**:与利益相关者就需求达成一致。
- **规格说明**:编写正式的需求文档。
- **验证**:确保需求文档满足原始目标。
11. **软件需求的概念**:软件需求是软件系统预期达到的目标或应具备的功能和性能特性。
12. **软件需求规约主要包括的内容**:软件需求规约通常包括功能需求、非功能需求、约束条件等内容。
13. **软件设计阶段的任务**:软件设计阶段的主要任务包括架构设计、接口设计、数据设计、过程设计以及界面设计五个方面。
14. **软件设计过程**:软件设计过程一般包括需求分析、总体设计、详细设计和设计评审四个步骤。
15. **模块化的概念**:模块化是指将软件系统分解成独立的模块,每个模块负责实现一个特定的功能。
16. **信息隐藏的概念**:信息隐藏是指在一个模块内部实现的细节对外部模块隐藏起来,以减少模块间的依赖关系。
17. **功能内聚的概念与数据耦合的概念**:
- **功能内聚**:指一个模块内的各个组成部分紧密地围绕着一个中心目的而设计。
- **数据耦合**:指模块之间通过传递数据来进行交互的方式。
18. **结构化分析与设计中,判断结构好坏的标准——高内聚低耦合**:高内聚表示模块内部的组件紧密相关,低耦合意味着模块间的影响最小化。
19. **部件级设计(详细设计)的描述工具**:常用的描述工具包括程序流程图、N-S图、PAD图、伪代码等。
20. **结构化分析模型包含哪些模型**:结构化分析模型通常包括数据流图(DFD)、数据字典、实体关系图(ERD)等。
21. **系统响应时间的概念**:系统响应时间是指从用户发起请求到系统返回结果的时间间隔。
22. **界面设计的黄金原则**:界面设计的黄金原则包括简洁性、一致性、用户友好性和反馈及时性等。
23. **编程实现时需注意的问题**:
- **标识符命名**:应清晰明了,遵循一定的命名规则。
- **程序注释**:合理添加注释以提高代码的可读性和可维护性。
- **代码的视觉组织**:合理布局,使代码易于阅读。
- **数据说明**:明确变量类型和作用域。
- **语句结构**:避免复杂嵌套,使用简单直观的结构。
24. **软件测试的目的**:软件测试的目的是验证软件是否符合预定的需求,并发现潜在的问题。
25. **各种逻辑覆盖准则之间的关系**:
- **语句覆盖**是最基本的逻辑覆盖标准,确保每个可执行语句至少被执行一次。
- **判定覆盖**确保每个逻辑判断的每个分支至少被执行一次。
- **条件覆盖**要求每个逻辑条件的所有可能取值至少被测试一次。
- **判定-条件覆盖**同时满足判定覆盖和条件覆盖的要求。
- **条件组合覆盖**要求每个逻辑条件的所有可能组合都被测试。
- **路径测试**确保所有可能的执行路径都被测试。
26. **单元测试、集成测试、确认测试和系统测试的对象、依据和任务**:
- **单元测试**:针对软件的最小可测试单元进行测试。
- **集成测试**:测试不同模块间的接口。
- **确认测试**:验证软件是否满足原始需求。
- **系统测试**:测试整个软件系统作为一个整体的表现。
27. **α测试和β测试的概念、回归测试的概念**:
- **α测试**:由开发团队在受控环境中进行的内部测试。
- **β测试**:由真实用户在实际使用环境下进行的测试。
- **回归测试**:在修改了软件后重新进行的测试,以确保修改没有引入新的错误。
28. **测试完成的标准**:当所有预定的测试案例都已执行完毕,并且所有的缺陷都已得到解决或被合理地记录下来时,测试被认为完成了。
29. **软件维护及四种类型的维护的概念**:
- **维护**:软件维护是指在软件交付之后对软件进行的改进和支持活动。
- **类型**:
- **改正性维护**:修复在使用过程中发现的错误。
- **适应性维护**:使软件适应新的硬件或操作系统环境的变化。
- **完善性维护**:增加新的功能或改进现有功能。
- **预防性维护**:提前修改软件以适应未来的变更。
30. **改善性维护在维护中所占比重最大**:由于用户需求不断变化,完善性维护在软件维护活动中占据很大比例。
31. **提高可维护性的方法**:提高软件的可维护性可以通过提高代码质量和文档质量、采用良好的设计模式等方式实现。
32. **软件质量的定义**:软件质量是指软件产品在使用过程中满足用户需求的程度。
33. **软件可靠性的概念及其度量指标**:
- **概念**:软件可靠性是指在规定的条件下和规定的时间内,软件不引起系统失效的概率。
- **度量指标**:平均无故障时间(MTTF)、平均修复时间(MTTR)等。
34. **软件配置项、软件配置、基线的概念**:
- **软件配置项**:软件开发过程中产生的文档和代码等元素。
- **软件配置**:软件配置是指软件开发过程中对配置项进行识别、管理和控制的过程。
- **基线**:在软件开发的某一阶段形成的经过正式审查和批准的配置项的集合,后续的变更必须通过正式的变更控制过程。