Scrum and Agile
-
敏捷开发
-
敏捷是一种迭代和渐进的软件开发方法。
-
在这种方法中,领导层发挥着重要作用。
-
软件开发非常适合大中型项目。
-
灵活性是敏捷的最重要优势,因为它可以快速响应变化。
-
敏捷涉及各个跨职能团队成员之间的面对面交流和协作。
-
敏捷开发需要经常向最终用户提供反馈。
-
在此开发过程中,每个步骤(如需求,分析,设计)都会在生命周期中持续受到监控。
-
项目负责人负责敏捷方法中的所有任务。
-
最终用户可以在开发过程中提供反馈。因此,最终产品将最大化接近用户需求,更有用。
-
软件的交付和更新定期进行。设计和执行应该保持简单。
-
敏捷开发的优先事项始终是通过提供有价值的软件的持续交付来满足客户。
-
工作软件是最基本的进步衡量标准。
-
最好进行面对面的沟通,以尽可能接近项目目标。
-
Scrum
-
Scrum是敏捷方法论的框架, 每两到三周向最终用户提供增量构建。
-
Scrum的团队是一个自组织,跨职能的团队。
-
Scrum用于需求快速变化的项目中。
-
与敏捷开发相比,它更加僵化。这样就没有频繁改变的可能性。
-
在每日站立会议中,通过分配给团队成员,Scrum主管和产品所有者的固定角色来实现团队合作。
-
在实施Scrum流程时无需进行更多更改。在此过程中,构建在每个sprint之后传递给客户端以获得反馈。
-
在每个sprint之后,提供功能演示。这样可以在下一次sprint之前获得定期反馈。没有团队领导,因此整个团队成员直接处理问题。
-
当团队完成当前的sprint活动时,计划下一个sprint。
-
设计和执行可以是创新和实验性的。
-
组织每日sprint会议以审查反馈以决定项目的未来进展。
-
工作软件不是一项基本措施。Scrum团队的目标是提供最大的商业价值。
-
Agile
-
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
-
怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;
-
而这种开发方式的主要驱动核心是人;
-
它采用的是迭代式开发;同样是敏捷开发,那么XP和Scrum有什么区别,小编分而述之:
-
瀑布开发模型
-
设计:功能设计、技术架构、界面交互
-
开发:后台数据整合,前端UX实现
-
测试:API测试、界面交互测试、端到端功能测试
-
敏捷开发模型
-
Sprint1
-
设计:功能设计、技术架构、界面交互
-
开发:后台数据整合,前端UX实现
-
测试:API测试、界面交互测试、端到端功能测试
-
Sprint2
-
Sprint3
-
...
-
SprintN
-
传统和敏捷开发比较
-
迭代周不同:
-
XP的一个Sprint的迭代长度大致为1~2周
-
Scrum的迭代长度一般为2~4周
-
在迭代中,是否允许修改需求
-
XP在一个迭代中,如果一个User Story(用户素材, 也就是一个需求)还没有实现, 则可以考虑用另外的需求将其替换,替换的原则是需求实现的时间量是相等的。
-
Scrum是不允许这样做的,一旦迭代开工会完毕, 任何需求都不允许添加进来,并有Scrum Master严格把关,不允许开发团队受到干扰
-
在迭代中,User Story是否严格按照优先级别来实现
-
XP是务必要遵守优先级别的。
-
但Scrum在这点做得很灵活,可以不按照优先级别来做,Scrum这样处理的理由是:如果优先问题的解决者,由于其它事情耽搁,不能认领任务,那么整个进度就耽误了。 另外一个原因是,如果按优先级排序的User Story #6和#10,虽然#6优先级高,但是如果#6的实现要依赖于#10,则不得不优先做#10.
-
软件的实施过程中,是否采用严格的工程方法,保证进度或者质量
-
Scrum没有对软件的整个实施过程开出工程实践的处方。要求开发者自觉保证;
-
但XP对整个流程方法定义非常严格,规定需要采用TDD, 自动测试, 结对编程,简单设计,重构等约束团队的行为。
-
因此,原作者认为,这点上,XP的做法值得认同的,但是却把敏捷带入了一个让人困惑的矛盾, 因为XP的理念,结合敏捷模式,表达给团队的信息是“你是一个完全自我管理的组织, 但你必须要实现TDD, 结对编程, …等等”
-
不难发现,这四个区别显见的是: Scrum非常突出Self-Orgnization, XP注重强有力的工程实践约束