软件开发方法----XP_第1页
软件开发方法----XP_第2页
软件开发方法----XP_第3页
软件开发方法----XP_第4页
软件开发方法----XP_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件开发方法软件开发方法-XP 主题主题什么是什么是XP方法?方法?发展沿革发展沿革主要思想主要思想项目应用案例?项目应用案例? 什么是什么是XP方法?方法?eXtreme ProgrammingXP 是以开发符合变化的客户需求的软件为目标而产生的一种方法, 它的成功得益于它对客户满意度的特别强调,XP 使开发者能够更有效的响应客户的需求变化,哪怕在软件生命周期的后期。是一种经历过很多实践考验的软件开发方法. 已经被成功的应用在许多大型的公司,如:Bayeris che Landesbank , Credit Swis s Life,DaimlerChrysler, First Union N

2、ational Bank, Ford Motor Company and UBS. 发展1990s,Kent Beck and Ward Cunningham together had experienced an approach to software development that made every thing seem simple and more efficient. March, 1996, Kent started a project at DaimlerChrysler using new concepts in software development. The re

3、sult was the Extreme Programming (XP) methodology. What Kent came to realize is that there are four dimensions along which one can improve any software project, which are Communication, Simplicity, Feedback, and Courage. These are the four values sought out by XP programmers. The Rules and Practices

4、 PlanningDesigningCodingTesting Planning User stories are written. Release planning creates the schedule. Make frequent small releases. The Project Velocity is measured. The project is divided into iterations. Iteration planning starts each iteration. Move people around. A stand-up meeting starts ea

5、ch day. Fix XP when it breaks. User stories类似于类似于use cases但不一样但不一样用于估计用于估计release planning meeting的的时间时间替代详细的用户需求规格说明书替代详细的用户需求规格说明书由用户书写,类似于用户由用户书写,类似于用户“场景场景”,但,但不局限于界面的描述不局限于界面的描述没有技术术语没有技术术语能够成为验收测试的依据能够成为验收测试的依据 Release planning通过召开通过召开 release planning meeting 来来制订一份发布计划制订一份发布计划发布计划详细描述用户所要求的各

6、版本发布计划详细描述用户所要求的各版本要求,这为后面的迭代计划打基础要求,这为后面的迭代计划打基础 small releases经常向客户发布系统的迭代版本经常向客户发布系统的迭代版本在在release planning meeting上确定哪上确定哪些功能单元对用户业务有重要影响并可些功能单元对用户业务有重要影响并可在早期加入到系统中在早期加入到系统中越晚向用户介绍系统的重要特征,开发越晚向用户介绍系统的重要特征,开发队伍所获得的队伍所获得的“搞定搞定”系统的时间就越系统的时间就越短。短。 Project Velocity项目周转时间是衡量项目工作进度速度项目周转时间是衡量项目工作进度速度的

7、值。的值。“负载因子负载因子”近期被引进用于项目周期近期被引进用于项目周期的测量的测量 Iterations迭代式开发增加了开发过程的敏捷性迭代式开发增加了开发过程的敏捷性将总体进度划分为一系列长度为将总体进度划分为一系列长度为1-3周的周的小的迭代过程小的迭代过程. 迭代周期固定且一致,成迭代周期固定且一致,成为项目的为项目的“心跳心跳” 。 Iteration planning在每个迭代的开始召集迭代计划会议,在每个迭代的开始召集迭代计划会议,明确本次迭代任务明确本次迭代任务每次迭代每次迭代1-3周长周长由用户在由用户在 User stories中确定最有价值中确定最有价值的特征作为本次迭

8、代的目标的特征作为本次迭代的目标上次迭代时没通过验收测试的特征应当上次迭代时没通过验收测试的特征应当加入本次迭代加入本次迭代 Move people around让所有人多掌握技能,避免知识孤岛和让所有人多掌握技能,避免知识孤岛和开发瓶颈开发瓶颈交叉培训,交叉培训,“结对编程结对编程”并非一个人掌握所有的代码,而是要每并非一个人掌握所有的代码,而是要每个人掌握大多数的代码,所需要的人员个人掌握大多数的代码,所需要的人员可以随时被指派到最需要的地方,实现可以随时被指派到最需要的地方,实现人员的人员的“负载平衡负载平衡”每次迭代每个人试图做系统新的部分,每次迭代每个人试图做系统新的部分,Pair

9、programming 能够保证这种形式能够保证这种形式 stand-up meeting目标:在整个开发组(而非个别开发人目标:在整个开发组(而非个别开发人员)中进行沟通员)中进行沟通每天早上一次站立会议,主要沟通问题、每天早上一次站立会议,主要沟通问题、方案,以集中小组注意力方案,以集中小组注意力避免了策划会议的时间避免了策划会议的时间daily stand up meeting 不同于一般浪不同于一般浪费时间的会议费时间的会议 Fix XP一旦破坏了一旦破坏了XP流程,就马上更正!流程,就马上更正!可根据具体项目制定可根据具体项目制定XP规则,一旦制定规则,一旦制定就必须执行,直到规则变

10、更就必须执行,直到规则变更所有人员都明确知晓规则所有人员都明确知晓规则 DesigningSimplicity. Choose a system metaphor. Use CRC cards for design sessions. Create spike solutions to reduce risk. No functionality is added early. Refactor whenever and wherever possible. Simplicity is the Key决不增加没有列入到进度中的功能决不增加没有列入到进度中的功能“简单化简单化”其实并不简单其实并不

