敏捷开发(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。

Reference: http://en.wikipedia.org/wiki/Extreme_programming_practices

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

时间: 2024-08-31 11:36:27

敏捷开发(XP, SCRUM)的相关文章

敏捷开发的Scrum晨会实践

hursing所在的公司推行敏捷开发有两年多了,其中最让人直接感受到的就是scrum晨会.从生搬硬套到过程创新,令大家由抵触变成积极响应,这个过程真的很花费心思. 11年12月,hursing开始在自己的团队推行晨会.当时团队是刚成立的,很小,包括hursing自己在内的2个老人+2个新人,基本上hursing得指导所有的事情.事实上,团队小到不开晨会hursing也知道他们在做什么,所以晨会的内容更多是反馈他们遇到的还未解决的问题以及提出对编码过程的改善意见,然后hursing做一些指导和纠正

SCRUM敏捷开发规则一栏

敏捷.敏捷开发这类词最近很火!敏捷开发,就是指能够在需求迅速变化的情况下快速开发软件.我们接触最多的和敏捷相关的名词是:极限编程(XP).结对编程.测试驱动开发(TDD)等. 敏捷建模(Agile Modeling,AM),的价值观包括了XP的四个价值观:沟通.简单.反馈.勇气.此外,还扩展了第五个价值观:谦逊. 敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力.除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发. SC

Leangoo:打造敏捷开发团队协作Saas平台

Leangoo是Scrum中文网旗下敏捷研发团队开发的一款敏捷团队协作工具.Leangoo创始人廖靖斌同时又是Scrum中文网的创始人兼CEO,是中国Scrum和敏捷开发的先行者.实践者,曾帮助大型跨国金融软件开发组织eBaoTech的研发中心导入了Scrum和敏捷方法,在大型软件项目研发领域经验丰富.2008年,廖靖斌创办了Scrum中文网,建立了线上学习社区和线下培训顾问平台,2014年,他带领团队做出了Leangoo看板协作软件.廖靖斌介绍,团队协作工具的市场规模达到千亿级,Leangoo

从管理学看敏捷开发Scrum

2010-12-21 14:13 宗子城 每次我们看敏捷开发Scrum都是从技术角度,今天我们尝试从管理角度来看这个问题. Scrum Scrum近几年已经成为最有影响的软件开发过程,从Forrester 关于敏捷模式的调查报告我们可以看出一些倪端,而且微软也推出了更Scrum的模板,相信.Net平台下越来越多的团队会采用这一过程.   图1: Forrester 关于敏捷模式的调查报表 Scrum的在软件日趋复杂的环境下,其成功不是偶然的,其指导思想符合我们现代管理学的一般规律. 管理学 经过

[免费讲座] 成都软件技术沙龙 - 开启基于Scrum的敏捷开发全新征程讲座

成都软件技术沙龙4月28日活动议程 开启基于Scrum的敏捷开发全新征程 沙龙介绍: 成都软件技术沙龙成立于2008年,致力于发展成都地区软件事业,结交志同道合的软件界朋友,先后与微软.NET俱乐部,微软社区精英计划,天府软件园以及Scrum成都等机构合作,希望能团结成都地区软件同仁共同交流. 4月28日活动 – 开启基于Scrum的敏捷开发全新征程 时间:4月28日下午1点 – 5点 地点:成都天府软件园A区3号楼大会议室 讲座一:自下而上的敏捷实践 大纲: l 持续集成 l TDD l 自动

敏捷开发之Scrum扫盲篇

现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...   为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解:所以我决定写一篇扫盲性的博文,同时试着也与园内的朋友一起分享交流一下,希望对初学者有帮助.    什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心.迭代

为什么敏捷开发难于成功?

我大概是在2003年接触敏捷软件开发这个概念,之前无论是在学校的小打小闹项目,还是工作后的项目都是典型的瀑布式开发模式, 设计上自顶向下逐层分解, 设计.实现.测试.上线有条不紊.这不是一篇介绍敏捷开发的入门文章, 而是我学习.实施敏捷的一些感想, 如果你没有实践过敏捷软件开发, 不妨到文末看看书籍推荐. 我大概是在2003年接触敏捷软件开发这个概念,之前无论是在学校的小打小闹项目,还是工作后的项目都是典型的瀑布式开发模式, 设计上自顶向下逐层分解, 设计.实现.测试.上线有条不紊. 除了大学时

老曹眼中的敏捷开发【中生代北京闭门会实录】

引言 世界上不存在这样一种方法: 只要套用,就可以写出完美的软件,无论使用的哪种设计模式: 但确实可能存在一种开发方式,可以帮助我们一步步构造出需要的软件和架构--这有可能就是敏捷开发. 源自贝尔北方实验室的开发流程 相对于软件开发流程,有一门专门的学科--软件工程.最早接触软件工程,是20年前在北电贝尔北方实验室工作的时候,当时的开发流程是这样的: 其他主流的瀑布式开发流程也大致如此. Scrum的敏捷流程 随着技术的演进,尤其是互联网的发展,BS架构的广泛应用,用户反馈的及时响应成为了可能.

敏捷开发系列之满足不断变化的需求

软件开发方法一直处在不断发展过程中.在诸多方法中,敏捷开发以其能持续满足不断变化的用户需求正在受到越来越多人的重视,从中小项目开始进入大型开发项目,近几年来上升势头明显.为帮助读者进一步了解敏捷开发方法,本报邀请长期在国外从事软件研发工作的专业人士撰文就此进行深入探讨. 在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道.在欧美软件企业中,有近半数企业已采用敏捷方法进行开发,而近几年受软件外包和外企的带动,敏捷开发在中国也出现了日渐普及的态势,如腾讯内部几乎所有的开发团队都在实施敏捷方法.敏