Module 01 · The Software Development Lifecycle
Software Development Methodologies软件开发方法论
在本视频中,您将学习:
- 列出几种常用的软件开发生命周期方法
- 解释 瀑布模型、V形模型 和 敏捷方法
- 比较这三种方法的优缺点

常见的软件开发方法
软件开发有许多方法可供选择。不同的开发方法帮助团队理清沟通,明确信息共享的时机和方式。
本视频将讨论三种常用的开发方法:瀑布模型(Waterfall)、V形模型(V-shape Model) 和 敏捷方法(Agile)。

1.瀑布模型(Waterfall)
瀑布模型 是一种线性顺序的开发方法,每个阶段的输出是下一个阶段的输入。每个阶段都必须在前一阶段完成后才开始。所有规划工作(如需求定义、架构设计)通常都在项目初期完成。
- 客户通常在测试阶段之前不会看到产品。
- 对于一个大版本的发布,整个开发流程会重复一遍,导致版本发布之间的间隔很长,可能是几年。

优点
- 易于理解和实施。
- 各阶段清晰定义,团队成员可以明确自己的角色。
- 由于所有规划都在前期完成,因此预算估算和资源分配相对容易。
缺点
- 缺乏灵活性。
- 如果需求发生变化或遗漏,后期很难进行修改。
- 随着开发的推进,不可预见的复杂情况可能出现,或功能需求会发生变化。

2.V形模型(V-shape Model)
V形模型 之所以得名,是因为各个阶段形成了一个“V”字形。V形模型与瀑布模型类似,也是顺序进行的,但每个验证阶段(在V的左侧)都与相应的验证阶段(在V的右侧)相对应。
- 左侧的阶段包括:规划、系统设计、架构设计和模块设计。
- 底部的阶段是编码阶段。
- 右侧的阶段包括:单元测试、集成测试、系统测试和验收测试。

优点
- 与瀑布模型相似,简单易用。
- 在验证阶段就开始编写测试计划,有助于节省编码和验证阶段的时间。
缺点
- 过于僵化,一旦进入测试阶段,修改功能非常困难。
- 无法灵活应对需求变化。

3.敏捷方法(Agile)
敏捷方法 是一种迭代式开发方法,强调快速反馈和灵活应对需求变化。虽然它仍然与 软件开发生命周期(SDLC) 对齐,但每个阶段的周期较短,通常为 1 到 4 周。
- 迭代开发 💡
敏捷方法采用 迭代式开发,每个迭代周期被称为 Sprint(冲刺)。每个 Sprint 都是一个短期的开发周期,团队会在这个周期内开发并交付可工作的软件。- 单元测试:在每个 Sprint 中都会进行单元测试,以减少失败的风险,确保每个功能都能够正常运行。
- 反馈阶段:与传统 SDLC 方法中的 维护阶段 不同,敏捷方法的 每个 Sprint 结束后都会进行一个反馈阶段。在这个阶段,开发团队会展示已完成的功能,获得 客户和利益相关者 的反馈。
- Sprint 演示与反馈 📝
- Sprint Demo:每个 Sprint 结束时,开发团队会举行一个名为 “Sprint Demo” 的会议,向 利益相关者 展示已完成的功能,并获得他们的反馈。这样可以确保开发过程紧密跟踪需求。
- 迭代与重复:每个 Sprint 结束后,团队会根据反馈进行调整,并继续进行下一个 Sprint。这个过程会不断重复,直到开发完成。
- 最小可行产品(MVP) 🏗️
经过多个 Sprint 周期后,开发团队会交付一个 最小可行产品(MVP)。这个 MVP 包含了一组基本功能,用于验证软件的基本假设,并收集 客户反馈。- MVP 特性集:MVP 中的功能是为了验证软件假设,并帮助团队进一步改进产品。

敏捷宣言四大核心价值
敏捷开发方法的四大核心价值被称为 “敏捷宣言(Agile Manifesto)”,它们是:
- 个体和互动高于过程和工具:团队成员之间的沟通和协作比过程和工具更重要。
- 工作软件高于详尽文档:更注重交付功能齐全、可工作的软件,而非过度的文档。
- 客户协作高于合同谈判:与客户的持续协作比合同条款的严格执行更为重要。
- 响应变化高于遵循计划:对变化的灵活响应比严格遵循最初计划更为重要。
优点
- 灵活性强:可以快速应对变化的需求。
- 持续反馈:每个 Sprint 都会进行客户反馈,确保产品符合需求。
- 适应性强:可以根据不断变化的市场需求进行调整。
- 模块化设计:随着技术的发展,可以采用模块化设计,便于代码的集成和功能发布。
缺点
- 前期规划挑战:因为产品的整体范围不明确,预算和时间安排的规划可能比较困难。
- 资源分配困难:由于开发周期较短,可能难以进行长期资源的有效分配。

瀑布模型、V形模型与敏捷方法对比
敏捷与传统方法的对比
- 敏捷方法 与传统的瀑布模型和 V形模型不同,敏捷方法采用短周期的迭代开发,而不是线性开发。
- 传统方法:瀑布模型和 V形模型都强调按顺序完成整个产品的开发,客户反馈通常会推迟到后期。
- 敏捷方法:则专注于在短周期内快速迭代,并通过每个 Sprint 后的 反馈阶段 确保持续优化。

敏捷开发的优势与挑战
优势:
- 灵活应变:能够快速适应需求的变化和市场的动态。
- 持续反馈:每个 Sprint 结束时,客户和利益相关者都能看到产品的最新进展,提供及时反馈。
- 快速交付:每个 Sprint 都交付一部分可工作的代码,确保持续推进产品。
- 鼓励创新:通过短周期的开发,团队能够更快速地尝试新想法和技术。
挑战:
- 前期规划困难:由于每个 Sprint 的目标和功能集可能会不断变化,初期的整体规划和预算难以精准制定。
- 资源分配挑战:短周期的开发要求高效的资源分配,团队需要迅速响应变化,可能导致资源不足的情况。
| 方法 | 开发过程 | 优点 | 缺点 |
|---|---|---|---|
| 瀑布模型 | 线性顺序 | 易于理解,易于实施,角色清晰,预算和资源分配容易 | 缺乏灵活性,需求变化难以处理,开发中可能出现不可预见的问题 |
| V形模型 | 线性顺序,验证与验证对应 | 简单易用,测试计划提前设计,节省后期测试时间 | 严格,一旦进入测试阶段很难修改功能,无法快速应对需求变化 |
| 敏捷方法 | 迭代式,每个周期有反馈 | 灵活、适应性强、持续反馈、可快速应对需求变化、支持模块化设计 | 前期规划困难,预算和资源安排挑战,整体范围不明确 |
总结
在本视频中,您学习了:
- 三种常见的软件开发方法:瀑布模型、V形模型 和 敏捷方法。
- 瀑布模型 和 V形模型 是顺序进行的,而 敏捷方法 是迭代式的。
- 瀑布模型 和 V形模型 易于实施,但都不适应需求变化;而 敏捷方法 则能够灵活应对变化,但资源分配可能更具挑战性。
这些方法各有优缺点,选择合适的方法取决于项目的需求、规模以及团队的工作方式。
