软件工程考研复试终极整理版
一、核心概念
1.1 软件工程定义
- 定义:采用工程化方法(系统化、规范化、可量化)开发和维护软件,目标是低成本、高质量、易维护的软件产品。
- 三要素:方法(技术)、工具(支撑环境)、过程(任务框架)。
1.2 软件危机
- 表现:开发成本高、进度失控、质量低、维护困难。
- 原因:需求不明确、缺乏理论指导、复杂度高。
- 解决途径:引入软件工程方法学(结构化/面向对象)。
二、软件生命周期(SDLC)
2.1 阶段划分
- 定义阶段:可行性研究、需求分析。
- 开发阶段:概要设计、详细设计、编码、测试。
- 维护阶段:运行维护(改正性/适应性/完善性/预防性)。
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图分类
- 结构图:类图、对象图、组件图。
- 行为图:用例图、状态图、活动图、顺序图。
六、复试答题策略
- 概念题:结合例子说明(如用瀑布模型解释阶段划分)。
- 设计题:画图工具优先(如用数据流图描述系统流程)。
- 开放题:联系实际项目经验(如描述如何应用敏捷开发)。
- 高频问题:
- 比较瀑布模型与敏捷模型的优缺点。
- 解释耦合与内聚对软件质量的影响。