技术交流会中,让我印象最深的是:大勇学长和丹姐在切磋实际项目中用到的“敏捷开发”,后来由向阳学长对比两人的观点发问“敏捷开发和瀑布模型的优缺点?人员要求?流程?”最终由咱们敬爱的米老师作高层次的总结。程序员
下面,本人根据学长们的建议,并参阅网上资源对“敏捷开发和瀑布模型作对比分析”数据结构
20实际60年代中期,人们在软件开发过程和维护中所遇到的问题被称做是“软件危机”。工具
1968年,在德国召开的NATO(北大西洋公约组织),首次提出“软件工程”的概念,但愿能用工程化的原则和方法来克服软件危机。测试
在此以后,人们开展了软件模型、软件方法、工具与环境的研究,提出了瀑布模型、演化模型、螺旋模型和喷泉模型等开发模型,出现了面向数据流方法、面向数据结构的方法、面型对象的开发方法,以及一批CASE(计算机辅助的软件工程)工程和环境。spa
1970年WinSTon Royce提出了著名的"瀑布模型",将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,而且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。设计
一、各阶段划分很明确,便于项目经理对进度的把控,可是缺少灵活性。对象
二、适用于需求很明确的项目,所以对于客户需求的变化很难适应。blog
三、以文档做为驱动,做为每一阶段审核的标准,同时极大地增长了工做量。生命周期
四、强调了每一个阶段的严格性,只有前一阶段经过审核才能进入下一阶段的设计。开发前期良好需求说明,是最终系统正确性和完整性的保证。资源
五、因为开发模型是线性的,早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
六、用户只有等到末期才能见到开发成果。
敏捷开发是一种从1990年代开始逐渐引发普遍关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协做、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、可以很好地适应需求变化的代码编写和团队组织方法,也更注重作为软件开发中人的做用。
一群开发经验丰富和才华横溢的开发人员经过关注其余公司和别的开发团队而且结合自身的项目经验,建立了敏捷开发宣言,让软件开发工做变的更容易更轻松:
敏捷开发的优点?
一、以客户满意度为主。客户会看到产品设计的每一步并在此基础上作出反馈,这时候你须要迅速的作出调整。
二、拥抱变化。客户最关心的是设计出的软件可以知足其需求便阿虎,所以这就须要开发人员从客户那里获得什么
三、就要迅速实现什么。这样软件的每一个子项目都会根据需求进行调整,并不会对其它子项目产生很差的影响。
四、频繁交付。从几周到几个月应该交付更新,时间越短越好。及时交付客户维系好的客户关系,并根据客户反馈的信息,并做出相应的调整。
五、面对面的交流。因为领域的区别,客户只是业务了解,而软件开发人员只对软件熟悉,这就可能致使沟通之间出现理解误差,由于经常在一块儿工做显得很必然。
瀑布模型和敏捷开发对比分析图:
总结:
“敏捷”就是快,是一种新的思路。极大地发挥人的创造力,只有快才能够适应社会的节奏。而对于需求明确的大型软件的应用开发,文档的管理与衔接做用是不可替代的。
至于选择哪种开发模型,这取决于项目的规模、开发的工期、领导者的素质……。瀑布模型和敏捷开发思想并非两者只选其一的关系,还可能把敏捷开发的思想融入到“流水线工厂式”的管理中。
只有认真分析环境因素(外界+人员素质自己)的变化,才可以选择最适宜的开发方式。要知道,最适合的才是最好的。这就是米老师常说的“认识论决定一我的的行为,决定你的将来发展方式,会不会少走弯路”。