文档介绍:敏捷软件开发世纪90年代逐渐引起广泛关注的一些是20世纪年代逐渐引起广泛关注的一些世纪新型软件开发方法的总称。新型软件开发方法的总称。强调程序员团队与业务专家之间的紧密协作、面对面的沟通认为比书面的文档更有效、认为比书面的文档更有效、迭代交付新的软件版本、迭代交付新的软件版本、紧凑而自我组织型的团队、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法。应需求变化的代码编写和团队组织方法。
传统软件工程的误区一个简单的类比: 一个简单的类比研制一个软件系统, 研制一个软件系统,同研制一台机器或建造一座楼房一样,有很多共同之处。造一座楼房一样,有很多共同之处。希望参照借鉴机械工程、希望参照借鉴机械工程、建筑工程中的一些管理技术来进行软件开发, 些管理技术来进行软件开发, 产生了软件工程从机械工程和建筑工程中继承的最核心的部分, 部分, 确立一个用户的最终目标, 确立一个用户的最终目标,然后通过逐步求精的工程化方法达到到这个目标。求精的工程化方法达到到这个目标。
两者根本差异软件工程与传统建筑、软件工程与传统建筑、制造工程的价值体现不同在建筑行业中,一栋按质按量按时建设完在建筑行业中, 成建筑其本身就具有价值。成建筑其本身就具有价值。一个按质按量完成但未交付上线的软件其本身所具有的价值极其有限的; 本身所具有的价值极其有限的一个按质按量完成但却根本不能满足企业需要的软件就没有任何价值。需要的软件就没有任何价值。
两者根本差异软件的存在性和软件的有用性并不具有传统建筑、有传统建筑、机械制造行业那种天然的内在关联。的内在关联。在建筑行业中, 在建筑行业中,一栋建筑只要质量过关总可以保证它是有用的。关总可以保证它是有用的。很多质量过关的软件确是根本无用的。很多质量过关的软件确是根本无用的。
两者根本差异软件工程的价值体现在实现软件的有用性而不是把软件完成。而不是把软件完成。传统行业由于天然的优势可以不用特殊地考虑制品的有用性,考虑制品的有用性,仅考虑如何更好地完成该制品就可以。仅考虑如何更好地完成该制品就可以。这是软件工程和传统建筑、这是软件工程和传统建筑、机械制造工程的根本不同,的根本不同,也是传统软件工程的一个根本误区。本误区。
商业环境敏感度不同对于传统行业,对于传统行业在项目的初期对与项目最终实现的用户价值会有一个大致的估算,实现的用户价值会有一个大致的估算,这个估算值在传统行业中是一个相对稳定的值,估算值在传统行业中是一个相对稳定的值,也就意味着项目初期的用户价值估算受
到用户所处商业环境影响较小。户所处商业环境影响较小。
商业环境敏感度不同在项目终期由于我们基本上可以实现了最初估算的客户价值, 初估算的客户价值,纵然客户的价值期望随商业环境的变化产生了变化, 随商业环境的变化产生了变化,大多数用户最终也会接受并认可这个工程的价值。户最终也会接受并认可这个工程的价值。
商业环境敏感度不同软件工程比起传统的工程学受到用户所处的商业环境影响更为明显,的商业环境影响更为明显,用户商业环境的变化直接影响了软件的价值。因此, 的变化直接影响了软件的价值。因此,用户往往在经过长时间的等待之后,户往往在经过长时间的等待之后,却拿到一个低于预估价值的软件。一个低于预估价值的软件。用户对于软件不满意也就是理所应当的。不满意也就是理所应当的。
两者根本差异从重视软件价值开始传统软件工程方法受到传统方法的影响, 传统软件工程方法受到传统方法的影响, 错误地认识了软件价值的所在, 错误地认识了软件价值的所在, 过于强调过程与软件价值的必然因果性关系, 忽略了客户商业环境对软件价值的影响。忽略了客户商业环境对软件价值的影响。
忽略或错误定义软件价值、忽略或错误定义软件价值、漠视软件价值随客户商业环境的变化的传统软件工程学方法, 方法,都不可能解决软件行业所面对的问题。
敏捷方法的优势短期交付软件的实际价值体现在对于企业的有用性上。软件的实际价值体现在对于企业的有用性上。一个软件越早交付上线就能够越早地为企业提供价值, 供价值,也就能越早地体现出软件以及构造它的工程的价值。的工程的价值。敏捷方法中一个广为人知的最佳实践称作小版本发布, 本发布,也就是将传统项目周期分为更小的周期,在每一个周期结束的时候提供可以生产上线的应用系统。线的应用系统。可以看出敏捷方法强调缩短软件的上线周期, 可以看出敏捷方法强调缩短软件的上线周期, 使软件可以更早地为用户发挥实际价值。使软件可以更早地为用户发挥实际价值。
用户价值驱动在传统软件工程方法中, 在传统软件工程方法中,我们已经注意到一个事实, 一个事实,客户对于需求的认识往往是含混不清的; 混不清的因此传统软件工程的方法强调了对于需求的管理, 的管理,从而形成了以需求驱动整个软