- 1 网友看敏捷
- 2 Agile,何为敏捷?
- 3 Agile,差别在哪(与传统开发交付方法相比较)
- 4 Agile,优势在哪?
- 5 敏捷的价值观(Values)
- 6 敏捷的原则(Principes)
- 7 敏捷开发管理实践
- 8 Scrum
随软件的不断复杂,相应的软件开发思想也在不断的发展。敏捷开发就是其中所提出来的一种,相应的实践也有很多,目前的发展趋势也非常火爆,今天对于这个方向,梳理一下一些基础的内容,用于初步了解敏捷的思想,以及一些基本的概念。
1 网友看敏捷
敏捷,往小了说是改进了开发方法,往大了说是革了瀑布流式的命——把产品开发引向了快速迭代、小步快跑的路线上。
2 Agile,何为敏捷?
敏捷开发是一个灵活的开发方法,用于在一个动态的环境中向干系人快速交付价值。其主要特点是关注持续的交付价值,通过迭代和快速用户反馈管理不确定性和拥抱变更;它承认个人才是价值的最终源泉,强调通过有效的个人激励,提升团队的工作绩效。
3 Agile,差别在哪(与传统开发交付方法相比较)
敏捷 VS 传统 <===> 价值驱动 VS 计划驱动
4 Agile,优势在哪?
- 拥抱变化:通过短周期迭代,尽可能早的交付可用的迭代版本来拥抱和适应变化
- 进度可视:可视化的评估进度模式在传统模式(瀑布)里面难以做到
- 注重客户
- 团队沟通
- 自管理
- …
5 敏捷的价值观(Values)
- 个体与互动 高于 流程与工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循变化
尽管右侧项有其价值,但敏捷更注重左侧项的价值。
6 敏捷的原则(Principes)
- 我们最重要的目标,是通过持续不断地及早交付有价值的软件,使客户满意。
- 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
- 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 业务人员和开发人员相互合作,项目中的每一天都不例外。
- 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 可工作的软件是进度的首要度量标准。
- 敏捷过程提倡可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 以简洁为本,它是极力减少不必要工作量的艺术。
- 最好的架构、需求和设计出自自组织团队。
- 团队定期地反思如何能提高成效,并依此调整自身的举止表现。
7 敏捷开发管理实践
7.1 Scrum
Scrum 包括一系列实践和预定义角色,是一种灵活的软件管理过程。
7.2 Lean
Lean(精益开发) 从最终用户的视角上观察生产流程,视任何未产生增值的活动为浪费,并通过持续地消除浪费,实现快速交付、高质量与低成本。
7.3 XP
XP(极限编程) 由 Kent Beck 提出的一套针对业务需求和软件开发实践的规则,它的作用在于将二者力量集中在共同的目标上,高效并稳妥地推进开发。
7.4 其它
- OpenUP
- DSDM
- FDD
- …
8 Scrum
Scrum指的是英式橄榄球中一股脑争球这一战术或行为。
Scrum作为软件开发过程框架,是这样一种方式:大家一拥而上,团队是球员,球是产品目标,人员环环相扣,围绕着产品目标进行工作。
8.1 Scrum 3-3-5-5 特性
Roles 角色(3)
- Product Owner 产品所有者
- Scrum Master 敏捷教练
- Team 团队
Artifacts 工件(3)
- Product Backlog 产品Backlog
- Sprint Backlog 迭代Backlog
- Burndown Charts 燃尽图
Features 特性(5)
- Courage 勇气
- Openness 开放
- Commitment 承诺
- Focus 专注
- Respect 尊重
Ceremonies 仪式(5)
- Sprint 迭代
- Sprint Planning 迭代计划会议
- Daily Meeting 每日立会
- Sprint Review 审核会议
- Sprint Retrospective 回顾会议
8.2 Scrum敏捷团队中的角色
Product Owner 产品所有者
代表客户的意愿,主要负责编写用户故事,排出优先级,并放入 Product Backlog,从而使项目价值最大化。
Scrum Master 敏捷教练
保证 Scrum 成功的牧羊犬,负责 Scrum 过程正确实施和利益最大化的人,确保它既符合企业文化,又能交付预期利益。
Team 团队
对每一次迭代和整个项目共同负责,在每个冲刺中通过实行自管理、自组织,和跨职能的开发协作,实现冲刺目标和最终交付产品。
8.3 Scrum敏捷团队工作流程
在 Scrum 项目管理过程中,一般产品负责人获取项目投资,并对整个产品的成功负责。他会协调各种利益干系人,确定产品订单中(Product Backlog)初始的需求清单及其优先级,完成项目的商业价值分析和项目整体规划,并任命合适的 Scrum 教练开展项目工作。
Scrum 主要输入输出:
- 产品订单(Product Backlog)
- 冲刺订单(Sprint Backlog)
- 燃尽图(Burndown Chart)
- 新的功能增量
8.4 主要的敏捷开发工程实践
- 迭代式开发:每次按照相同的开发方式短期的开发软件的部分
- 持续集成:英文是 Continuous Integration,在敏捷语境下缩写 CI
- 多级项目规划:是指以迭代开发为基础,形成多层次的、逐步细化的项目或产品计划
- 完整团队:如 Scrum 团队是基于功能开发而组成的跨职能、自我管理团队
- ATDD(体验测试驱动开发):实现某个具体功能之前,首先编写功能测试或验收测试用例,从系统功能角度驱动开发过程
- 结对编程:在敏捷软件开发的各种实践中,结对编辑(Pair Programming)是特别有争议的
- 确定冲刺计划:团队和PO共同决定在接下来的冲刺周期内的目标以及哪些功能和任务需要完成
- 故事点计算:故事点估算用于评估为了交付一个用户故事所包含的所有努力(team effort),用户故事的复杂度(complexity),风险,以及所有其他需要考虑的元素
- 需求订单(产品订单):一张记录用户需求的列表,包括产品所有需要的特征