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

相关推荐
梓贤Vigo19 小时前
【Axure视频教程】自制上传按钮
交互·产品经理·axure·原型·教程
我码玄黄1 天前
Figma入门-设计过程基本操作
产品经理·figma·交互设计·原型图
Jing_jing_X1 天前
心情追忆-首页“毒“鸡汤AI自动化
java·前端·后端·ai·产品经理·流量运营
jjyangyou2 天前
物联网核心安全系列——智能汽车安全防护的重要性
算法·嵌入式·产品经理·硬件·产品设计
陪学2 天前
AI时代,百度的三大主义
大数据·人工智能·百度·产品运营·互联网·生活·产品经理
PM大明同学3 天前
Axure PR 9 穿梭框 设计&交互
ui·交互·产品经理·axure·photoshop
思码逸研发效能3 天前
如何通过对敏捷实践的调整,帮助远程团队提升研发效能?
研发效能·敏捷开发·devops·敏捷流程·研发效能度量
Yan-英杰3 天前
解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
大数据·网络·人工智能·python·网络协议·http·产品经理
孟健4 天前
移动互联网:一个时代的崛起与变革(上)
产品经理·创业
月月月1236 天前
零售项目管理的核心问题:如何让协作更高效?
产品运营·产品经理