敏捷开发(Agile Scrum Methodology )背景:
Agile Scrum Methodology 是指敏捷开发方式(方法论)
敏捷的项目管理方式叫Agile, 而Scrum是最典型能体现敏捷开发的一个代表。大部分公司,目前都在采用Scrum开发流程。
敏捷和传统的开发方式有何不同呢?
传统软件开放方式,大都采用的是瀑布流模型(waterfall model)比如:需求,设计,编码,集成,测试等,一层逐一层。
且传统开发方式,存在如下缺点:
1. 在项目计划阶段,需要付出巨大的effort。 huge effort during the planning phase 因为是waterfall的方式,每一层都以上一层为基础。设计基于需求,编码base在设计上。所以直接导致项目在初期阶段花费大量的精力去部署。
2. 需求无法紧跟环境的变化。poor requirements conversion in a rapid changing environment 因为传统的项目周期时间比较长,有些一年半能开发出来一个成品,当投放市场时,市场需求产生了变化和调整,延迟退出的产品无法适配市场需求的及时性。而Agile则不然,恰恰是把项目细分切小,随时满足市场需求的变化。
3. 员工被当成了被动的生产要素。treatment of staff as a factor of production 可能直接导致coder的积极性,程序员没有主动参与需求,设计的环节,被动开发。
New Method:Agile Software Development Methodology
Agile 取代了传统开发方式,以快速迭代的方式驱动整个软件项目。 想想,就是短平快方式。
Agile很轻量级(Lightweight),软件能随需求变化而调整,且有较短的开发周期,最重要的是需要customer involved,毕竟产品最终给用户使用。(People-based rather than plan-based 以人为本而不是基于项目计划,强调人之间的interactions,且注重个人价值individuals over processes and tools)。
能跑起来的程序远比详尽的文档化重要。working software over comprehensive documentation。
响应需求的变化要比按部就班遵循计划强 Responding to change over following a plan.
客户合作要优于合同的协商 Customer collaboration over contract negotiation
Scrum是一种Agile方法,能实现上述。是一个更快,更Agile的方式。
Scrum 小结:
1. Scrum is an agile process that allows us to focus on delivering the highest business value in the shortest time. 短期内能产出最高的商业价值
2. Allows us to rapidly and repeatedly inspect actual working software (一般two weeks or one month可以发布内部可使用可运行的软件版本)
3. Business set the priorities. (商业设定优先级,团队自我管理决定用最好的方式去deliver 最重要优先级的功能, teams self-manage to determine the best way to deliver the highest priority features.) 每过段时间,任何人都可以看到能够运行起来的software,且决定是否release it or continue to enhance for another iteration。(是否版本发布或者持续进行enhance下一个迭代版本)