( 注:敏捷开发的第一条价值观就是“ 以人为本”,强调“ 个体(人)” 及“ 个体” 间的沟通与协做在软件开发过程当中的重要性。这个顺序不是偶然而为之的,敏捷开发将重视个体潜能的激发和团队的高效协做做为其所推崇的第一价值观。架构
敏捷开发的第二条价值观就是“ 目标导向”。同其余众多管理理论和模型同样,敏捷开发认同目标导向是成功的关键,由于没有目标也就无所谓成功。敏捷开发的价值观中清楚地阐明,软件开发的目标是“ 可工做的软件”,而不是面面俱到的文档。而遗憾的是,不少软件项目已经在纷繁的文档之中迷失了本身的目标。工具
敏捷开发的第三条价值观就是“ 客户为先”。虽然敏捷开发强调的第一价值观是“ 以人为本”,但敏捷宣言的缔造者们并无忘记客户,相反他们真正的理解客户的需求、懂得如何与客户合做。敏捷价值观里强调的“ 客户为先”即不是简单地把客户看成“ 上帝”、刻板的推崇“ 客户至上”,客户要求什么、咱们就作什么;也不是把客户看成“ 谈判桌上的对手” 甚至“ 敌人”,去斗智斗勇。敏捷价值观把客户当成了合做者和伙伴,把本身的使命定位为“ “ 帮助客户取得竞争优点”。测试
敏捷开发的第四条价值观就是“ 拥抱变化”。人们常说“ 世界上惟一不变的就是变化”,大多数人也相信事实确实如此。而以往不少的软件项目却忽视了这一点,或者更准确地说是他们不肯意“ 正视”。他们老是试图用详尽的计划去预先穷举这些变化,而后又试图经过严格遵循计划来控制变化的发生,而结果每每是被不断涌现的变化击垮。敏捷开发价值观中认可变化是软件开发的一部分、并相信正是客户在不断变化其需求的过程当中明晰了其真正的须要。于是敏捷开发欢迎变化、拥抱变化,并可坦然应对变化,正是这些变化为客户和项目带来了价值。优化
最后,还应记住敏捷宣言中的最后一句话:“ 尽管右项有其价值,咱们更重视左项的价值”—敏捷宣言并未否认或贬损“ 右项” 的价值,在敏捷开发的价值观中认可“ 流程和工具”、“ 详尽的文档”、“ 合同谈判” 以及“ 遵循计划” 的重要性,只是两相比较,“ 更重视左项的价值”。)编码
与传统开发方法相比,在敏捷开发的整个过程当中,有如下几个主要的特色:spa
(1)敏捷开发的过程有着更强的适应性而不是预设性,从敏捷宣言的第四条响应变化高于预设计划即可以看出来。由于软件开发过程的自己的不可预见性,不少用户在项目开始时不可能对于这个项目有着一个完整而明确的预期。不少对软件的预期都在后期的修改和完善过程当中产生。所以高适应性显然更加符合软件工程开发的实际。而敏捷开发实现其适应性的方式主要在于,第一,缩短把项目提交给用户的周期;第二,增长用户,业务人员,开发人员这三者之间的交流;第三,经过减小重构的成本以增长软件的适应性。操作系统
(2)敏捷开发的过程当中,更加的注重人的因素。在传统软件工程中,我的的因素不多的被考虑到分工中,每一个个体都是只是整个代码开发机器的一个小小的螺丝钉,我的的意志和创造力很大程度上的被抹去为了更好的为集体服务。而在敏捷开发过程当中,每一个我的的潜力被充分的考虑,应用什么技术很大程度上直接由在第一线开发的技术人员决定;每一个人的特色和创造力均可以充分地发挥,这样开发出来的软件更加的具备生命力,由于他融入了开发者的心血和创意,开发者再也不是进行机械的乏味的堆砌,而是创造属于本身的艺术品,这样的条件下产生的代码必然在质量上更占优点。设计
(3)在敏捷开发的过程当中,整个项目是测试驱动的而不是文档驱动的。不只每一个模块有着本身的相应的测试单元,开发人员在开发本身的模块的过程当中必须保证本身所开发的模块能够经过这一单元的测试,而且集成测试贯穿了整个开发过程的始终。集成测试天天会进行十几回甚至几十次,而不是像传统方法同样只有当各个模块的编码都结束了以后再进行联合调试。这样,在软件开发的进程中每一点改动所引发的问题都容嘉容易暴露出来,使得更加容易在错误刚刚产生的时候发现问题从而解决问题。这样就避免了在最后整个系统完成时错误隐藏的太深给调试形成极大的困难。调试
敏捷开发的高适应性,以人为本的特性,和轻量型的开发方法即以测试为驱动取代了以文档为驱动,这三个主要的特色,也就是敏捷开发相对与传统开发方式的主要有点。由于它更加的灵活而且更加充分的利用了每一个开发者的优点,调动了每一个人的工做热情。进程
敏捷确实是项目进入实质开发迭代阶段,用户很快能够看到一个基线架构版的产品。敏捷注重市场快速反应能力,也即具体应对能力,客户前期满意度高。
与传统开发方式相比,敏捷开发的最主要的劣势在于敏捷开发欢迎新的需求,而在每次新的需求产生时均可能引发整个系统的大幅度的修改。由于开发者在开发上一个版本的时候,彻底没有考虑之后的优化将要如何进行。这样的开发方式实际的软件开发过程当中,并不必定老是有效的。
而另外一个方面,敏捷开发由于缺少不少在敏捷开发中被认为“不重要”的文档,这样在一个大型项目好比一个操做系统开发的时候,因为其项目周期很长,因此很难保证开发的人员不更换,而没有文档就会形成在交接的过程当中出现很大的困难。
敏捷注重人员的沟通,忽略文档的重要性,若项目人员流动大太,又给维护带来很多难度,特别项目存在新手比较多时,老员工比较累。
须要项目中存在经验较强的人,要不大项目中容易遇到瓶颈问题。