什么是敏捷开发?
敏捷软件开发(英语:Agile software development) ,又称敏捷开发,是一种开发过程中的指导思想,它强调的是:
- 以人为核心
- 以团队间的沟通协作为主线
- 以划分、提取每个功能块并通过短周期的不断迭代为指导方法
- 以及早交付有价值的产品给客户为出发点
- 从而达到这样的目的:快速产出,快速响应,快速调整,降低试错成本,提高开发效率。
一句话总结它的核心指导思想:去文档化,去流程化,高效沟通和合作
四组敏捷宣言:
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循计划
对于这四组宣言,我是这样理解的:
- 团队不是个体,而是one team,team成员间的互动以及每个成员对业务的理解、对真实业务场景的了解,会比长篇大论的流程说明更重要;
- 整个实施过程中,客户的参与、合作和体验,远远胜过僵硬的一纸合同;
- 通过MVP(Minimum Viable Product)最小可行性产品的提取和短周期方式的迭代,快速响应需求变化,及时调整开发计划,而不是一成不变的遵循计划。
几个基本概念--------
agile:迅速,敏捷。这是敏捷的理念也是精髓:迅速响应需求,快速反馈结果。
sprint:字面意思是短跑冲刺,一个开发阶段被认为是一次冲刺,一个个 sprint 首位相连,构成一个项目。
Scrum:指的是英式橄榄球中一股脑争球这一战术或行为。
与敏捷开发所对立的是瀑布开发----
瀑布开发强调的是完善的需求分析和完整的需求说明文档,通常在需求分析阶段和文档撰写阶段就花费大量时间,分析完成后再交付开发人员进行开发,测试,所有功能测试完成后再交付使用,整个过程是以串行方式进行,这样会带来的问题有:
- 实施周期长
- 最后开发出来的产品脱离了不断变化的用户需求
- 如果返工会带来更大的人力成本和时间成本
敏捷开发的方式有:scrum敏捷开发 和 XP敏捷开发,区别是------Scrum偏重于过程,XP则偏重于实践,这里我们主要讲的是scrum敏捷开发。
scrum敏捷开发:
可以这样去理解,一个橄榄球团队,大家一拥而上,团队是球员,球是产品目标,人员环环相扣,围绕着产品目标进行工作。通过团队成员的深入协作以完成射门达成目标。
在scrum敏捷开发思想指导下,我们将一个产品需求划分成多个Backlog,先抽取具备基本功能的Product Backlog进行开发并让用户使用,同时根据用户体验和项目迭代方式不断抽取下一批Backlog逐步将产品进行完善和优化。
整个过程达到这样的目的:用户参与、体验和合作+IT的持续改善和迭代同时进行。
而在项目实施过程中,用户能够看到感受到产品的不断进展,体验感越来越好,而不是漫长的等待后得到的产出也许还不是自己想要的。
对于Product Backlog的提取所遵循的原则是MVP,每一次的提取都是可使用的产品,从第一次提取“解决可以用”到后面提取变得“稍微好用”,再到后期“延申需求更好用,功能越来越完善”。
如何进行MVP提取,他的指导方法是什么?
1.确定首要目标,即核心主流程
2.区分优先级
3.把控每次提取和迭代的内容,工作量,每一次的迭代都是为了完成当前最有价值的事情
敏捷开发是全员都要参与的事情,scrum敏捷开发可分为以下几个板块:
1.Product Backlog:
backlog 即需求池。待办事项列表。
Backlog 里面记录以下内容:
1.待开发任务。
2.任务优先级。
敏捷需要维护一份详尽的需求列表。这份列表常常要求 scrum 持有人(一般是产品经理)对所有待开发事项有深入了解,并且能够把待开发事项分解成更为细致的任务(或者跟敏捷教练一起,后面我们会再次提到敏捷教练)
2.story board:
字面理解:(电影或电视的)剧情概括系列图片,通过把视频故事结构表达为故事板和时序结构图,实现对视频内容的概要性浏览。
而敏捷开发中的故事板又代表什么意思呢?
在开发领域里,故事版表示任务流转的可视化窗口,一般有“待开发”、“开发中”、“待测试”、“返工”、“待发布”几个区块,所有任务由任务操作者负责流转至于下一个步骤,这样任何一个项目成员都能看到任务的完成情况。
简言之,故事板就是在开发中对每个任务的状态进行更新和展示,帮助团队成员查看和管理任务。
burn down chart:燃尽图
一个 sprint 内,人和时间是一个比较固定的值。在这个时间框架内充分安排开发任务,每天进行时间结算,绘制时间燃尽图,项目成员通过燃尽图对时间和进度进行把控。
若项目燃尽所用时间与预期时间契合,则需求时间预估和实际安排合理,如果不契合则需要在下一个 sprint 进行调整。
敏捷开发的一个总结:Think Big, Start Small, Go Fast
设计产品时,发散思维
开发产品时,从MVP开始
快速迭代,快速响应
开发过程是要做减法而不是加法
每一个需求需要先反问以下几个问题:
给谁用?
解决什么样的问题?
给用户带来什么价值?
具体要怎么去开展scrum敏捷开发?
scrum敏捷开发常用的几款工具:
1.Leangoo
Leangoo(中文名:领歌)是一款基于看板的项目协作工具!是由国内最权威的scrum中文网精心打造,融入了先进的敏捷管理思想。
并由专业的敏捷开发团队精心打造而成,完美支持Scrum敏捷开发和看板方法。
可以使用Leangoo可视化地进行项目需求、任务、问题和文档的管理和协作,随时随地跟踪团队工作进展
Leangoo的核心是看板,通过看板共享和实时同步团队工作以实现高效协同, 团队工作体现为卡片,内容可以是需求、任务、问题等。Leangoo看板上的主要元素包括列表和泳道,列表管理工作的不同阶段或状态,泳道实现任务的分组对应,从两个纬度让团队的工作高度可视化、一目了然。
2.Jira
JIRA是项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
3.Axosoft OnTime Scrum
AxosoftOnTime Scrum能够帮助开发团队管理待办事项、产品发布和模拟项目冲刺。这款基于HTML5特性的工具提供创建图表和管理仪表板的功能,随着工作时间的走动,它可以追踪代码特性并修复bug。除此之外,HTML5也是AxosoftOnTime Scrum平台的一部分,兼具一些其它有用的协作工具,例如Wiki和bug追踪器。
注:并不是用了敏捷开发的工具就是敏捷,而是敏捷开发的思想,没有工具情况下,有团队,有笔,有纸,有小黑板同样可以做到敏捷开发,最重要的是全员参与以及对敏捷开发的理解。