一、敏捷开发
软件市场发展越来越迅速和成熟,传统瀑布式开发模式存在一定的限制,敏捷从而有了更广阔的的平台与机遇。Scrum作为在敏捷中使用最常用的一种方案,受到众多的关注。
1.1、为什么使用敏捷方法
敏捷管理是相对于传统的瀑布模型提出的,传统的瀑布开发模式是这样的:
瀑布开发模式的项目周期往往比较长,一般为3-6个月,甚至更长时间,当项目开发完成后,最后交付成果往往不是产品经理或是客户真正想要的,最后只能重新从项目的需求开始,经过一系列的建设、测试、部署等过程,那样的话,项目周期就会更长,然而又需要尽快投入市场,最后只能是稍微改动一下,差不多接近项目需求就行。
使用瀑布开发模式很容易出现这样的结果,开发周期很长,不可控的因素和风险很大,最终会偏离最初想法。
而敏捷开发流程是这样的:
每一个迭代的开发周期很短,一般为1-4周,它将瀑布开发过程切分为多个短的迭代式的增量开发过程。每一个迭代结束,都会产生最终可用的产品,如果需求有变化,可以在下一个迭代周期进行开发,基本不会出现最终交付产品是用户无法接受的,即使要浪费时间的话,最多就是一个迭代周期的时间。
定义:
理解:
首先,敏捷并不是一门具体的技术,而是一种理念或者说是一种思想。它可以指导我们更加高效的开发。
其次,敏捷开发都具有以下共同的特征:
1. 迭代式开发
2. 增量交付
3. 开发团队和用户反馈推动产品开发
4. 持续集成
5. 开发团队自我管理
最后,相比于“传统”的瀑布开发模式,敏捷开发是一种“现代”的开发模式。
具体方式:
上面说了敏捷是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而具体的开发方式有哪些呢?
Scrum,极限编程(XP),精益软件开发(Lean Software Development),动态系统开发方法(DSDM),特征驱动开发(Feature Driver Development),水晶开发(Crystal Clear)等等。
除了Scrum和XP,对于上面的其他开发方式,我也只是简单了解,大家可以多查查相关的资料。
我们可以简单的对比一下Scrum和XP:
1. 在开发的过程中,你可以采用Scrum方式也可以采用XP方式;
2. Scrum和XP的区别是,Scrum偏重于过程,XP则偏重于实践,但是实际中,两者是结合一起应用的。
敏捷宣言:
我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工作,我们形成了如下价值观:
- 个体与交互 重于 过程和工具
- 可用的软件 重于 完备的文档
- 客户协作 重于 合同谈判
- 响应变化 重于 遵循计划
在每对比对中,后者并非全无价值,但我们更看重前者
敏捷开发的12准则:
在敏捷开发中,我们遵循以下准则:
1. 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
2. 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
3. 要不断交付可用的软件,周期从几周到几个月不等,且越短越好
4. 项目过程中,业务人员与开发人员必须在一起工作。
5. 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
6. 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
7. 可用的软件是衡量进度的主要指标。
8. 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
9. 对技术的精益求精以及对设计的不断完善将提升敏捷性。
10. 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
11. 最佳的架构、需求和设计出自于自组织的团队。
12. 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。
二、Scrum
2.1 Scrum框架的概念
Scrum是一个敏捷开发框架,是一个增量的、迭代的开发过程.。在这个框架中,整个开发周期包括若干个小的跌代周期,每个小的的跌代周期称为一个Sprint,每个Sprint的建议长度2到4周。
在Scrum中,使用Product Backlog来管理产品或项目的需求,product backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为User Story。
Scrum的开发团队总是先开发的是对客户具有较高价值的需求。在每个Sprint中,Scrum开发团队从product Backlog中挑选最有价值的需求进行开发。Sprint中挑选的需求经过Sprint Plan Meeting上的分析、讨论和估算得到一个Sprint的task列表,我们称它为Sprint backlog 。 在每个迭代结束时,Scrum团队将交付潜在可交付的产品增量。下图是Scrum的工作流程图。
2.2 Scrum框架的优势
1 专注于如何在最短的时间内实现最有价值的部分
2 每隔一两周或者一个月,我们就可以看到实实在在的可以上线的产品
3 团队按照商业价值的高低先完成高优先级的产品功能,并自主管理,凝结了团队智慧创造出最好的方法因而提高效率
4 能够在开发进程中不断检查,并作出相应调整,便于快速发现问题,促使团队和组织
2.3 Scrum框架概览
2.4 Scrum中的角色(主要PO/SM/TEAM)
Product Owner(PO):产品负责人、产品经理、运营人员
职责:---确保Team做正确的事
项目经理更关注deadline(项目截至日期),并以公司为中心;而product owner则聚焦于产品,以最终用户为中心。