天天在用着敏捷的思想,但是今天面试的时候让讲敏捷,又不知从何说起,今天记录下 ,部分内容也有参考网上优秀的易理解的说法。
什么是敏捷开发?
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
我理解它仅仅是一种开发方法,更是为了应对激烈竞争和快速需求变化的一种价值观和商业模式。
敏捷提倡以人为核心,敏捷注重的是人与人之前的,面对面的交流。
敏捷的核心假设就是:需求是变化的。
它以一种局部演进,逐步交付,小批串行的方式更快速的进行交付和保证产品质量。
开发测试过程图
借用几张图来说明
![](https://i-blog.csdnimg.cn/blog_migrate/7650bd965508ffc00bbceb4783b27e37.png)
测试活动
![](https://i-blog.csdnimg.cn/blog_migrate/fe1768db7da866a8076e11d58aa2c818.jpeg)
测试系统图
![](https://i-blog.csdnimg.cn/blog_migrate/0dd8b00f2f52dc9426aac24de30aa928.png)
敏捷的核心假设是:
需求是持续变化的
敏捷12条准则/原则
1.Customer satisfaction by rapid delivery of useful software
对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要
2. Welcome changing requirements, even late in development
我们欢迎需求的改变,甚至在开发的最后阶段
3.Working software is delivered frequently (weeks rather than months)
经常交付可以工作的软件(从几星期到几个月)
4.Working software is the principal measure of progress
可以工作的软件是进度的主要度量标准
5.Sustainable development, able to maintain a constant pace
敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏
6.Close, daily co-operation between business people and developers
业务人员和开发者应该在整个项目过程中始终朝夕在一起工作
7.Face-to-face conversati最好的架构、需求和设计都源自自我组织的团队
12.Regular adaptation to changing circumstances
每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为
on is the best form of communication (co-location)
在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈
8.Projects are built around motivated individuals, who should be trusted
围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务
9.Continuous attention to technical excellence and good design
对卓越技术与良好设计的不断追求将有助于提高敏捷性
10.Simplicity
简单。——尽可能减少工作量的艺术至关重要
11.Self-organizing teams
敏捷的价值观:
个体与交互 重于 过程与工具
可用的软件 重于 完备的文档
客户协作 重于 合同谈判
响应变化 重于 遵循计划
敏捷的一些特点和问题
Ø 前期投入变多了
Ø 对人的要求变高了
Ø 常常在项目未完时就显现出的商业价值
Ø 成功项目管理类,互联网类偏多
Ø 项目成功但可维护性不佳
Ø 给人感觉流派比较多
Ø 有一些极端敏捷的思路和主张,无文档等
敏捷最佳实践:
XP、SCRUM、水晶体系、动态系统开发方法DSDM、适配性软件开发、FDD等
SCRUM
SCRUM是遵循敏捷方法的一个软件开发框架。在SCRUM框架中,融入敏捷开发的精神和思想。
Scrum方法是一种偏重管理的优秀实践组合:
它通过组建客户参与的团队,确定客户与开发团队的一致目标;
分里程碑,按商业价值排序的需求列表;
Scrum框架核心内容:3-3-3
“3”个角色(Role)
产品主管(Procuct Owner):负责项目的商业价值
Scrum师傅(Scrum Master):他负责团队的运转和生产
自组织的团队:目标一致的团队
“3”个会议
迭代计划会议
每日晨会
迭代回顾会议
“3”个工作组件
待开发任务列表(product backlog)用来排列任务的优先级和跟踪任务
迭代任务列表(the sprint backlog)
进度图(burndown chart)
客观的认识敏捷
敏捷是一个新生的、飞速成长的方法论
① 敏捷基于文化和价值观的特点让其实框架宽泛,兼容性好,同时灵活性大导致施难度加大
大家对敏捷的理解各不相同,优秀实践百花齐放;敏捷的优秀实践个异性较强,直接学习风险大
② 敏捷提倡的紧密互补的工作方式,对人的要求高
③ 敏捷强调的价值观理解不到位,容易让人忽略某些东西,其结果会给人带来误解
④ 没有万能、完美的开发方法,适合的才是最重要的