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

相关推荐
皓74112 小时前
敏捷开发新助力:超越传统的10大知识库工具
运维·网络·人工智能·安全·零售·敏捷流程
杨哥带你写代码12 小时前
SpringBoot健身房管理系统:敏捷开发实践
spring boot·后端·敏捷流程
AI_小站1 天前
多模态大模型微调实践!PAI+LLaMA Factory搭建AI导游
人工智能·程序人生·语言模型·大模型·llm·产品经理·多模态大模型
python_知世2 天前
AI时代:成为产品经理的核心路径
人工智能·深度学习·程序人生·自然语言处理·产品经理·计算机技术·大模型应用
bagell2 天前
全面掌握Prompt技术:通用框架详解、优化策略与关键指标综述
人工智能·深度学习·自然语言处理·prompt·产品经理
黑客-雨2 天前
AI时代的产品经理修炼手册:《人工智能产品经理》
人工智能·学习·大模型·产品经理·大模型学习·大模型入门·大模型教程
郭子安不爱学编程2 天前
【产品经理】工业互联网企业上市之路
产品经理
大飞攻城狮3 天前
2024年中国生成式人工智能应用与实践展望白皮书(中英文版)|附147页PDF文件下载
大数据·人工智能·pdf·产品经理·大模型学习·大模型入门·大模型教程
努力的光头强3 天前
太炸裂了,Ollama跑本地模型已成为历史,现在都在使用这个工具,而且还能集成本地知识库
人工智能·ai·pdf·产品经理·llama
发菜君3 天前
2024年大厂AI大模型面试题精选与答案解析
人工智能·学习·大模型·产品经理·大模型学习·大模型入门·大模型教程