--- 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]] ## 相关页面 - [[软件工程]] - [[软件工程关键过程与设计]] - [[软件生命周期]] - [[软件开发模型]]