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. 软件开发团队要以提升效率为主。

相关推荐
项目管理者3 天前
项目计划制定新手实战指南
甘特图·敏捷流程
清辞8533 天前
产品经理需求推进流程
大数据·深度学习·学习·产品经理
2501_933670794 天前
大数据管理与应用专业概述
产品经理
迷恋6664 天前
了解用户是一门学问
经验分享·产品经理
JieDavid4 天前
专利流程岗上岸实录|奇智创达知识产权系统实操经验分享
大数据·运维·人工智能·经验分享·产品运营·产品经理
项目管理者4 天前
如何协调多项目任务,解决多项目之间冲突
产品经理·敏捷流程
游戏开发爱好者84 天前
iPhone真机调试有哪些方法?一次定位推送权限问题时整理出来的几种方案
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
BadTudou5 天前
滑滑相册清理 -- 超解压的手机相册清理工具
图像处理·产品经理·相册
迷恋6666 天前
论做好需求分析的重要性
经验分享·产品经理
ZKNOW甄知科技6 天前
燕千云AI-ITR系列:三线分层机制的标准化解决方案
大数据·运维·人工智能·低代码·自然语言处理·自动化·敏捷流程