11、简单 system metaphor为系统选择一种为系统选择一种metaphor使得开发小组使得开发小组能够为类及方法进行统一的命名能够为类及方法进行统一的命名. 命名方式易理解命名方式易理解. CRC cardsClass, Responsibilities, and Collaboration (CRC)CRC cards的最大价值在于引导开发人员的最大价值在于引导开发人员摆脱过程模型,精确掌握摆脱过程模型,精确掌握OO技术技术CRC Cards 允许所有的人参与设计,参与允许所有的人参与设计,参与的人越多,就会有更多的好的主意引入的人越多,就会有更多的好的主意引入 spike solut

12、ions创建关键问题解决方案,解决关键的技术和设创建关键问题解决方案,解决关键的技术和设计问题计问题大多数大多数 spikes可能都不足以得到保持,有可能可能都不足以得到保持,有可能被丢弃被丢弃. 但制作但制作SPIKE的目标降低技术风险;的目标降低技术风险;一旦技术困难对系统的开发造成了威胁,立即一旦技术困难对系统的开发造成了威胁,立即派一对开发人员关注于该问题一至两周,以降派一对开发人员关注于该问题一至两周,以降低潜在的风险低潜在的风险 No functionality is added early切记不要实施你认为日后切记不要实施你认为日后有用的额有用的额外特征外特征只有只有10% 的额

13、外特征会有用的额外特征会有用只关注目前进度中所要求的内容只关注目前进度中所要求的内容 Refactor whenever and wherever possible随时随地可以对已做过的事重新考虑随时随地可以对已做过的事重新考虑毫不留情地将设计、编码简单化,简单毫不留情地将设计、编码简单化,简单得足够容易理解、修改和扩展得足够容易理解、修改和扩展所有的事只表达一次所有的事只表达一次修饰得太好的系统往往到后期赶不上进修饰得太好的系统往往到后期赶不上进度要求度要求 Coding The customer is always available. Code must be written to ag

14、reed standards. Code the unit test first. All production code is pair programmed. Only one pair integrates code at a time. Integrate often. Use collective code ownership. Leave optimization till last. No overtime. The customer is always available随时能联系客户是随时能联系客户是XP方法的基本要求方法的基本要求之一之一XP的所有阶段都要求客户的强参与的所

15、有阶段都要求客户的强参与最好有客户派员直接参与开发组最好有客户派员直接参与开发组把客户把客户“吊住吊住”,并将客户由新手培,并将客户由新手培养成为专家,养成为专家,开发组需要专家开发组需要专家 Code must be written to agreed standards所有代码必须采用统一标准以便理解所有代码必须采用统一标准以便理解Smalltalk projects : Smalltalk Best Practice Patterns Code the unit test first创建单元测试能够帮助开发者清醒地意创建单元测试能够帮助开发者清醒地意识到什么是真正需要的识到什么是真正需要

16、的需求是由测试活动明确下来的需求是由测试活动明确下来的 All production code is pair programmed所有发布的代码都由两个程序所有发布的代码都由两个程序员在一台机器上共同开发完成。员在一台机器上共同开发完成。结对编程的最好方式是两人共结对编程的最好方式是两人共同坐在显示器前,将键盘和鼠同坐在显示器前,将键盘和鼠标在两人之间标在两人之间“滑动滑动”,一人,一人考虑所创建的方法(考虑所创建的方法(Method),),而另一人同时考虑该方法如何而另一人同时考虑该方法如何在类中得到更好的体现。在类中得到更好的体现。适应结对编程需要时间,必须适应结对编程需要时间,必须度过

17、开始面临的尴尬境况度过开始面临的尴尬境况 Sequential Integration 每次加入一个模块做集成每次加入一个模块做集成 Integrate often开发人员应不断地将代码集成到代码库开发人员应不断地将代码集成到代码库中,几小时一次,绝不超过中,几小时一次,绝不超过1天天每个人需要在最后的版本上工作每个人需要在最后的版本上工作持续集成能够在早期避免或发现一些兼持续集成能够在早期避免或发现一些兼容性问题。容性问题。“现在付钱还是以后付更多现在付钱还是以后付更多的钱?的钱?” Use collective code ownership“集体拥有代码集体拥有代码”鼓励每个人对项目的所鼓

18、励每个人对项目的所有部分提出新想法有部分提出新想法任何开发人员都可改变任何代码以增加任何开发人员都可改变任何代码以增加功能、修改错误功能、修改错误没有人会成为变更的瓶颈没有人会成为变更的瓶颈 Leave optimization till last在项目快结束之前不要去优化在项目快结束之前不要去优化永远不要试图永远不要试图猜测猜测系统的瓶颈在哪里,系统的瓶颈在哪里,去度量它、让系统动起来、修正系统、去度量它、让系统动起来、修正系统、去让系统变的更快!去让系统变的更快! No overtime.超时工作会吞噬开发组的精神和热情超时工作会吞噬开发组的精神和热情利用版本计划会来改变项目的范围和时利用

19、版本计划会来改变项目的范围和时间要求间要求项目进度拖延时通过增加资源来改进也项目进度拖延时通过增加资源来改进也不是推荐的方法不是推荐的方法 Testing All code must have unit tests. All code must pass all unit tests before it can be released. When a bug is found tests are created. Acceptance tests are run often and the score is published. All code must have unit tests单元测试是单元测试是XP方法中的小界石,但与传统的单方法中的小界石,但与传统的单元测试略有不同元测试略有不同1、要创建或下载一些单元测试工具以便能够、要创建或下载一些单元测试工具以便能够自动生成测试数据自动生成测试数据2、测试系统中所有的类、测试系统中所有的类3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论