_软件工程考研复试终极整理版.md 4.2 KB

软件工程考研复试终极整理版

一、核心概念

1.1 软件工程定义

  • 定义:采用工程化方法(系统化、规范化、可量化)开发和维护软件,目标是低成本、高质量、易维护的软件产品。
  • 三要素:方法(技术)、工具(支撑环境)、过程(任务框架)。

1.2 软件危机

  • 表现:开发成本高、进度失控、质量低、维护困难。
  • 原因:需求不明确、缺乏理论指导、复杂度高。
  • 解决途径:引入软件工程方法学(结构化/面向对象)。

二、软件生命周期(SDLC)

2.1 阶段划分

  1. 定义阶段:可行性研究、需求分析。
  2. 开发阶段:概要设计、详细设计、编码、测试。
  3. 维护阶段:运行维护(改正性/适应性/完善性/预防性)。

2.2 典型开发模型

模型 特点 适用场景
瀑布模型 阶段严格、文档驱动,灵活性差 需求明确且稳定的项目
原型模型 快速构建原型获取用户反馈,迭代开发 需求模糊或快速验证
增量模型 分批次交付功能模块,降低风险 可模块化的大型项目
螺旋模型 强调风险分析,多次迭代 高风险、大型复杂项目
敏捷模型 快速响应需求变化,强调团队协作 需求频繁变化的项目
喷泉模型 面向对象,各阶段可交叉 面向对象开发

三、关键过程与工具

3.1 可行性研究

  • 内容:经济可行性、技术可行性、操作可行性。
  • 步骤:复查目标→研究现有系统→导出逻辑模型→定义问题→选择方案→提交报告。

3.2 需求分析

  • 任务:确定功能/性能需求、数据需求、导出逻辑模型(数据流图、E-R图)。
  • 模型工具
    • 数据流图(DFD):描述数据流动和处理过程。
    • 数据字典:定义数据元素及关系。

3.3 设计阶段

  • 概要设计:模块划分、接口设计(结构图、层次图)。
  • 详细设计:算法设计(流程图、PAD图)。
  • 设计原则
    • 高内聚低耦合:功能内聚(最高)、偶然内聚(最低);数据耦合(最低)、内容耦合(最高)。
    • 模块独立性:通过抽象、信息隐藏实现。

四、软件测试与维护

4.1 测试分类

测试类型 目标 常用方法
单元测试 验证模块功能 白盒测试(语句/路径覆盖)
集成测试 验证模块接口 自顶向下/自底向上集成
系统测试 验证整体系统 黑盒测试(等价类/边界值)
验收测试 用户验证系统是否符合需求 α测试(内部)、β测试(外部)

4.2 测试方法

  • 黑盒测试:关注输入输出(等价类划分、边界值分析)。
  • 白盒测试:覆盖代码逻辑(条件覆盖、路径覆盖)。

4.3 软件维护

  • 类型:改正性(修复缺陷)、适应性(适应环境)、完善性(新增功能)、预防性(提高可维护性)。
  • 维护成本:占生命周期总成本的60%-70%。

五、进阶考点

5.1 CMM能力成熟度模型

级别 特点
初始级 过程无序,依赖个人能力
可重复级 基本项目管理,可复现成功经验
已定义级 过程标准化、文档化
已管理级 定量控制过程和产品质量
优化级 持续改进,引入新技术优化流程

5.2 UML图分类

  • 结构图:类图、对象图、组件图。
  • 行为图:用例图、状态图、活动图、顺序图。

六、复试答题策略

  1. 概念题:结合例子说明(如用瀑布模型解释阶段划分)。
  2. 设计题:画图工具优先(如用数据流图描述系统流程)。
  3. 开放题:联系实际项目经验(如描述如何应用敏捷开发)。
  4. 高频问题
    • 比较瀑布模型与敏捷模型的优缺点。
    • 解释耦合与内聚对软件质量的影响。