敏捷开发

敏捷软件开发又称敏捷开发,是一种从1990年×××始逐渐引发普遍关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协做、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、可以很好地适应需求变化的代码编写和团队组织方法,也更注重作为软件开发中人的做用。程序员

价值观
借着亲自并协助他人进行软体开发,咱们正致力于发掘更优良的软体开发方法透过这样的努力,咱们已创建如下价值观:
人和交互 重于 过程和工具。
能够工做的软件 重于求全责备的文档。
客户协做重于合同谈判。
随时应对变化重于循规蹈矩。
其中位于右边的内容虽然也有其价值,可是左边的内容最为重要。
数据库

对咱们而言,最重要的是经过尽早和不断交付有价值的软件知足客户须要。
咱们欢迎需求的变化,即便在开发后期。敏捷过程可以驾驭变化,保持客户的竞争优点。
常常交付能够工做的软件,从几星期到几个月,时间尺度越短越好。
业务人员和开发者应该在整个项目过程当中始终朝夕在一块儿工做。
围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,知足他们的须要,并相信他们可以完成任务。
在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈
能够工做的软件是进度的主要度量标准。
敏捷过程提倡可持续开发。出资人、开发人员和用户应该老是维持不变的节奏。
对卓越技术与良好设计的不断追求将有助于提升敏捷性。
简单——尽量减小工做量的艺术相当重要。
最好的架构、需求和设计都源自自我组织的团队。
每隔必定时间,团队都要总结如何更有效率,而后相应地调整本身的行为。编程

太短的迭代可能会没办法增长足够的功能,致使在到达最后的迭代前专案产生明显的延迟。敏捷强调即时通信(最好是面对面),但在大型多团队分布式系统开发的状况下,如何达成这点反而是个问题。敏捷方法过程当中产生不多的已撰写文件,于是须要大量的专案后文件安全

对比其余的方法敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性
适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述将来将会如何变化.架构

相比迭代式开发二者都强调在较短的开发周期提交软件,敏捷方法的周期可能更短,而且更增强调队伍中的高度协做。分布式

对比瀑布式开发二者没有不少的共同点,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果做为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。ide

瀑布式的主要的问题是它的严格分级致使的自由度下降,项目早期即做出承诺致使对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明而且在项目进行过程当中可能变化的状况下基本是不可行的。工具

相对来说,敏捷方法则在几周或者几个月的时间内完成相对较小的功能,强调的是能将尽早将尽可能小的可用的功能交付使用,并在整个项目周期中持续改善和加强。测试

有人可能在这样小规模的范围内的每次迭代中使用瀑布式方法,另外的人可能将选择各类工做并行进行,例如极限编程。编码

敏捷方法的适用性
敏捷方法和其余的方法也有不少共同之处,好比迭×××发,关注互动沟通,减小中介过程的无谓资源消耗。一般能够在如下方面衡量敏捷方法的适用性:从产品角度看,敏捷方法适用于需求萌动而且快速改变的状况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不彻底适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。跟这些相关联的关键成功因素有:

组织文化必须支持谈判
人员彼此信任
人少可是精干
开发人员所做决定获得承认
环境设施知足成员间快速沟通之须要
最重要的因素恐怕是项目的规模。规模增加,面对面的沟通就越发困难,所以敏捷方法更适用于较小的队伍,20、40人或者更少。大规模的敏捷软件开发尚处于积极研究的领域。

另外的问题是项目初期的大量假定或者快速收集需求可能致使项目走入误区,特别是客户对其自身须要毫无概念的状况下。与之相似,人之天性很容易形成某我的成为主导并将项目目标和设计引入错误方向的境况。开发者常常能把不恰当的方案授予客户,而且直到最后发现问题前都能得到客户认同。虽然理论上快速交互的过程能够限制这些错误的发生,但前提是有效的负反馈,不然错误会迅速膨胀。

目前列入敏捷方法的有:

软件开发节奏,Software Development Rhythms
敏捷数据库技术,AD/Agile Database Techniques
敏捷建模,AM/Agile Modeling
自适应软件开发,ASD/Adaptive Software Development
水晶方法,Crystal
特性驱动开发,FDD/Feature Driven Development
动态系统开发方法,DSDM/Dynamic Systems Development Method
精益软件开发,Lean Software Development
AUP(Agile Unified Process)
Scrum
XBreed
极限编程,XP Extreme Programming
探索性测试

敏捷技术
测试驱动开发,TDD/Test-Driven Development
行为驱动开发,BDD/Bahavior-Driven Development
Scrum
http://zh.wikipedia.org/wiki/%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息