敏捷开发 之我见
概念:
敏捷软件:是1990年被大家广泛讨论的一种软件开发,解决的主要是应对软件开发当中的变化。和“非敏捷”比起来其中主要区别是提倡业务专家与开发人员协同工作,尽可能的面对面进行沟通,频繁的交付新的版本,紧凑的自组织型团队,良好的应对需求变化方法。
历史:
敏捷一词来源于2001年初美国犹他州雪鸟滑雪圣地的一次敏捷方法发起者和实践者(他们发起组成了敏捷联盟)的聚会。
价值观(宣言):
个体与交互 重于 流程工具
可用的软件 重于 跟踪文档
客户协作 重于 合同谈判
响应变化 重于 循规蹈矩
敏捷原则:
1. 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
2. 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
3. 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
4. 要不断交付可用的软件,周期从几周到几个月不等,且越短越好。
5. 项目过程中,业务人员与开发人员必须在一起工作。
6. 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
7. 可用的软件是衡量进度的主要指标。
8. 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
9. 对技术的精益求精以及对设计的不断完善将提升敏捷性。
10. 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
11. 最佳的架构、需求和设计出自于自组织的团队。
12. 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。
敏捷实践:
Xp极限编程
Scrum
Scrum:一种迭代式增量软件开发过程,英文的意思是“橄榄球 争球”。
Scrum历史:1986年日本人竹内弘高和 野中郁次郎阐述了一种新的整体性的方法 ,该方法能够提高商业新产品开发的速度和灵活性。
1990年 肯·施瓦伯在其公司使用了一种方法Advanced Development Methods(先进开发方法),这种方法后来发展为Scrum。
2001年施瓦伯与 麦克·比窦(Mike Beedle)合著了《敏捷软件开发-使用Scrum过程》一书,介绍了Scrum方法。
Scrum特性:Scrum定义了三个角色,Master、技术团队、产品负责人。
Master:团队的教练,负责组内外沟通,排除障碍。
开发团队:所有参与的开发人员。
产品负责人:需求人员,确定产品的愿景,定义产品当中的优先级别及交付时间。
一次冲刺当中确定要开发的任务量,其中任务量是由产品负责人员根据优先级别确定出来的。整个团队需要根据具体的开发任务开会讨论时间安排及任务量,开发团队承诺完成多少订单,当确定之后任务既冻结。
Scrum具体实施:
白板、任务(产品订单、用户故事)、燃尽图、站立会议。
敏捷开发与瀑布模型比较:
瀑布模型:Widget Factory理论基础是以XX理论激发人,认为人是懒惰的,工作越少越好,甚至是逃避工作。基于这个理论自然整个项目就被一个人所替代,把项目经理放到那个位置,让其负责整体项目,分配任务,跟踪进度等。
敏捷开发:Film Crew 理论基础是以人为中心,认为人的潜力是无穷的。并且认为一个自适应团队是更强大的。项目经理在其中是提供环境,排除障碍的角色。
自适应团队:
通过自我学习,自我适应成长的团队。制定一个目标,团队当中的所有成员往目标前进。
通常这样可以激发人的动力及潜能,首先是信任,其次是自我学习解决问题能力的提升。
与传统方式的团队区别是:项目经理通常主要是确定需求,并进行工作分配,开发人员往往只是服从命令。