Skip to content

考点清单

  • [x] 软件开发生命周期(SDLC 三阶段)
  • [x] 软件工程过程(PDCA)
  • [x] 软件系统工具分类(开发/维护/管理支持)
  • [x] CMM 能力成熟度模型(5 级)
  • [x] CMMI(阶段式/连续式)
  • [x] 软件过程模型对比(瀑布/原型/增量/螺旋/敏捷/RUP/喷泉/CBSD/形式化)
  • [x] 瀑布模型(结构化开发/需求明确)
  • [x] 原型模型(抛弃型/演化型)
  • [x] 增量模型(核心模块优先)
  • [x] 螺旋模型(风险驱动/大型高风险)
  • [x] 敏捷方法(XP/水晶/Scrum/FDD)
  • [x] 统一过程模型 RUP(4+1 视图/4 阶段/9 核心工作流)
  • [x] 净室软件工程

笔记

一、软件开发生命周期(SDLC)

时期内容具体步骤
软件定义时期确定总目标问题定义、可行性研究、需求分析
软件开发时期设计与实现概要设计、详细设计、编码、测试
软件运行和维护交付使用并持续维护维护、更新

软件设计四大活动: 数据设计 → 架构设计 → 人机界面设计 → 过程设计。


二、软件工程过程(PDCA)

阶段内容
P(Plan)— 软件规格说明规定软件功能及运行时限制
D(Do)— 软件开发开发满足规格说明的软件
C(Check)— 软件确认确认软件满足用户需求
A(Action)— 软件演进运行中不断改进满足新需求

三、软件系统工具分类

类别包含工具
软件开发工具需求分析工具、设计工具、编码与排错工具、测试工具
软件维护工具版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
软件管理和软件支持工具项目管理工具、配置管理工具、软件评价工具

四、能力成熟度模型 CMM ★

级别特点关键过程区域数
1. 初始级过程无明确定义,成败依赖个人
2. 可重复级建立基本项目管理过程,能跟踪费用/进度/功能6 个(配置管理、质量保证、子合同管理、项目跟踪监督、项目策划、需求管理)
3. 已定义级过程文档化/标准化,整合为组织标准软件过程7 个(同行评审、组间协调、产品工程、集成管理、培训大纲、过程定义、过程焦点)
4. 已管理级制定详细度量标准,定量理解和控制2 个(质量管理、定量过程管理)
5. 优化级定量分析+过程持续改进3 个(过程更改管理、技术改革管理、缺陷预防)

CMMI(能力成熟度模型集成)

CMMI 是 CMM 的升级版,支持多工程学科和领域。

两种表示方法:

模型关注点特点
阶段式模型组织整体成熟度5 级:初始级→已管理级→已定义级→定量管理级→优化级
连续式模型每个过程域的能力不同过程域可达不同能力等级

CMMI 阶段式 5 级:

级别特点
1.初始级过程不可预测且缺乏控制
2.已管理级过程为项目服务(需求管理、项目计划、配置管理、度量和分析等)
3.已定义级过程为组织服务(需求开发、技术解决方案、验证、确认、风险管理等)
4.定量管理级过程已度量和控制(组织过程性能、定量项目管理)
5.优化级集中过程改进和优化(组织级改革与实施、因果分析和解决方案)

五、软件过程模型 ★

核心模型对比

特性瀑布模型螺旋模型原型化模型增量模型喷泉模型CBSD形式化方法
核心思想线性顺序分阶段迭代原型+风险分析快速原型交互理解需求逐步开发核心和非核心迭代无间隙,面向对象预包装构件构造系统严格数学基础
适用需求明确,结构化高庞大复杂高风险需求不明确需快速迭代可逐步交付的复杂系统面向对象开发高复用性需求高可靠性系统
用户参与
风险控制
复用性

各模型详解

1. 瀑布模型 ★

结构化开发方法的标准模型,前阶段输出 = 后阶段输入,每个阶段结束有里程碑。

阶段:可行性分析 → 需求分析 → 软件设计 → 编码(含单元测试)→ 测试 → 运行维护。

  • 优点:概念清晰、易于理解、进度好控制
  • 缺点:需求难一次确定、变更代价高、各阶段不能并行
  • 关键记忆:功能清晰、需求明确 → 选瀑布模型

2. 原型模型

解决瀑布模型需求难以一次确定的缺点。

两个阶段:原型开发 → 目标软件开发

类型说明
抛弃型原型原型仅用于需求确认,确认后抛弃,继续用瀑布模型
演化型原型不断补充完善原型,直至形成完整产品
  • 特点:对用户需求动态响应、逐步纳入,构造方便快速造价低

3. 增量模型

首先开发核心模块,优先级最高的服务最先交付。

  • 优点:逐步确认降低风险
  • 缺点:不利于模块划分(非整体规划)
  • 与原型区别:增量模型每次版本都是独立可操作的作品,原型构造一般是为了演示

4. 螺旋模型 ★

演化软件过程模型,风险驱动,适用于庞大复杂高风险系统

四个象限:制定计划 → 风险分析 → 实施工程 → 客户评估

  • 特点:原型迭代特征 + 瀑布模型系统性结合,强调其他模型忽视的风险分析
  • 包含维护周期,维护和开发之间没有本质区别

5. 敏捷方法

开发宣言:个体和交互 > 过程和工具;可工作的软件 > 面面俱到的文档;客户合作 > 合同谈判;响应变化 > 遵循计划

两个核心特点:"适应性" 而非预设性;"面向人" 而非面向过程。

方法核心理念关键实践
极限编程(XP)交流、朴素、反馈、勇气测试先行,近螺旋式开发,小周期迭代
水晶系列以人为中心机动性方法,共性核心元素
并列争球法(Scrum)迭代增量化过程冲刺(Sprint),约 30 天/次,自组织小组
特性驱动(FDD)人+过程+技术5 核心过程:整体对象模型→特征列表→计划→设计→构建

6. 统一过程模型(RUP)

重量级过程模型,用例驱动、以架构为中心、迭代和增量。

4 个阶段: 初始 → 细化 → 构造 → 移交。

9 个核心工作流: 业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境。

4+1 视图模型: 用例视图(场景)→ 逻辑视图(功能/类图)→ 实现视图(模块组织/包图组件图)→ 进程视图(并发性能/活动图)→ 部署视图(拓扑结构/部署图)。

7. 其他模型

模型特点
喷泉模型以用户需求为动力、对象为驱动,适合面向对象开发,迭代性和无间隙性
CBSD(基于构件开发)利用预先包装构件构造系统,增强复用性,建立构件库
形式化方法模型严格数学基础,生成形式化数学规格说明

六、净室软件工程

以数学和统计学为基础,强调从源头预防缺陷,而非先开发再测试修复。

核心理念: 预防胜于修复、统计质量控制、零缺陷开发。

应用技术: 统计过程控制(增量开发中监控质量)、基于函数的规范与设计、正确性验证(编码前验证)、统计测试和软件认证。

缺点: 理论化(需数学知识)、耗时(正确性验证困难)、不进行传统模块测试可能不现实。