title: 软件生命周期与开发模型
tags:
- module
- software-engineering
- lifecycle
- joplin
type: module
source_type: reconstructed
created: 2026-04-23
updated: 2026-04-23
---
软件生命周期与开发模型
[!abstract]
这一模块关注软件如何被分阶段推进,以及不同开发模型如何在“需求稳定性、反馈速度、风险控制”之间做取舍。
模块结论
- [[软件生命周期]] 把软件从立项到退役拆成一系列可管理阶段,是软件工程的时间主线。
- [[软件开发模型]] 是对生命周期组织方式的不同实现,核心差异在于顺序性、迭代性和风险控制方式。
- 瀑布适合稳定需求,原型适合澄清需求,螺旋适合高风险项目,敏捷适合变化频繁场景。
- 选择模型的关键,不是背定义,而是判断项目风险和需求变化特征。
一、生命周期在管理什么
- 从问题定义开始,到系统退役结束。
- 管理的不是“代码何时写完”,而是需求、设计、实现、验证、维护如何有序衔接。
二、生命周期主要阶段
- 问题定义与规划:判断是否值得做、能否做。
- 需求分析:澄清系统要做什么、性能边界是什么。
- 设计:把需求转化为架构、模块、接口、数据结构。
- 编码与测试:实现并验证设计结果。
- 部署与维护:上线、支持、修复、适配、改进。
- 退役:迁移、替换或下线旧系统。
每个阶段的典型产物
- 规划阶段:可行性研究报告、项目计划。
- 需求阶段:需求规格说明书、原型或用例描述。
- 设计阶段:概要设计、详细设计、数据库设计。
- 编码测试阶段:代码、测试用例、测试报告。
- 维护阶段:维护记录、运维手册、版本变更说明。
三、典型开发模型
瀑布模型
- 阶段顺序明确,上一阶段完成后再进入下一阶段。
- 优点:流程清晰、文档规范。
- 局限:需求变化时返工成本高。
- 适用:需求明确且稳定的项目。
原型模型
- 先快速做出原型,让用户看到雏形并反馈。
- 价值:帮助澄清模糊需求。
- 风险:若把临时原型直接演化为正式系统,可能积累质量问题。
增量模型
- 将系统拆成若干可交付部分,逐步上线。
- 价值:缩短首次交付时间,降低一次性失败风险。
螺旋模型
- 以风险分析为中心,多轮循环推进。
- 每轮通常包含目标设定、风险评估、开发验证和用户评审。
- 适合高风险、大型复杂项目。
敏捷模型
- 强调短周期迭代、用户反馈、团队协作和快速响应变化。
- 关注持续交付,而不是一次性完整计划。
- 适合需求频繁变动的项目。
喷泉模型
- 面向对象背景下提出,阶段可以交叉、反复和重叠。
- 更贴近迭代式开发现实。
四、如何比较这些模型
- 需求是否稳定。
- 项目风险是否高。
- 是否需要快速看到可运行成果。
- 团队是否能支撑频繁协作与持续反馈。
五、维护阶段为什么单独重要
- 维护通常占生命周期总成本的大头。
- 软件上线后仍会遇到缺陷修复、环境变化、功能迭代和结构优化。
- 所以前期设计和文档质量,会直接影响后期维护难度。
六、易错点
- 生命周期是完整过程,开发模型是组织这个过程的方式,两者不能混为一谈。
- 敏捷不是“没有计划”,而是用更短周期计划应对变化。
- 瀑布模型不是过时无用,只是在需求不稳定时不适合。
七、复习提问
- 软件生命周期为什么要分阶段?
- 原型模型和增量模型分别主要解决什么问题?
- 螺旋模型和敏捷模型都强调迭代,但核心关注点有什么不同?
来源
- [[raw/Joplin/计算机专业基础/软件工程/_软件工程考研复试终极整理版.md]]
- [[raw/Joplin/计算机专业基础/软件工程/2.软件工程——软件生命周期.md]]
相关页面
- [[软件工程]]
- [[软件工程关键过程与设计]]
- [[软件生命周期]]
- [[软件开发模型]]