16 敏捷开发实践(1)

  • 敏捷方法:是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。

  • 敏捷开发:是一种以人为核心、迭代、循序渐进的开发方法。

  • 敏捷实践:精益软件开发(LSD)、SCRUM、KanBan、极限编程(XP)

敏捷实践简介

精益软件开发(LSD)

在创造价值的目标下,通过改良流程不断地消除浪费。现被广泛用于生产制造管理、IT系统建设。

精益开发的基本原则

  • 消除浪费:将所有的时间花在能够增加客户价值的事情上。

  • 推迟决策:保持可选方案的开放性,但时间不能过长。

  • 加强学习:通过短迭代周期、重构、集成测试和频繁的客户反馈会议增强学习。

  • 快速交付:短期迭代或小批量立即交付价值,促进有效的决策制定。

  • 打造精品:使用恰当的方法确保质量,如构建自动化测试、安装和持续集成。

  • 授权团队:精益专注于团队,让创造增值的员工充分发挥自己的潜力。

  • 优化整体:快速试错,快速学习

Scrum

Scrum一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程,强调团队的自组织和跨功能性。一般由多个Sprint(迭代冲刺)组成,每个Sprint长度一般为2-4周。 具体介绍见下一篇:「17 敏捷开发-Scrum(2)」

  • 三个角色:产品所有者(Product Owner), Scrum Master,开发团队(Team)。

  • 核心:Product Backlog(产品待办事项)、Sprint Backlog(迭代待办事项)、迭代目标。

  • 流程:需求梳理、Sprint Plan(迭代计划)、Sprint (迭代)、Daily Scrum(每日站会)、Sprint Review(迭代评审)和 Sprint Retrospective(迭代回顾)

  • 五个会议:待办事项整理会议(Backlog Grooming Meeting)、迭代计划会议(Sprint Planning Meeting)、每日站会(Daily Meeting)、评审会(Review Meeting)、回顾会(Retrospective Meeting)

Kanban

Kanban 是把敏捷的过程和产品进行可视化的方法 。把过程中的协作、分工、范围、工作、需求、进度、速度、提交物等直观地展现出来。且通过限制「进行中」的任务数量来保持工作流畅。

  • 基本看板三步工作流程:「待办」、「进行中」、「完成」。

  • 在制品 (WIP): 限制设定了工作流中每个状态所能允许的最大制品量。限制在制品数量更易于发现团队工作流中的低效率现象。

  • 看板卡片:通过帮助团队成员之间信息共享。

极限编程(XP)

一种基于频繁交付周期的软件开发方法,强调团队协作、快速反馈和持续改进。

  • 方法核心实践:测试驱动开发(TDD)、持续集成(CI)、小版本发布和团队协作。
  • 核心价值观:沟通、简洁、反馈、勇气、尊重。

敏捷开发的优势

  • 加速交付:注重迭代开发和快速响应变化,更快地交付。

  • 更灵活项目管理:允许在项目进行中灵活调整计划和需求,以更好地应对变化的市场和技术环境。

  • 增强客户满意度:强调与客户的密切合作和持续反馈,有助于团队更好地理解客户需求并及时调整开发方向,从而提高客户满意度。
  • 促进团队协作:强调团队协作和自组织,有助于激发团队成员的创造力和责任感,提高工作效率和质量。

敏捷开发的挑战

  • 资源规划难:并不是一开始知道产品"最终的样子",是在过程中挖掘用户需求逐渐知道终局状态,给前期规划带来很大挑战。

  • 有效度量难:敏捷是以增量的方式交付,边走边看意味着开始如果设置了KPI,这跨周期的开发进度使得衡量进度相对困难。

  • 必要文档缺少或分散:频繁交付会导致成员依赖于讨论,缺少文档支撑,一些原型设计、UI设计、需求文档分散于各个迭代,不利于后期维护和交接。

敏捷宣言 12条原则

  1. 为满足客户,尽早并持续交付高价值软件。

  2. 积极面对需求变化,即使是在软件迭代后期,敏捷方法依然是帮助客户获得市场竞争优势的重要手段。

  3. 频繁交付可用的软件,交付周期越短越好。

  4. 在项目过程中,业务人员、开发人员应当保持高度合作关系。

  5. 为软件开发人员提供必要的环境和技术支持。

  6. 保证高效的面对面交谈机会。

  7. 软件可用性是衡量软件开发进度的首要标准。

  8. 敏捷流程倡导可持续开发。软件供应的甲方和乙方要保持长期稳定的合作关系。

  9. 持续地追求技术卓越和良好的设计,增强敏捷能力。

  10. 简单是敏捷流程的根本,尽最大可能减少不必要的工作。

  11. 强调软件开发过程需要形成最佳架构、需求和设计方案。

  12. 软件开发团队要以提升效率为主。

相关推荐
小智老师PMP1 天前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
熊野君1 天前
第 7 章 AI时代产品经理新增能力
大数据·人工智能·经验分享·职场和发展·产品经理
2601_962297252 天前
产品经理 AI 提示词模板:需求分析、PRD、竞品、用户故事和验收标准
产品经理·需求分析·prd·ai提示词·竞品分析
深维AI随笔3 天前
《构建之法》| 第六章敏捷流程:敏捷不是“快“,而是“响应变化“,AI时代怎么敏捷
人工智能·敏捷流程·构建之法
2501_915106323 天前
第一次开发 iPhone App,可能碰到的问题,解决办法
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
熊野君3 天前
第 4 章 技术产品经理核心能力模型
大数据·人工智能·产品经理
RisunJan3 天前
产品经理高频面试题与解答
产品经理
我命由我123453 天前
Photoshop - Photoshop 把两个 PSD 文件合并
学习·ui·职场和发展·产品运营·产品经理·学习方法·photoshop
项目管理实用笔记5 天前
迭代开发怎么做?一个完整的迭代管理实操指南
团队开发·scrum·敏捷开发·敏捷流程
怕浪猫5 天前
AI Agent 的安全围栏:DeepSeek Harness 沙箱隔离策略全解析
面试·agent·产品经理