zoukankan      html  css  js  c++  java
  • 敏捷开发(XP, SCRUM)

    敏捷方法的核心思想

    • 敏捷方法是适应型(Adaptive),而非可预测型(Predictive)。与传统方法不同,敏捷方法拥抱变化,利用变化来发展,甚至改变自己,最后完善自己。也就是要用重构(Refactoring)

    •  敏捷方法是以人为本(people-oriented),而非过程为本(process-oriented)。传统方法把开发者看作一个生产要素(分析员,测试员,程序员),拥有大量的中间产品(需求规约,设计模型等),而忽视了作为决定因素的人的特殊性。敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。

    • 迭代增量式的开发过程。敏捷方法以原型开发思想为基础。迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。

    关于Scrum和XP(Extreme Programming)

    前面说了敏捷它是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而Scrum和XP就是敏捷开发的具体方式了,你可以采用Scrum方式也可以采用XP方式;Scrum和XP的区别是,Scrum偏重于过程,XP则偏重于实践,但是实际中,两者是结合一起应用的.


    XP的12条实践规则

    XP是偏重于实践的,这些实践中有些已大量运用于现代软件开发中。无论你的开发过程是SCRUM还是CMMI,CMMI?是的,这些优秀的软件工程实践并不是敏捷的专享,即使你的开发过程是CMMI,也不影响你使用这些实践。例如TDD,CI(Continues Integration),Agile 和 CMMI 并不是水火不容的对立关系,而是在某种程度上可以有机的结合。

    XP的核心价值观是沟通、简单、反馈和勇气。

    12条实践规则:

         细粒度反馈(Fine Scale Feedback)
    • 1. 结对编程(Pair Programming),即任何代码都有两个人合作完成,一个人coding,一个人review code然后提供反馈。现实中一般不会采用此实践,一种替代方式是定期开code review meeting。
    • 2. 规划工作(Planning Game),每个迭代周期开一次计划会议,对此工作周期进行回顾和总结,以及对下个迭代(通常2星期)的开发和发布进行规划。
    • 3.测试驱动(Test Driver Development),程序员在实现功能前应该写好单元测试代码,因为功能代码还没有实现,运行测试的结果可想而知,肯定会失败,程序员的工作就是恰当的代码能使此测试用例通过。这个功能实现的过程也是循序渐进、迭代的,每次实现功能的一小部分,然后运行测试,这样在出现问题时,我们可以很快的定位到问题所在,并很快的解决问题。因为如果你和我一样不是足够聪明的人,我们大脑通常只能记住刚刚发生此的事情。概念同样适用于CI里,对每次Checkin的Regression Test,因为如果你的Checkin造成了对现有功能的破坏,因为问题时你刚刚修改代码造成的,你也能比较容易的定位问题,修复它。
    • 4.完整团队(Whole Team),有时也叫客户现场,即客户并不是需求分析后,就万事大吉了,应该驻扎在开发现场,这样开发团队可以获取最新,最准确的客服反馈,确保开发没有偏离客户需求。
         可持续发展(Continues Process)
    • 5.可持续集成(Continues Integration),项目应该有一套自动编译,自动化测试,自动部署的工具(hudson),程序员应该在最新的代码版本上工作,对于多人并行开发,应该及时的checkin你对代码修改,并保证编译、测试通过。若有问题可以尽早的被暴露,修复。对于减少bug,降低软件风险都有积极作用。
    • 6.代码重构(Refactoring),软件随着需求的变化和技术的革新是不断演化的,容易产生代码堆砌,代码冗余等代码中的“坏味道”,用代码重构技术的代码进行及时的清理、调整、重组。有助于提高软件质量和可维护性。
    • 7.小版本发布(Small Release),怎样吃掉大象?将一个大的问题域分解成小的,可操作的问题,是解决复杂问题的自然之道。将软件需求分解成小的功能模块,在每个迭代周期中完成预定的部分模块,并形成一个可发布的版本,在Demo此版本时,可以快速都获得来自stakeholders的反馈,而不用将风险延迟到项目的最后。
    • 8. 40小时工作制(Sustainable Pace),可持续发展,不要加班,该打篮球打球。
        共识(Shared Understanding)
    • 9.代码规范(Coding Standard),统一的代码风格和格式
    • 10.集体所有制(Collective Code Ownership), 每个人对所有代码负责
    • 11.简单设计(Simple Design),简单是王道,不要over-design
    • 12.系统隐喻(System metaphor),系统隐喻是每个人(客户,程序员,经理)都能理解系统是如何工作的,涉及到如何对Class/Method进行命名,使得团队成员仅从名称上就能想到起功能,例如一个产品过期,那么在Catalog(Class)上有makeOverdue的Method。


    如何运用Scrum作为开发过程: http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/significantfrank/p/4875838.html
Copyright © 2011-2022 走看看