2010-03-16 22:56:00 liyangbing315 阅读数 8177
  • 体验极限编程(XP)

    极限编程,英文:Extreme Programming,简称:XP编程,这是一种轻量、、强调适应变化、适合中小型项目的项目管理方法。本课程为你分享极限编程的10多种佳实践。

    10801 人正在学习 去看看 张传波

敏捷开发与极限编程

简介

      2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷联盟,敏捷开发过程的方法很多,主要有:SCRUM, Crystal,特征驱动软件开发(Feature Driven Development, 简称FDD),自适应软件开发(Adaptive Software Development,简称ASD),以及最重要的极限编程(eXtreme programming ,简称XP).极限编程(XP)是于1998Smalltalk社群中的大师级人物Kent Beck首先倡导的。

极限编程(XP)

      极限编程(XP)是敏捷软件开发中最著名的一个,它是由一系列简单却互相依赖的实践组成。这些实践结合在一起形成了一个胜于部分结合的整体。

极限编程 是一门针对业务和软件开发的规则,它的作用在于将两者的力量集中在共同的、可以达到的目标上。它是以符合客户需要的软件为目标而产生的一种方法论,XP使开发者能够更有效的响应客户的需求变化,哪怕是在软件生命周期的后期。它强调,软件开发是人与人合作进行的过程,因此成功的软件开发过程应该充分利用人的优势,而弱化人的缺点,突出了人在软件开发过程中的作用。极端编程属于轻量级的方法,认为文档、架构不如直接编程来的直接。XP实际上是一种经历过很多实践考验的一种软件开发的方法,它诞生了大概有5 年,它已经被成功的应用在许多大型的公司,如:Bayeris che LandesbankCredit Swis s LifeDaimlerChryslerFirst Union National Bank Ford Motor Company and UBS.XP 的成功得益于它对客户满意度的特别强调,XP 是以开发符合客户需要的软件为目标而产生的一种方法论,XP 使开发者能够更有效的响应客户的需求变化,哪怕在软件生命周期的后期。同时,XP 也很强调团队合作。团队包括:项目经理,客户,开发者。他们团结在一起来保证高质量的软件。XP 其实是一种保证成功的团队开发的简单而有效的方法。XP 强调四种价值:交流,简易,回馈,勇气。XP 程序员之间紧密的相互交流,XP 程序员也和客户紧密的交流。他们总是保持他们的设计简单明了。项目一开始,XP 就强调通过对软件的不断测试来获得反馈,程序员尽可能早的把软件交给客户,并实现客户对软件需求提出的变化,有了这些基础,XP 程序员就可以自信的面对需求和软件技术的变化。
XP
是与众不同的,它有点象快步的舞蹈。XP 开发过程包括许多的小卡片,独立的看,这些小卡片没有什么意义,但是当它们组合在一起,一幅完整的美丽的图片就可以看见,XP方法有别于传统软件开发,它是软件开发的一种新的重要的发展。它改变了我们开发程序的传统思维方式。下面我们将介绍它带给我们那些改变。
XP
属于轻量开发方法中较有影响的一种方法。轻量开发方法是相对于传统的重量开发方法而言。简单地理解,的轻重是指用于软件过程管理和控制的、除程序量以外的文档量的多少。XP等轻量开发方法认识到,在当前很多情况下,按传统观念建立的大量文档,一方面需要消耗大量开发资源,同时却已失去帮助预见、管理、决策和控制的依据的作用。因此必须重新审视开发环节,去除臃肿累赘,轻装上阵。
一、XP的核心思想
     
从长远看,早期发现错误以及降低复杂度可以节约成本。极限编程强调我们将任务/系统细分为可以在较短周期解决的一个个子任务/模块,并且强调测试、代码质量和及早发现问题。通常,通过一个个短小的迭代周期,我们就可以获得一个个阶段性的进展,并且可以及时形成一个版本供用户参考,以便及时对用户可能的需求变更作出响应。
二、XP的十二种方法
     
规划策略(The Planning Game)
     
结对编程(Pair programming)
     
测试(Testing)
     
重构(Refractoring)
     
简单设计(Simple Design)
     
代码集体所有权(Collective Code Ownership)
     
持续集成(Continuous Integration)
     
现场客户(On-site Customer)
     
小型发布(Small Release
     
每周40小时工作制(40-hour Week
     
编码规范(Code Standards
     
系统隐喻(System Metaphor
三、XP的四个核心价值
     
极限编程中有四个核心价值是我们在开发中必须注意的:沟通(Communication)、简单(Simplicity)、反馈(Feedback)和勇气(Courage)。

XP
沟通、简单、反馈和勇气来减轻开发压力和包袱;无论是术语命名、专著叙述内容和方式、过程要求,都可以从中感受到轻松愉快和主动奋发的态度和气氛。这是一种帮助理解和更容易激发人的潜力的手段。XP用自己的实践,在一定范围内成功地打破了软件工程必须重量才能成功的传统观念。

XP
精神可以启发我们如何学习和对待快速变化、多样的开发技术。成功学习XP的关键,是用沟通、简单、反馈和勇气的态度来对待XP;轻松愉快地来感受XP的实践思想;自己认真实践后,通过对真实反馈的分析,来决定XP对自己的价值;有勇气接受它,或改进它。

四、XP 带给我们的变化

通过软件工程设计的简单而优美的软件并不比那些设计复杂而难以维护的软件有价值。这是真的吗?XP认为事实并非如此。

一个典型的项目花在人力上的金钱是花在硬件上的时间的20 倍,这意味着一个项目每年要花200 万美元在程序员身上,而仅仅花10 万美元在电脑设备上。很多聪明的程序员说:我们如此聪明,发现一种方法可以节省20%的硬件开销,然后他们使得源程序大而且难懂和难以维护,他们会说:但是我们节省了20%或者2 万美元每年,很大的节省。反之,如果我们写我们的程序简单而且容易扩展,我们将至少节省10%的人力开销,一笔更大的节省,这是你客户一定会注意到的一些事情。

另外一个对客户来说很重要的问题就是程序的BUGS XP 不只是强调测试,而且要求正确的测试。测试必须是能自动进行的,以便为程序和客户提供一个安全的环境。在编码的所有阶段,我们不断增加测试用例。当找到 bug 时,我们就添加新的测试,一个紧密的安全网就这样产生了。同一个BUG 不出现两次,这些一定会引起用户的注意。你的客户必须注意的另外一件事情:XP 开发者拥抱需求变化。XP 使我们能够接受需求的变化。

一般情况下,客户只有在系统被开发完成以后能真正去体会它。XP 却不一样,它通过加强客户的反馈来缩短开发的周期,同时获得足够的时间来改变功能和获得用户的认同。在XP 中,你的客户应该明确的知道这一点。

XP
开发过程的大多的革命是在软件开发的方法上,代码质量的重要程度超出人们一般所认为的。仅仅因为我们的客户不能明白我们的源代码并不意味着我们可以不努力去管理代码的质量。

五、我们什么时候用XP

XP
方法的产生是因为难以管理的需求变化,从一开始你的客户并不是很完全的知道他们要的系统是怎么样的,你可能面对的系统的功能一个月变化多次。在大多数软件开发环境中不断变化的需求是唯一的不变,这个时候应用XP 就可以取得别的方法不可能取得的成功。XP 方法的建立同时也是为了解决软件开发项目中的风险问题。假如你的客户在特定的时间内,需要一个相当难开发的系统,而且对于你的项目组来说,这个系统是一个新的挑战(从来没有做过),那风险就更大了,如果这个系统对于整个软件行业来说都是新的挑战,那么它的风险就更大了,采用XP 将可以减少风险,增加成功的可能。

XP
方法是为小团体开发建立的,在2-10 个人之间。假如你的团体恰好合适,你就不需要用其他的软件工程方法了,就用XP ,但是要注意你不能将XP 方法应用于大团体的开发项目中。我们应该注意,在需求一惯呈动态变化或者高具有高风险的项目中,你就会发现XP 方法在小团体的开发中的作用要远远高于在大团体的开发。

XP
方法需要一个扩展的开发团体,XP 团体不仅仅包括开发者,经理、客户也是其中的一员,所有的工作一环扣一环,问问题,商讨方法和日程,增加功能测试,这些问题的解决不仅仅涉及到软件的开发者。

另一个需要是可测试性,你必须能增加自动的单元测试和功能测试,然而在你进行这个需求的时候,你会发现有许多的问题很难测试,这需要充分发挥你的测试的经验和智慧,而且你有时还要改变你的设计以便它可以更容易的进行测试。记住:那儿有需求,那儿就应该有测试的方法。

XP方法的好处的清单上,最后一条是生产力。在同样的合作环境下,XP 项目都一致的表现出比使用其他方法高的多的生产力。但这从来不是XP 方法学的真正目标。XP 真实追求的目标是:在规定的时间生产出满足客户需要的软件。假如对于你的开发来说,这是很重要的方面,你就可以选择XP 了。

下面是极限编程的有效实践:

1.     完整团队XP项目的所有参与者(开发人员,客户,测试人员)一起工作在一个开放的场所中,他们是同一个团队的成员,这个场所的墙壁上随意悬挂着大幅的,显著的图表以及其它一些显示他们进度的东西。

2.     计划游戏计划是持续的,循序渐进的,每两周,开发人员就为下两周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。

3.     客户测试作为选择每个所期望的特性的一部分,客户可以根据脚本语言来定义出自动验收测试来表明该特性可以工作。

4.     简单设局团队保持设计恰好和当前的系统功能相匹配,它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西。并且包含尽可能少的代码。

5.     结对编程所有的产品软件都是由两个程序员,并排坐在一起在同一台机器上构建的。

6.     测试驱动开发编写单元测试是一个验证行为,更是一个涉及行为。同样,他是一种编写文档的行为,编写单元测试避免了相当数量的反馈循环,尤其是功能验证方面的反馈循环。程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。

7.     改进设计随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净,具有表达力。

8.     可持续的速度,团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑,极限编程是一组简单、具体的实践,这些实践结合在形成了一个敏捷开发过程,极限编程是一种优良的,通用的软件开发方法,项目团队可以拿来直接采用,也可以增加一些实践,或者对其中的一些实践进行修改后再采用。

 

敏捷开发

人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。

敏捷软件开发宣言:

个体和交互      胜过  过程和工具

可以工作的软件  胜过  面面俱到的文档

客户合作        胜过  合同谈判

响应变化        胜过  遵循计划

虽然右项也有价值,但是我们认为左项具有更大的价值

我们最优先要做的是通过尽早的,持续的交付有价值的软件来使客户满意。

即使到了开发的后期,也欢迎改变需求,敏捷过程利用变化来为客户创造竞争优势。

经常性地交互可以工作的软件,交互的间隔可以从几个星期到几个月,交互的时间间隔越短越好。

在整个项目开发期间,业务人员和开发人员必须要天天都在一起工作。

围绕被激励起来的个体构建项目,给他们提供所需的环境和支持,并且信任他们能够完成工作。

在团队工作内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。

工作的软件是首要的进度度量标准。

敏捷过程提倡可持续的开发速度,责任人,开发者和用户应该能够保持一个长期的,恒定的开发速度。

不断地关注优秀的技能和好的设计增强敏捷能力。

简单是最根本的。

最好的构架,需求和设计出于自组织团队。

每隔一定的时间,团队会在如恶化才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

敏捷团队依靠变化来获取活力,团队几乎不进行预先设计,因此,不需要一个成熟的初始设计,他们更愿意保持设计尽可能的干净,简单,并使用许多单元测试和验收测试作为支援,这保持了设计的灵活性,易于理解性,团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计,为了改变上面软件设计中的腐化味,敏捷开发采取了以下面向对象的设计原则加以避免,这些原则是:

 单一职责原则(SRP)

就一个类而言,应该仅有一个引起它变化的原因

开放-封闭原则(OCP)

软件实体应该是可以扩展的,但是不可修改。

Liskov替换原则(LSP)

子类型必须能够替换掉它们的基类型。

依赖倒置原则(DIP)

抽象不应该依赖于实现细节,细节应该依赖于抽象。

接口隔离原则(ISP)

重用发布等价原则(REP)

重用的粒度就是发布的粒度

共同封闭原则(CCP)

包中所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生产生影响,而对于其他的包不造成任何影响

共同重用原则(CRP)

一个包中的所有类应该是共同重用的

无依赖原则(ADP)

在包的依赖关系图中不允许存在环

稳定依赖原则(SDP)

朝着稳定的方向进行依赖

稳定抽象原则(SAP)

包的抽象程度应该和其稳定程度一致

敏捷设计是一个过程,不是一个事件,它是一个持续的应用原则,模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能简单,干净和富有表现力。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2019-04-04 22:42:29 weixin_44850444 阅读数 46
  • 体验极限编程(XP)

    极限编程,英文:Extreme Programming,简称:XP编程,这是一种轻量、、强调适应变化、适合中小型项目的项目管理方法。本课程为你分享极限编程的10多种佳实践。

    10801 人正在学习 去看看 张传波

1.极限编程(Extreme programming,缩写为XP),是敏捷软件开发中应用最为广泛和最富有成效的几种方法学之一。极限编程鼓励管理人员和开发人员接受并使用某些特别的有价值的方法。
2.极限编程的创始者是肯特·贝克、沃德·坎宁安和罗恩·杰弗里斯。
3.极限编程的目标:降低因需求变更而带来的成本。极限编程通过引入基本价值、原则、方法等概念来达到降低变更成本的目的。一个应用了极限编程方法的系统开发项目在应对需求变更时将显得更为灵活。
4.极限编程的12个核心实践
(1)短交付周期:和Scrum一样xp采用迭代的交付方式,每个迭代1-3周时间。在每个迭代结束的时候,能够交付可运行的,经过测试的功能。
(2)计划游戏:主要包括软件发布计划和周期开发计划。
(3)结对编程:编程时两个人一起,一个考虑系统架构,一个设计编程细节。
(4)可持续节奏:在项目开发过程中持续保持节奏。
(5)代码集体所有:所有人都可以更改代码任意一部分,可以提升开发速度,提高错误发现的速率。
(6)编码规范:团队使用统一的编码规范。
(7)简单设计:用最简单的办法实现每个小需求。
(8)测试驱动开发(TDD):从功能需求的测试用例开始,先添加一个测试用例,然后运行所有的测试用例看看有没有问题,再实现测试用例所要测试的功能,然后再运行测试用例,查看是否有case失败,然后重构代码,再重复以上步骤;确保照顾到所有需求并实现所有功能。
(9)重构:开发人员对每个USER STORY都进行简单设计,但同时也在不断地对设计进行改进。
(10)系统隐喻:用比喻来描述系统或功能模块是怎样工作的,帮助团队更好理解需求。
(11)持续集成:团队经常基集成,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。
(12)现场客户:客户应该时刻在现场解决问题
5.极限编程的4个价值:沟通、简单、反馈、勇气
6.极限编程的5个原则:快速反馈、假设简单、增量变化、拥抱变化、高质量工作。

参考资料:
scrum中文网http://www.scrumcn.com/agile/

2009-01-25 02:07:21 cd_eat1 阅读数 39
  • 体验极限编程(XP)

    极限编程,英文:Extreme Programming,简称:XP编程,这是一种轻量、、强调适应变化、适合中小型项目的项目管理方法。本课程为你分享极限编程的10多种佳实践。

    10801 人正在学习 去看看 张传波

极限编程( XP )的创始人和 敏捷软件开发宣言 的执笔者之一, Ken Beck ,一直是敏捷编程的倡导者,他认为敏捷编程可以缩短软件开发项目的开发周期。近日他参加了旧金山举行的 Qcon 大会,并接受了媒体的采访,谈论了敏捷开发的相关问题。
 
记者:你能谈论一下敏捷宣言和极限编程( XP )吗?
 
Ken Beck
:在极限编程( XP )后面的基本设想是,肯定有一些对软件开发有帮助的敏捷行为。我曾经问过这个问题, 假若我们尽最大的热情来进行软件开发,会 发生什么? 这就是 极限( Extreme )一词的由来。结果证明,如果你采取其中的一些做法,例如技术上的协作、测试,并比以前更加努力的推行这些做 法,至少在一般的软件开发项目中你会获得比较好的结果。例如你的错误率会比较低,这意味着你可以更频繁的发布新版本软件。你能够以非常低的成本让项目启动 进入最佳的可部署状态,与其他风格的开发模式相比,你获得了更低的开发成本和更短的开发周期。而且如果你将这种理念融入到后续的设计中,持续的对设计进行 认真的投入,你可以在很长一段时间内以一种非常稳定的速率来继续部署新的功能。
 
这就是敏捷编程如何启动的方式,事实证明为了实现所有上述目标,无论是作为一个团队还是一个个体,你还必须学习许多新的社会技能:诚实、无私、有责任心。 在获得一定的开发速度后,接下来的目标是,如果你想更快的进入下一步,你所要做的是能够更清晰和透明的交流正在进行的开发工作。
 
记者:你提到了推动敏捷编程发展的风格:可靠性、变化的低成本、增加的投资回报率。为什么软件开发市场正在从瀑布风格转向敏捷开发风格呢?或者现在是否只有一小部分开发者正在使用这个方法?
 
Ken Beck
:是的,现在是只有一小部分开发者正在使用敏捷方法,但是我认为这一数字正在非常迅速的增长。我虽然没有明确的数字来证实我的观点,但是如果你关 注一下敏捷开发者大会的增长,你会清晰的感觉到这一点。我认为现在推动敏捷开发的因素是这种开发风格更加贴近真实环境、更透明和更有责任感,如果你的开发 周期比较短你会决定它就是你希望实现的开发方式。对于那些尊崇真实至上的软件开发,存在着巨大的潜在市场。
 
记者:为什么使用者还比较少?
 
Ken Beck
:因为它存在的时间还不是很长。
 
记者:你今天早晨提到这个问题:用户不得不自己来确认你的软件是否可以正常使用。这本来是一件理所当然的事情,但是事实并非如此。为什么会出现这种情况?
 
Ken Beck
:嗯,我认为造成这种现象的原因比较复杂,是技术和社会因素的综合原因导致了在已部署的软件中存在所有的缺陷。一部分原因是人们抱有软件天生就是 不可靠的态度,客户习惯了这种状况。开发者习惯了接受这种观点。测试者也对此习惯了。我们只是觉得它像天气一样,对它无能为力,但这不是一个负责任的态 度,因为实际上开发者有很多关于它的措施可以采取。从技术上来说,可以通过测试驱动开发、自动化集成测试、持续集成等手段;从社会学的角度来讲,端正自己 的态度,不想推出具有缺陷的软件。以及加强开发团队成员之间的交流和关系等。
 
记者:你所熟悉的这些研究也说明了现在有如此众多失败的软件项目的原因。敏捷方法能拯救它们吗?还是只是一个临时的解决办法?
 

Ken Beck
:敏捷方法是失败软件项目的救星吗?我认为许多软件项目依然会失败,问题是除非你非常深入的了解这些软件项目,你不知道会失败的是哪一个。那么敏 捷方法是它的救星吗?不。我认为它依然会失败,因为好的想法并不一定在实践中产生好的结果。敏捷开发可以带给你的一件事情是:让这些项目失败的更快、损失 的更少,因为你可以将时间和精力用于开始做下一件事情。
 
记者:对于极限编程,你提到隔几个星期进行一次迭代( iterations ),而不是六个月到一年,你如何定义这个迭代周期,以及软件发布的周期?
 
Ken Beck
:在极限编程中的基本周期,基本的计划周期是一个星期,这是非常合理的,因为它是根据人们工作的时间来定的。在每个星期结束的时候,这个软件应该比这一星期开始的时候具有更多的功能。
 
极限编程( XP )与其他敏捷方法相比如何?比如 Scrum
 
关于极限编程我比较喜欢的一件事情是其全面性。它从关于与好的软件开发一致的观点的全面讨论开始。介绍了一些基本原则,介绍了获得我们讨论的某种目标的具体的实践。因此我认为极限编程区别于其他方法的特点是它具有这种全面性。
 
记者:你能指出一个使用极限编程完成的比较突出的软件项目吗?
 
Ken Beck
:例如 Carfax
 
记者:我们曾经听过 牛仔编程( cowboy coding 的叫法,敏捷方法和牛仔编程有什么区别?
 
Ken Beck
:我偶尔会体验一下牛仔编程方式,尽管它在我的工作中不占有重要地位。在牛仔编程中,你可以像一个勇士一样去编程,你会对自己的工作感到很满意,因为你认为这个世界上再没有别人可能作出和你的一样的东西。
 
极限编程风格的开发也是需要勇气的;这一点它与牛仔编程类似。但是牛仔编程是完全不透明的,而极限编程则是透明的。牛仔编程是一种个体行为,而极限编程是一种团队行为。不仅仅是程序员一起工作,还包括用户、管理者和测试者。因此我认为它们还是有差异的。
 
在极限编程风格中,早早结束编码是因为可以更快的看到真正的用户反馈,从而继续改进。一个牛仔式的程序员也会做同样的事情。或许你刚刚介绍了一半问题的定 义,它们会说, 好的,我明白了 ,然后就去开始编程。是的,这一点看上去和极限编程团队有些类似,但是两者实际上是不同的,因为牛仔式程序员已经结束了 这次交谈,而 XP 团队则是才刚刚开始这次交谈。
 
记者:牛仔编程有成功的时候吗?
 
Ken Beck
:当然,在短期内它具有巨大的风险和巨大的成本、巨大的隐形成本。我有过使用它的经历,但是它有时候会效果不错。
 
记者:有的软件项目是由分散在不同地区的团队成员在不同的时间来进行开发的,在这种情况下的开发情形如何?敏捷方法可以解决这个问题吗?
 
Ken Beck
:是的,这就是我大多数时间的工作方式,因为我住在南俄勒冈州,出于生计,我的大部分时间仍在编程。因此我一直在进行着跨地区的开发工作。时区是 一个挑战,但是最大的挑战是保持团队成员之间的关系。这是一件非常困难的事情。如果你能做到这一点,如果你的团队之间有良好的关系,那么你就能制定出技术 的详细信息,例如谁什么时候进行了重构,谁加入了什么代码和已经作出的程序。
 
记者:对于 Java .Net ,敏捷方法和极限编程适合吗?
 
Ken Beck
:一个技术平台如果可以让你以较低的成本进行修改,它就更适合敏捷开发。你当然可以在 Java .Net 中使用敏捷方法。
 
记者:在敏捷编程中有什么比较重要的事情吗?
 
Ken Beck
:是的,那就是你在一个技术中需要的东西。在一个技术平台中它真的很有帮助。我的父亲一直在从事敏捷开发的技术方面工作,以汇编语言为微处理器编程。他使用自动化测试、增量设计,他频繁发布小版本,他写绝对可靠的代码。
 
记者:那么像 AJAX Ruby PHP 等脚本语言呢?它们适合敏捷编程吗?
 
Ken Beck
:当然。举个例子说, Ruby 来自于以人为中心的语言。你可以通过一种非常具有可维护性的风格编写 Ruby 代码,在很长时间内可以非常轻松的修改。我担心的是当你使用数据库的时候,这种修改可能会突然变得非常困难。
 
记者:和 Ruby 语言有关吗?
 
Ken Beck
:一般来说是和关系数据库有关。但是敏捷社区正在推出解决这个问题的技术。厂商也正在让数据库接受增量修改。
 
记者: Web 开发如何?它是否与敏捷开发特别适合?还是它只是另一个应用程序领域?
 
关于 Web 开发的最伟大的地方之一是其开发非常省钱。而且如果你一直在做部署的话,简单的把它放到一些服务器上就可以了。传统应用软件的刻录成光盘然后进行分发,部署的成本要大很多。

2015-05-13 21:16:02 josonchen 阅读数 213
  • 体验极限编程(XP)

    极限编程,英文:Extreme Programming,简称:XP编程,这是一种轻量、、强调适应变化、适合中小型项目的项目管理方法。本课程为你分享极限编程的10多种佳实践。

    10801 人正在学习 去看看 张传波
什么是敏捷开发?

一种以人为核心、迭代、循序渐进的开发方法。

什么是敏捷开发?

一种以人为核心、迭代、循序渐进的开发方法。

在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟。他们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。

通过这项工作,他们认为:


·个体和交互 胜过 过程和工具

·可以工作的软件 胜过 面面俱到的文档

·客户合作 胜过 合同谈判

·响应变化 胜过 遵循计划

 


并提出了以下遵循的原则:


我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。

在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。

在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。

工作的软件是首要的进度度量标准。

敏捷过程提倡可持续的开发速度。

责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

不断地关注优秀的技能和好的设计会增强敏捷能力。

简单是最根本的。

最好的构架、需求和设计出于自组织团队。

每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。


参看《敏捷开发横空出世




极限编程(XP)是一种轻量级的软件开发方法论,XP从实践中来,是对实践的总结,也是经过实践检验的,其主要特征是要适应环境变化和需求变化,充分发挥开发人员的主动精神。XP承诺降低软件项目风险,改善业务变化的反应能力,提高开发期间的生产力,为软件开发过程增加乐趣,相信这些足以吸引每个人的眼球。

在XP的项目开发中,首先引入了四个变量:成本、时间、质量和范围,通过研究变量之间的相互作用,将项目开发分析的更加透彻,成功讲述一个项目成功的原则。

为了能成功地实施XP,XP制定四个准则:沟通、简单、反馈和勇气

和十二条原则:计划游戏、小版本、隐喻、简单设计、测试、重构、结队编程、代码集体所有、持续集成、每周工作40小时、现场客户、编码标准

以及对开发人员的工作要求:编码、测试、倾听和设计。

XP是一个非常庞大的知识库,每一项都是一门值得深究的学问。提出这些要求和原则后,XP有提出了一系列的解决方案,也就是策略,其中包含:管理策略、设施策略、计划策略、开发策略、设计策略和测试策略。在真正去实现XP时,XP又提供了将策略成功应用的实践。可以说XP为你的软件开发的指导老师。

XP是从实践中来的,应此有好多人围绕XP发表了一些自己的实践经验,其中主要包括:测试驱动开发、结队编程、重构和极限编程工具。

参看《敏捷开发的七种武器

对敏捷设计的认识: http://jigee.cnblogs.com/archive/2006/06/25/435113.html

极限编程与敏捷开发: http://tech.acnow.net/Html/Program/soft_project/SoftProcess/2005-8/7/23175325.shtml

敏捷软件开发(上篇) http://sd.csdn.net/n/20060809/93506.html
敏捷软件开发(中篇) http://sd.csdn.net/n/20060809/93507.html
敏捷软件开发(下篇) http://sd.csdn.net/n/20060809/93508.html


来源:http://www.cnbruce.com/blog/showlog.asp?log_id=1015

2018-12-09 19:33:39 wb175208 阅读数 278
  • 体验极限编程(XP)

    极限编程,英文:Extreme Programming,简称:XP编程,这是一种轻量、、强调适应变化、适合中小型项目的项目管理方法。本课程为你分享极限编程的10多种佳实践。

    10801 人正在学习 去看看 张传波

极限编程是敏捷开发的一种方法,极限编程针对小型的开发团队来说是一个不错的方法.

极限编程本质是务实主义的体现,快速稳定的实现每一个用户要求,是极限编程的基本要求。

1.客户尽量和开发人员在一起,一是可以知道开发的进度;二是可以和开发人员进行沟通,实时调整功能点的优先级。

2.对用户提出的功能点进行分拆,比如用户提出一个比较大的功能点,作为开发人员可以根据这个用户需求分拆成几个小的开发功能,并且给这几个功能点分别优先级;

3.每实现一个用户功能及时的给用户展示并且记录下用户的反馈;

4.在开发过程中遇到的问题,提出来让用户知道你的问题,并且根据问题的大小和功能的优先级调整开发的顺序;

5.小的功能版本以每两周作为一个开发周期,每三个月作为一个大的发布周期,发布计划并不是一成不变的,客户可以随时改变计划内容。客户可以取消或者添加功能点;

6.整个项目的代码归开发团队所有,每个人都有权力修改其中的每一句代码(前提是要知道如何修改);

7.软件项目不是全速的算跑,而是马拉松长跑。项目已启动就全速尽力狂奔的团队,到最后会筋疲力尽。而是应该保持一个适当的速度匀速前进。

8.管理人员(项目管理人员或者客户管理人员)不必采用威胁或者恳求开发人员达到他们想要的结果。

没有更多推荐了,返回首页