什么是敏捷?
敏捷方法是试图通过小型的。自我管理的团队用短小的合作发布周期来鼓励迭代式软件开发方法。软件的质量贯穿敏捷软件开发每一个阶段。且非常重要.并提出很多关键的规则[例如: 结对编程 Test Driver Development测试驱动开发,重构和持续集成]来保证能在每一个迭代周期内及早是的发现并及时相应消灭开发过程中出现错误.
有哪些敏捷方法?
在敏捷方法提出理念下。衍生出了很多不同敏捷软件开发方法。类似这里马上会提到的Scrum、极限编程[EXtreme Programning XP],测试驱动开发[Test Driver Development],重构和持续集成。
Scrum大概是目前敏捷方法里面最出名,至少也是各位实行听说敏捷方法最熟悉一个。
什么是Scrum?
Scrum 是一个框架,在这个框架中人们可以解决复杂的自适应问题,同时也能高效并有创造性地交付尽可能高价值的产品
而我的理解是:其实从本质上来说Scrum本身并不是所谓方法论,而是一组实践和为其过程参与者制定角色框架。其实它和其他敏捷方法是殊途同归,Scrum鼓励小型的、自我管理的团队在短的开发周期完成一系列定义良好的开发任务。
Scrum虽然提供了一个很有价值的框架, 但实际上和XP TDD不同的是它并没有定义明确可行的方法来管理开发出来的软件的质量。其实这没有问题,Scrum的做法只是这个工作下放到Scrum团队每一个人,让开发团队自己决定选择实现什么样的质量控制实践。
在这一点上和XP TDD提出关注项目的框架,Scrum则淡化这一部分,而是更多对管理代码质量做出很多实践规定。Scrum是一种团队管理工作的方式,将工作分解为较小的工作单元,并在周期性固定的时间段内持续地交付工作单元。
Scrum框架结构
Scrum 的框架结构通常由 “3 of 3s” 组成,即 3 种角色,3 种事件,3 种工件
3 种角色(Roles)
- 开发团队(Development Team)
一个自组织的跨技能的小团队,承担实际开发工作,负责在周期性的迭代中不断的交付有价值的工作。开发团队通过集体共同交付价值,而不是通过个体
- 产品负责人(Product Owner)
产品负责人是产品最终用户的代表,负责确定产品的方向和愿景,定义产品发布的计划、内容和优先级。Product Owner 要不断的与开发团队沟通,保证团队在做从业务角度来说最正确的事情
- Scrum 教练(Scrum Master)
Scrum 定义了一个全新的全职工作角色 Scrum Master。Scrum Master 负责确保团队合理的运作 Scrum,帮助团队移除实施中的障碍
3 种事件(Events)
- 迭代计划会议(Sprint Planning Meeting)
在每个迭代之初,开发团队和 Product Owner 共同来计划在迭代周期内要完成的工作。Product Owner 负责向团队讲解要完成的工作的内容,开发团队负责对工作进行估计。
- 每日站立会议(Daily Standup Meeting)
每天,开发团队和产品负责人都要进行一个短暂的沟通。在会议期间,每个团队成员都要回答 3 个问题:“我昨天做了什么?”,“我今天准备做什么?”,“我遇到了什么问题?”。
- 迭代评审会议(Sprint Review Meeting)
在迭代周期结束时,开发团队向产品负责人及所有干系人进行演示,并接受反馈。
3 种工件(Artifacts)
- 产品待办列表(Product Backlog)
这是一个 Product Owner 想要交付的产品功能列表。 Product Owner 负责维护该列表,并且列表项按照交付优先级进行排序。
- 冲刺待办列表(Sprint Backlog)
这是一个迭代计划会议的输出,包含开发团队在迭代周期内所要完成的工作列表。
- 产品增量(Product Increment)
每个迭代周期都需要交付高质量的产品增量。产品增量必须满足 Scrum 团队对完成标准(Definition of Done)的定义。
Scrum周期
每一个Scrum项目周期都被看做一个Sprint,它用来标识完成一组功能开发所需要的时间。Sprint即从Scrum团队打算把精力放在一组功能上开始,而这组功能是由Scrum团队在源自于Product Backlog的计划阶段期间选择的。Produc Backlog其实是指一张关于软件开发所有可能功能点优先级列表。
其中在计划阶段的末尾,所有从Product Backlog里选出来的功能都会被加入Sprint Backlog里执行跟踪。Sprint Backlog表示团队要开发的具体功能的细节,或者就是需求表现出来的功能点,一旦Sprint Backlog定义完成整个Sprint周期就开始。
通常在一个Sprint周期会持续30天,在Sprint期间团队成员会聚在一起检查工作进展并帮助每一个队员保持工作效率,而在这个Sprint末尾。在Sprint Backlog里定义的功能点将全部完成并可用。
Scrum优缺点
Scrum相对传统瀑布模型,在构建真个开发活动前思考并记录下来真个流程,按照具体的计划实施,保持各项事务尽可能的有组织性。另外可以从整个Sprint周期来看到,Scrum模型的一个显著特点就是响应变化,它能够尽快地响应变化,使用传统的软件开发模型(瀑布模型、螺旋模型或迭代模型)。随着系统因素(内部和外部因素)的复杂度增加,项目成功的可能性就迅速降低
Scrum小结
Scrum的核心在于迭代,团队首先浏览开发需求,考虑可用技术,并对自身技术及能力做出评估,然后共同确定构建功能的方案,并每日调整方法,以应对新的复杂问题、困难和出乎意料的情况。团队找出并选择最佳方案去完成任务。此创造性过程便是Scrum生产力的核心,Scrum的所有实践就是围绕着一个迭代和增量的过程开展的