我在今年7月到9月参加了ThoughtWorks(中国)在西安举办的暑期特训营,因此我也接触到了敏捷软件开发思想。但是我对其理解还是不够,在这里整理整理,增加认知。
敏捷软件开发(Agile software development)
敏捷软件开发又称敏捷开发,是一种从1990年代开始逐渐引起大家关注的一种新型软件开发的新方法,是一种应对快速变化的需求的一种软件开发能力。相对于非敏捷,敏捷开发更加强调程序员团队与业务专家之间的紧密协作、面对面沟通(认为比书面描述更加有效果)、频繁交付新的软件版本、紧凑而自我组织型的团队能够很好地适应需求变化的代码编写和团队组织方法,也更加注重软件开发过程中人的作用。
敏捷软件宣言
- 个体和互动高于流程和工具
- 工作中的软件高于详尽的文档
- 客户合作高于合同谈判
- 响应变化高于遵循计划
也就是说,尽管右边有其价值,但是我们更加重视左边的价值
对比其他方法
敏捷方法有时候被认为是无计划性和纪律性的方法,实际上更准确的说是敏捷方法强调适应性而非预见性。
适应性的方法集中在快速适应现实变化。当项目需求起了变化,土堆应该迅速适应。
对比与瀑布式开发
瀑布式开发是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码/测试的步骤顺序进行。步骤成果作为衡量进度的方法。
瀑布式开发的主要问题就在于它的严格分级导致自由度降低,项目早期即做出承诺导致对后期的需求变化难以理解,代价昂高。瀑布式开发在需求不明并且在项目进行过程中可能变化的情况下基本是不可执行的。
敏捷开发则在几周或者几个月内完成相对较小的功能,强调的是能尽早将尽量小的可用的功能交付使用,并在整个项目周期持续改善和增强。
用于敏捷开发团队的项目管理工具
我在tw培训时,我们开发项目使用到了trello看板工具,它是一种将问题可视化表现出来的工具,很适合团队开发,而且大家都可以实时看到最新的项目进展,代码交付情况。
Github也是一种版本控制工具,它可以完成集成发布,问题跟踪,代码共享。
这两种工具都是对敏捷开发很有帮助的工具!强烈安利。
还有我在培训期间,听到老师说了他对敏捷的理解:价值交付优于循规蹈矩。
慢慢理解吧。。。