一、初识敏捷
什么是敏捷(Agile)?敏捷是思维方式。
传统开发模型
央企,国企50%-60%需求分析。整体是由文档控制的过程管理。
传统软件开发面临的问题:
- 交付周期长:3-6个月甚至更长
- 沟通效果差:文档化沟通不及时
- 按时发布低:技术债增多无法发版
- 团队士气弱:死亡行军不关注结果
- 进度延期久:计划和估算无根据
什么是敏捷?
敏捷是创造并响应变化,从而在动荡的商业环境中创造利润的能力。敏捷是平衡灵活性和稳定性的能力。(Jim Highsmith)
敏捷是一种思维方式:由价值观定义,有原则指导,通过许多不同的实践体现。(AHmed Sidky)
迭代开发
将一个大任务,分解成多次连续的开发。本质就是逐步改进。开发者先快速发布一个有效但不完美的最简产品,然后不断迭代。
每次迭代都包含分析、设计、编码、测试、交付。不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较为完善的产品。
增量开发
指的是软件的每个版本,都会新增一个用户可以感知的完整功能。
也就是说,按照新增加功能来划分迭代。
敏捷开发
敏捷开发特性
精益思维、最小MVP:一个敏捷软件的开发往往是在敏捷初期,是不会预见到几个迭代之后的软件需求的。
它往往是以最小可行性产品,MVP,去交付给客户。
固定时间盒,价值导向:高价值优先,固定时间,增量开发。
拥抱变化,不怕变更:持续的交付,适应变化。
敏捷开发模型的优势:
调查数据:敏捷应用的行业分布
调查数据:敏捷给组织带来的好处
敏捷与传统相比
二、敏捷概述
敏捷起源
21世纪,各种敏捷方法如雨后春笋般蓬勃发展。
自2001年起,"敏捷"一词在软件领域被赋予了新的含义。
2001年2月,由17位软件开发领域的软件顾问和思想的领导人组成的一组自称为无政府组织的团体,聚焦在Snowbird Utah,他们成立了敏捷联盟,并开始定义敏捷的软件开发过程。
同年,《敏捷宣言》的正式发布,代表了21世纪互联网时代软件开发模式的一种先进理念和价值观的正式建立。
敏捷宣言
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人,由此我们建立了如下价值观。
敏捷思维
- 价值驱动
- 适应变化
- 自组织团队
价值驱动:
抓住最核心产品价值、不追求大而全
团队通过提供最小可行产品,通过不断迭代,学习和汲取有价值的客户反馈,并在这个最小化可行产品上持续快速迭代,直到产品达到一个相对稳定的阶段,直至达到最终想要的样子。
有所不为,懂得取舍
转变思维,三角倒置
尽早交付,即使反馈