敏捷开发
简介:
是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。
如果要实行一个很好的scrum,通常要满足两点:一、团队有三名或以上的研发工程师;二、团队内有一名合适的 Scrum Master。当团队内无法找到合适的Scrum Master时,不要轻易推行敏捷。如果你的团队是由新人组成,或者即使有资深员工但是他并不了解或认同敏捷开发的话,那么你需要等待合适的Scrum Master出现。
当你真正实行敏捷开发时,要注意量化衡量团队的执行力的指标:完成度、评估准确度、计划合理度。这是评定整个进度的很重要的指标,也是让迭代更好的进行下去的准则。
适用性:
在敏捷方法其独特之处以外,他和其他的方法也有很多共同之处,比如迭代开发,关注互动沟通,减少中介过程的无谓资源 消耗。通常可以在以下方面衡量敏捷方法的适用性:从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面 的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。跟这些相关联的关键成功因素有:
组织文化必须支持谈判人员彼此信任,人少但是精干,开发人员所作决定得到认可,环境设施满足成员间快速沟通之需要。最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,因此敏捷方法更适用于较小的队伍,20、40人或者更少。大规模的敏捷软件开发尚处于积极研究的阶段。
另外的问题是项目初期的大量设想或快速的需求收集可能导致项目走入误区,特别是客户对其自身需要毫无概念的情况下。 与之类似,人之天性很容易造成某个人成为主导并将项目目标和设计引入错误方向的境况。开发者经常会把不恰当的方案授予客户,而直到最后出问题前都能获得客 户认同。虽然理论上快速交互的过程可以限制这些错误的发生,但前提是有效的负反馈,否则错误会迅速膨胀。
敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。
适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化.
对比迭代方法
相比迭代式开发两者都强调在较短的开发周期提交软件,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。
对比瀑布式开发
两者没有很多的共同点,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。
瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。
相对来讲,敏捷方法则在几周或者几个月的时间内完成相对较小的功能,强调的是能将尽早将尽量小的可用的功能交付使用,并在整个项目周期中持续改善和增强。
有人可能在这样小规模的范围内的每次迭代中使用瀑布式方法,另外的人可能将选择各种工作并行进行。