Skip to content

Software Development Methodologies 软件开发方法论 💻📊

在本视频中,您将学习:

  • 列出几种常用的软件开发生命周期方法

  • 解释 瀑布模型V形模型敏捷方法

  • 比较这三种方法的优缺点

image 59.png


常见的软件开发方法 🔄

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

image 60.png


1. 瀑布模型(Waterfall) 💧

瀑布模型 是一种线性顺序的开发方法,每个阶段的输出是下一个阶段的输入。每个阶段都必须在前一阶段完成后才开始。所有规划工作(如需求定义、架构设计)通常都在项目初期完成。

  • 客户通常在测试阶段之前不会看到产品。

  • 对于一个大版本的发布,整个开发流程会重复一遍,导致版本发布之间的间隔很长,可能是几年。

image 61.png


优点:

  • 易于理解和实施。

  • 各阶段清晰定义,团队成员可以明确自己的角色。

  • 由于所有规划都在前期完成,因此预算估算和资源分配相对容易。

缺点:

  • 缺乏灵活性。

  • 如果需求发生变化或遗漏,后期很难进行修改。

  • 随着开发的推进,不可预见的复杂情况可能出现,或功能需求会发生变化。

image 62.png


2. V形模型(V-shape Model) 📐

V形模型 之所以得名,是因为各个阶段形成了一个“V”字形。V形模型与瀑布模型类似,也是顺序进行的,但每个验证阶段(在V的左侧)都与相应的验证阶段(在V的右侧)相对应。

  • 左侧的阶段包括:规划、系统设计、架构设计和模块设计。

  • 底部的阶段是编码阶段。

  • 右侧的阶段包括:单元测试、集成测试、系统测试和验收测试。

image 63.png


优点:

  • 与瀑布模型相似,简单易用。

  • 在验证阶段就开始编写测试计划,有助于节省编码和验证阶段的时间。

缺点:

  • 过于僵化,一旦进入测试阶段,修改功能非常困难。

  • 无法灵活应对需求变化。

image 64.png


3. 敏捷方法(Agile) 🔄

敏捷方法 是一种迭代式开发方法,强调快速反馈和灵活应对需求变化。虽然它仍然与 软件开发生命周期(SDLC) 对齐,但每个阶段的周期较短,通常为 1 到 4 周

  • 迭代开发 💡

    敏捷方法采用 迭代式开发,每个迭代周期被称为 Sprint(冲刺)。每个 Sprint 都是一个短期的开发周期,团队会在这个周期内开发并交付可工作的软件。

    • 单元测试:在每个 Sprint 中都会进行单元测试,以减少失败的风险,确保每个功能都能够正常运行。

    • 反馈阶段:与传统 SDLC 方法中的 维护阶段 不同,敏捷方法的 每个 Sprint 结束后都会进行一个反馈阶段。在这个阶段,开发团队会展示已完成的功能,获得 客户和利益相关者 的反馈。

  • Sprint 演示与反馈 📝

    • Sprint Demo:每个 Sprint 结束时,开发团队会举行一个名为 “Sprint Demo” 的会议,向 利益相关者 展示已完成的功能,并获得他们的反馈。这样可以确保开发过程紧密跟踪需求。

    • 迭代与重复:每个 Sprint 结束后,团队会根据反馈进行调整,并继续进行下一个 Sprint。这个过程会不断重复,直到开发完成。

  • 最小可行产品(MVP) 🏗️

    经过多个 Sprint 周期后,开发团队会交付一个 最小可行产品(MVP)。这个 MVP 包含了一组基本功能,用于验证软件的基本假设,并收集 客户反馈

    • MVP 特性集:MVP 中的功能是为了验证软件假设,并帮助团队进一步改进产品。

image 65.png


敏捷宣言四大核心价值 📝

敏捷开发方法的四大核心价值被称为 “敏捷宣言(Agile Manifesto)”,它们是:

  1. 个体和互动高于过程和工具:团队成员之间的沟通和协作比过程和工具更重要。

  2. 工作软件高于详尽文档:更注重交付功能齐全、可工作的软件,而非过度的文档。

  3. 客户协作高于合同谈判:与客户的持续协作比合同条款的严格执行更为重要。

  4. 响应变化高于遵循计划:对变化的灵活响应比严格遵循最初计划更为重要。


优点:

  • 灵活性强:可以快速应对变化的需求。

  • 持续反馈:每个 Sprint 都会进行客户反馈,确保产品符合需求。

  • 适应性强:可以根据不断变化的市场需求进行调整。

  • 模块化设计:随着技术的发展,可以采用模块化设计,便于代码的集成和功能发布。

缺点:

  • 前期规划挑战:因为产品的整体范围不明确,预算和时间安排的规划可能比较困难。

  • 资源分配困难:由于开发周期较短,可能难以进行长期资源的有效分配。

image 66.png


瀑布模型、V形模型与敏捷方法对比 ⚖️

敏捷与传统方法的对比 🔄🆚📝

  • 敏捷方法 与传统的瀑布模型和 V形模型不同,敏捷方法采用短周期的迭代开发,而不是线性开发。

  • 传统方法:瀑布模型和 V形模型都强调按顺序完成整个产品的开发,客户反馈通常会推迟到后期。

  • 敏捷方法:则专注于在短周期内快速迭代,并通过每个 Sprint 后的 反馈阶段 确保持续优化。

image 67.png

敏捷开发的优势与挑战 🚀⚠️

优势

  • 灵活应变:能够快速适应需求的变化和市场的动态。

  • 持续反馈:每个 Sprint 结束时,客户和利益相关者都能看到产品的最新进展,提供及时反馈。

  • 快速交付:每个 Sprint 都交付一部分可工作的代码,确保持续推进产品。

  • 鼓励创新:通过短周期的开发,团队能够更快速地尝试新想法和技术。

挑战

  • 前期规划困难:由于每个 Sprint 的目标和功能集可能会不断变化,初期的整体规划和预算难以精准制定。

  • 资源分配挑战:短周期的开发要求高效的资源分配,团队需要迅速响应变化,可能导致资源不足的情况。

方法开发过程优点缺点
瀑布模型线性顺序易于理解,易于实施,角色清晰,预算和资源分配容易缺乏灵活性,需求变化难以处理,开发中可能出现不可预见的问题
V形模型线性顺序,验证与验证对应简单易用,测试计划提前设计,节省后期测试时间严格,一旦进入测试阶段很难修改功能,无法快速应对需求变化
敏捷方法迭代式,每个周期有反馈灵活、适应性强、持续反馈、可快速应对需求变化、支持模块化设计前期规划困难,预算和资源安排挑战,整体范围不明确

总结 📚

在本视频中,您学习了:

  • 三种常见的软件开发方法:瀑布模型V形模型敏捷方法

  • 瀑布模型V形模型 是顺序进行的,而 敏捷方法 是迭代式的。

  • 瀑布模型V形模型 易于实施,但都不适应需求变化;而 敏捷方法 则能够灵活应对变化,但资源分配可能更具挑战性。

这些方法各有优缺点,选择合适的方法取决于项目的需求、规模以及团队的工作方式。

image 68.png