敏捷不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。符合敏捷价值观和原则的开发方法包括:极限编程(XP),Scrum,精益软件开发(Lean Software Development),动态系统开发方法(DSDM),特征驱动开发(Feature Driver Development),水晶开发(Crystal Clear)等等。在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。在全球一百强的企业中,敏捷开发也已大行其道,受到许多资深项目管理者和开发人员的推崇。到2008年,欧美软件企业中,有近半企业已采用敏捷方法进行开发。中国的外企,外包公司和许多知名企业也都开始采用了敏捷方法。例如,腾讯内部几乎全部的开发团队都在实施敏捷。敏捷方法给这些企业也已带来了巨大的收益。编程
全部符合敏捷价值观和原则的开发方法都具备如下共同特征:架构
1. 迭代式开发。即整个开发过程被分为几个迭代周期,每一个迭代周期是一个定长或不定长的时间块每一个迭代周期持续的时间通常较短,一般为一到六周。框架
2. 增量交付。产品是在每一个迭代周期结束时被逐步交付使用,而不是在整个开发过程结束的时候一次性交付使用。每次交付的都是能够被部署到用户应用环境中被用户使用的、能给用户带来即时效益和价值的产品。工具
3. 开发团队和用户反馈推进产品开发。敏捷开发方法主张用户可以全程参与到整个开发过程当中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。同时,团队对于用户的需求也能及时提供反馈意见。测试
4. 持续集成。新的功能或需求变化老是尽量频繁地被整合到产品中。一些项目是在每一个迭代周期结束的时候集成, 有些项目则天天都在这么作。优化
5. 开发团队自我管理。拥有一个积极的、自我管理的、具有自由交流风格的开发团队,是每一个敏捷项目必不可少的条件。人是敏捷开发的核心。敏捷开发老是以人为中心创建开发的过程和机制,而非把过程和机制强加给人。网站
2001年2月11日到13日,17位软件开发领域的领军人物汇集在美国犹他州的滑雪胜地雪鸟(Snowbird)雪场。通过两天的讨论,“敏捷”(Agile)这个词为全体参会者所接受,用以归纳一套全新的软件开发价值观。这套价值观核心是如下几点:个体和交互 重于 过程和工具、可用的软件 重于 完备的文档、客户协做 重于 合同谈判、响应变化 重于 遵循计划。在每对比对中,后者并不是全无价值,但咱们更看重前者。lua
在敏捷开发中,咱们遵循如下的十二条准则:spa
用户故事是从用户的角度来描述用户渴望获得的功能。一个好的用户故事包括三个要素:设计
1. 角色:谁要使用这个功能。
2. 活动:须要完成什么样的功能。
3. 商业价值:为何须要这个功能,这个功能带来什么样的价值。
用户故事一般按照以下的格式来表达:
英文: As a , I want to , so that .
中文:做为一个<角色>, 我想要<活动>, 以便于<商业价值>。
举例:做为一个“网站管理员”,我想要“统计天天有多少人访问了个人网站”,以便于“个人赞助商了解个人网站会给他们带来什么收益。”须要注意的是用户故事不可以使用技术语言来描述,要使用用户能够理解的业务语言来描述。(说白了就是不要有技术人员的通病,专业术语一大堆,用大白话或者举一个生活中的例子描述最好。)
关于用户故事,Ron Jeffries用3个C来阐释它:
用户故事的六个特性--INVEST
INVEST == Independent, Negotiable, Valuable, Estimable, Small, Testable。一个好的用户故事应该遵循INVEST原则。
参考资料: