软件生命周期与开发模型.md 4.1 KB


title: 软件生命周期与开发模型 tags:

  • module
  • software-engineering
  • lifecycle
  • joplin type: module source_type: reconstructed created: 2026-04-23 updated: 2026-04-23 ---

软件生命周期与开发模型

[!abstract] 这一模块关注软件如何被分阶段推进,以及不同开发模型如何在“需求稳定性、反馈速度、风险控制”之间做取舍。

模块结论

  • [[软件生命周期]] 把软件从立项到退役拆成一系列可管理阶段,是软件工程的时间主线。
  • [[软件开发模型]] 是对生命周期组织方式的不同实现,核心差异在于顺序性、迭代性和风险控制方式。
  • 瀑布适合稳定需求,原型适合澄清需求,螺旋适合高风险项目,敏捷适合变化频繁场景。
  • 选择模型的关键,不是背定义,而是判断项目风险和需求变化特征。

一、生命周期在管理什么

  • 从问题定义开始,到系统退役结束。
  • 管理的不是“代码何时写完”,而是需求、设计、实现、验证、维护如何有序衔接。

二、生命周期主要阶段

  1. 问题定义与规划:判断是否值得做、能否做。
  2. 需求分析:澄清系统要做什么、性能边界是什么。
  3. 设计:把需求转化为架构、模块、接口、数据结构。
  4. 编码与测试:实现并验证设计结果。
  5. 部署与维护:上线、支持、修复、适配、改进。
  6. 退役:迁移、替换或下线旧系统。

每个阶段的典型产物

  • 规划阶段:可行性研究报告、项目计划。
  • 需求阶段:需求规格说明书、原型或用例描述。
  • 设计阶段:概要设计、详细设计、数据库设计。
  • 编码测试阶段:代码、测试用例、测试报告。
  • 维护阶段:维护记录、运维手册、版本变更说明。

三、典型开发模型

瀑布模型

  • 阶段顺序明确,上一阶段完成后再进入下一阶段。
  • 优点:流程清晰、文档规范。
  • 局限:需求变化时返工成本高。
  • 适用:需求明确且稳定的项目。

原型模型

  • 先快速做出原型,让用户看到雏形并反馈。
  • 价值:帮助澄清模糊需求。
  • 风险:若把临时原型直接演化为正式系统,可能积累质量问题。

增量模型

  • 将系统拆成若干可交付部分,逐步上线。
  • 价值:缩短首次交付时间,降低一次性失败风险。

螺旋模型

  • 以风险分析为中心,多轮循环推进。
  • 每轮通常包含目标设定、风险评估、开发验证和用户评审。
  • 适合高风险、大型复杂项目。

敏捷模型

  • 强调短周期迭代、用户反馈、团队协作和快速响应变化。
  • 关注持续交付,而不是一次性完整计划。
  • 适合需求频繁变动的项目。

喷泉模型

  • 面向对象背景下提出,阶段可以交叉、反复和重叠。
  • 更贴近迭代式开发现实。

四、如何比较这些模型

  • 需求是否稳定。
  • 项目风险是否高。
  • 是否需要快速看到可运行成果。
  • 团队是否能支撑频繁协作与持续反馈。

五、维护阶段为什么单独重要

  • 维护通常占生命周期总成本的大头。
  • 软件上线后仍会遇到缺陷修复、环境变化、功能迭代和结构优化。
  • 所以前期设计和文档质量,会直接影响后期维护难度。

六、易错点

  • 生命周期是完整过程,开发模型是组织这个过程的方式,两者不能混为一谈。
  • 敏捷不是“没有计划”,而是用更短周期计划应对变化。
  • 瀑布模型不是过时无用,只是在需求不稳定时不适合。

七、复习提问

  • 软件生命周期为什么要分阶段?
  • 原型模型和增量模型分别主要解决什么问题?
  • 螺旋模型和敏捷模型都强调迭代,但核心关注点有什么不同?

来源

  • [[raw/Joplin/计算机专业基础/软件工程/_软件工程考研复试终极整理版.md]]
  • [[raw/Joplin/计算机专业基础/软件工程/2.软件工程——软件生命周期.md]]

相关页面

  • [[软件工程]]
  • [[软件工程关键过程与设计]]
  • [[软件生命周期]]
  • [[软件开发模型]]