背景程序员
因为软件开发过程当中需求不断变更,导致开发周期不断延迟,经费预算一再上涨,在规定的时间内开发出令用户满意的软件愈来愈难。而传统软件开发方法则认为只要软件工做人员足够努力,就能够在早期肯定全部的需求,从而减小后期需求变更引起的成本增长,而且把变更排斥在开发进程以外。事实上,外部环境变化每每引发软件开发过程当中的重大变更,这在飞速发展的当今社会是难以免的,从而敏捷型软件开发方法应运而生。编程
2001年初,一批业界专家汇集在一块儿归纳出了一些可让软件开发团队具备快速工做、响应变化能力的价值观和原则,他们称本身为敏捷(Agile)联盟。在随后的几个月中,他们建立出了一份价值观声明。也就是敏捷联盟宣言(The Manifesto of the Agile Alliance)。工具
敏捷软件开发宣言内容:测试
个体和交互 赛过 过程和工具 编码
能够工做的软件 赛过 面面具到的文档 spa
可户合做 赛过 合同谈判 设计
响应变化 赛过 遵循计划 继承
虽然右项也有价值,可是咱们认为左项具备更大的价值。游戏
敏捷实践原则: 进程
敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。敏捷方式也称轻量级开发方法。能不断根据环境的变化,修改本身的设计,指导开发的方向是敏捷开发的目标。
敏捷开发避免了传统瀑布方式的弊端,主要是吸取了各类新型开发模式的“动态”特性,关注点从文档到开发者,管理方式也从工厂的流水线到团队的自我放松式的组织。总结敏捷开发与瀑布模式的不一样,主要是下面几个“敏捷”的关注点:一是迭代。软件的功能是客户的需求,界面的操做是客户的“感受”,对迭代的强调是缩短了软件版本的周期; 二是
客户的参与。以人为本,客户是软件的使用者,是业务理解的专家,没有客户的参与,开发者很难理解客户的真实需求 ;三是版本小。能快速的展现给客户,对于复杂的客户要求,有机的进行分割和兼顾总体的统一是很不容易的,要二者相结合。
极限编程(eXtreme Programming,简称XP)是敏捷方法中最著名的一个。它由一系列简单却互相依赖的实践组成。这些实践结合在一块儿造成了一个敏捷开发过程。以下:
迭代:一次又一次循环逼近的过程
完整团队:XP项目的全部参与者(开发人员、业务分析师、测试人员等等)一块儿工做在一个开放的场所中,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显著的图表以及其余一些显示他们进度的东西。
计划游戏:计划是持续的、按部就班的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。
客户测试:做为选择每一个所指望的特性的一部分,客户定义出自动验收测试来代表该特性能够工做。
简单设计:团队保持设计刚好和当前的系统功能相匹配。它经过了全部的测试,不包含任何重复,表达出了编写者想表达的全部东西,而且包含尽量少的代码。
结对编程:全部的产品软件都是由两个程序员、并排坐在一块儿在同一台机器上构建的。
测试驱使开发:程序员以很是短的循环周期工做,他们先增长一个失败的测试,而后使之经过。测试用例按部就班的对代码的编写进行指导。
改进设计:随时改进糟糕的代码。保持代码尽量的干净、具备表达力。
持续集成:团队老是使系统完整的被集成。
集体代码全部权:任何结对的程序员均可以在任什么时候候改进任何代码
编码标准:系统中全部的代码看起来就好像是被单独一个——很是值得信任的——人编写的。
隐喻:团队提出一个程序工做原理的公共景象。
可持续的速度:团队只有持久才有获胜的但愿。他们以可以长期维持的速度努力工做。他们保存精力,他们把项目看作是马拉松长袍,而不是全速短跑。
敏捷就是“快”,快才能够适应目前社会的快节奏;要快就要发挥我的的个性思惟多一些,个性思惟的增多,虽然经过结队编程、代码共有、团队替补等方式减小我的对软件的影响力,但也会形成软件开发继承性的降低,所以敏捷开发是一个新的思路,但不是软件开发的终极选择。对于长时间、人数众多的大型软件应用的开发,文档的管理与衔接做用仍是不可替代的。如何把敏捷的开发思路与传统的“流水线工厂式”管理有机地结合,是软件开发组织者面临的新课题。