XP基础课程.ppt
《XP基础课程.ppt》由会员分享,可在线阅读,更多相关《XP基础课程.ppt(84页珍藏版)》请在三一文库上搜索。
1、Extreme Programming,XP基础课程,内容概要 为什么需要XP 敏捷过程是软工发展的必然及最新成果 重要概念 12个重要惯例和规则 XP的实施过程 总结,前言,Software development fails to deliver; and fails to deliver value. This failure has huge economic and human impact. We need to find a new way to develop software. - Kent Beck,5, Copyright 2002 Chinaxp. All rights
2、 reserved,我们为什么需要XP,6,我们为什么需要XP, Copyright 2002 Chinaxp. All rights reserved,7,我们为什么需要XP,公司: 1) 培养团队合作精神,稳定开发队伍; 2) 提高开发人员的水平; 3) 提高项目成功率,降低开发成本。 项目经理: 1) 更好地和用户沟通,更清晰地理解用户需求; 2) 更充分地使用资源,更科学地调配资源,更精确地掌握开发进度。 Team Lead和Architect: 1) 设计更加完善; 2) 更有效地更新知识,得到其他成员更多的尊重。 程序员: 1) 学习系统设计和项目管理; 2) 提高学习和工作效率,
3、受到重视,减少加班时间。, Copyright 2002 Chinaxp. All rights reserved,8,Fortune 500 公司中成功应用XP的公司包括Ford,Daimler-Chrysler,First Union National Bank,IBM,HP等等。 2-10人的小规模开发队伍(小规模开发队伍 小规模项目)。 越来越多的公司开始使用敏捷开发过程,或者将其与RUP等开发过程结合使用。,谁在用XP, Copyright 2002 Chinaxp. All rights reserved,9,什么是XP Kent Beck 1996,XP is a lightwe
4、ight methodology for small to medium sized teams developing software in the face of vague or rapidly changing requirements. - Kent Beck. XP是勇气,交流,反馈和简单。 XP是软件开发过程中的纪律,它规定你:必须在编程前些测试,必须两个人一起编程,必须遵守编程规范。 XP是把最好的实践经验提取出来,形成了一个崭新的开发方法。, Copyright 2002 Chinaxp. All rights reserved,Agile Process,软件工程发展的必然
5、 软件工程的最新成果 www.chinaxp.org,11,软件生命期, Copyright 2002 Chinaxp. All rights reserved,12,软件工程中的第一个模型,Waterfall模型 Royce 1970, Copyright 2002 Chinaxp. All rights reserved,13,有反馈的Waterfall模型, Copyright 2002 Chinaxp. All rights reserved,14,V 模型(另一种改良), Copyright 2002 Chinaxp. All rights reserved,15,优点 文档驱动的开
6、发模型。 改良后的模型很注重反馈和测试,其中V模型提出了测试驱动开发的概念。 在需求非常明确的前提下可以使用,也适用于有长期专职开发人员的小型项目开发。 不足: 严格限定了开发的各阶段,缺乏迭代性。 缺乏对变化的支持。, Copyright 2002 Chinaxp. All rights reserved,16,原型法 Brooks 1975, Copyright 2002 Chinaxp. All rights reserved,17,目的是和用户一起开发并完善一个原型,从最清楚的需求部分开始。,进化原型法, Copyright 2002 Chinaxp. All rights reser
7、ved,18,快速原型法,Build 1,Build 2,Build 3,(也称为 Throw-it-away),目的是理解需求,从不清楚的需求部分开始。, Copyright 2002 Chinaxp. All rights reserved,19,优点: 需求驱动的开发模型。 帮助理解需求。 增强和用户的交流,增加用户好感。 不足: 缺乏结构化的系统和严谨的开发流程,很难作为一个项目进行管理。, Copyright 2002 Chinaxp. All rights reserved,20,作为一种开发模式有很多局限,但“重用” 的思想越来越普及。,面向重用的开发模式, Copyright
8、2002 Chinaxp. All rights reserved,21, Copyright 2002 Chinaxp. All rights reserved,螺旋式开发模型 Boehm 1988,22,优点: 风险驱动的开发模型。 灵活。可以根据风险的处理情况选择需要的阶段(Loop), 因而演变为Waterfall、进化原型等模型。 各阶段都有评估和风险分析,可根据变化调整项目实施过程。 适用于复杂的、风险大的项目。 不足: 需要非常专业的风险评估技术。 需要非常丰富的项目经验。, Copyright 2002 Chinaxp. All rights reserved,23,增量型(例
9、RUP), Copyright 2002 Chinaxp. All rights reserved,24,优点: 开发过程分解为多个迭代过程,每个过程可以有自己的开发模型。 可以快速提交可用的系统,然后根据反馈实施下一个迭代。 不足: 是一个开发框架,对每个迭代的具体过程缺乏支持: 1)如果迭代太少,很容易会蜕变为Code-Fix模式,迭代太多则往往因文档驱动而导致测试和集成的复杂度和费用太大。 2)因而无法克服以往开发模型的不足。经常蜕变成Waterfall模型。, Copyright 2002 Chinaxp. All rights reserved,25,软工革命 Agile Proce
10、ss,程序员进行的是有创造性的脑力活动 以人为本 Open Source的启示 更好的Code Review和测试 对设计过程的重新思考 传统设计的缺陷 编程中的设计和编程外的设计 开发过程应该更多地面向代码而不是文档 轻量级 增量开发的趋势 迭代越来越频繁 新方法有Crystal,Scrum,XP等 XP结合“纪律性”和“适配性”,发展得最好, Copyright 2002 Chinaxp. All rights reserved,26,Principles of Agile Processes,最高目标是能持续地、及早地向客户交付软件; 拥抱变化; 频繁地发布可运行的软件; 客户和开发人员
11、在一起工作; 以人为本; 最重要的衡量开发过程的手段,是可工作的软件; 稳定的开发速度; 敏捷高效的设计; 简单有效; 重视Teamwork; 积极的调整。 http:/www.agilemanifesto.org/principles.html, Copyright 2002 Chinaxp. All rights reserved,27,XP的增量过程, Copyright 2002 Chinaxp. All rights reserved,XP中的重要概念 哲学观 管理 需求 设计,www.chinaxp.org,29,哲学观(Philosophy),交流(Communication),
12、勇气(Courage),简单(Simplicity),反馈(Feedback), Copyright 2002 Chinaxp. All rights reserved,30,管理,发布(Release):每一期开发结束时提交给用户的一个可运行的系统。 迭代(Iteration):一期开发过程中的一个开发周期。它有明确的目标,计划和实现方式,它包含了需求分析、设计、编程、测试等完整的开发过程。一个迭代的长度为1到3 周。在一期开发过程中,所有迭代的长度是相同的,比如都是3周。 小发布(Small Release):处于开发中的系统,每集成一个新功能,都可以称为一个小发布。 理想开发时间:估计完
13、成一项工作所需的持续工作时间,不考虑意外因素。, Copyright 2002 Chinaxp. All rights reserved,31,需求,SPIKE:对不确定的需求和设计等,通过写一些程序、进行详细设计或者演算等等方式做探测和尝试,以确定可行性。这些探测过程称为SPIKE。 User Story:是对用户的一个需求的一段简洁清晰的描述,该段描述有三个属性,即商业优先级、开发时间和风险。从某个角度看,XP过程是面向User Story的。 故事卡:用户把User Story的内容和属性写在一张卡片上,该卡片即故事卡。 例,MSDN中的例子Island Hopper News: (1)
14、 客户浏览分类广告;(2) 客户发布分类广告;, Copyright 2002 Chinaxp. All rights reserved,32,设计,1. CRC: Class Responsibility Collaboration。1989年, Kent Beck和Ward Cunningham提出的OO分析和设计方法,现在得到了广泛应用。 Responsibility:Class的行为。 Collaboration: Class之间的相互联系和作用;Collaborator指和某行为(Responsibility)相关的Class。 可以在卡正面加上父类名,子类名;可以在卡背后加上属性。
15、, Copyright 2002 Chinaxp. All rights reserved,33,设计,2. Engineering Task:Team一起分析设计一个User Story,把该Story要完成的事情分解,就形成了一些任务(Engineering Tasks)。这些任务要足够小,以至于每个程序员都非常清楚要做什么,并能估计出完成该任务所需要的理想开发天。 每个程序员挑选了一个Task后,就成为该Task的Owner,并估计完成该Task所需的理想开发天数。 Task的粒度由理想开发天限制,大于1天且小于3天。 从某个角度看,程序员的工作安排是面向Task的。 3. Task卡:
16、Task的内容、Owner和理想开发天都记录在一张Task卡上。 例: 上个例子中每个CRC卡可以做为一个单独的任务被承担和估计。, Copyright 2002 Chinaxp. All rights reserved,XP的惯例和规则,www.chinaxp.org,35,十二条惯例和规则,On-Site Customer (现场客户) 计划项目 (Planning Game) 频繁地小规模发布软件 (Small Releases) 简单设计 (Simple Design) 测试驱动开发 (Test Driven Development) 持续集成 (Continuous Integrat
17、ion),集体拥有代码 (Collective Code Ownership) 编程规范 (Coding Standards) 重构 (Refactoring) System Metaphor (系统隐喻) Pair Programming (结对编程) 平稳的工作效率 (Sustainable Pace), Copyright 2002 Chinaxp. All rights reserved,36,On-Site Customer,客户是Team成员,在开发现场和开发人员一起工作。 传统的客户任务一般是讲解需求,运行验收测试,接收发布的系统。XP新增加的任务: (1) 写User Stor
18、y (2) 评估User Story的商业优先级 (3) 为每个User Story定义验收测试 (4) 计划开发内容 (5) 调控开发过程 Any More?, Copyright 2002 Chinaxp. All rights reserved,37,On-Site Customer,建立商业模型,把隐藏在客户需求下的原则传授给开发人员: 程序员理解的是表象,而不是本质; 程序员分担任务的过程支解了对他们商业模型的理解; 某些开发外包或分阶段开发(例如增量、迭代等)导致“知识泄露”。 参加设计过程: 和程序员一起找出Metaphor,导引设计方向: 在Metaphor的帮助下,定义更有效
19、更实际的功能测试,给程序员的设计制定了规范; CRC卡鼓励客户更多地参加设计过程。, Copyright 2002 Chinaxp. All rights reserved,38,System Metaphor,“The system metaphor is a story that everyone - customers, programmers, and managers - can tell about how the system works.” Kent Beck Team将Domain/Sub-Domain Model,Design/Sub-Design Model以及一些关键概
20、念等等抽象化为比喻。通过这些比喻,加强客户和程序员之间的相互理解,消化积累知识,指导设计开发的方向。 例: Market 发布/浏览,价格洽谈,生成和履行合同; String,Tree,Package,Chartroom,Spider,Robot ; 电影后期制作 邮递 电影院播放电影。, Copyright 2002 Chinaxp. All rights reserved,39,System Metaphor,Metaphor的形成过程,是客户建立并抽象商业模型和商业概念的过程,是程序员建立并抽象设计模型和设计概念的过程。 Metaphor使客户和程序员用共通的模型和语言进行交流 “One
21、 Team, one language”。 Metaphor可以帮助减少“知识泄露”和“支解知识”。 Metaphor是设计过程的航标 真正灵活有效的设计是针对商业原则的设计,而不是针对商业原则表现形式的设计,更不是脱离商业需求目的的学术设计。 随着开发的继续,Team会找到更好的Metaphor。这是知识细化、深化的结果,是“持续学习”(Continuous learning)的过程;是对商业模型和设计模型的持续重构。, Copyright 2002 Chinaxp. All rights reserved,40,计划项目, Copyright 2002 Chinaxp. All right
22、s reserved,41,测试驱动开发,(在第二天的课程将详细阐述), Copyright 2002 Chinaxp. All rights reserved,42,重构,减少重复设计,优化设计结构,提高技术上的重用性和可扩展性。 在Metaphor指引下的重构,是为商业模型服务的。不要把重构变成不断的盲目精简代码。 重构和编程前的计划型设计(Planned Design)结合,使XP的简单设计可行有效。 XP提倡毫不留情的重构(Refactor mercilessly)。 任何人可以重构任何代码,前提是重构后的代码一定要通过100%测试单元测试后才能被Check-in。 可以根据需要,将一
23、个迭代的全部目标定为重构。 不要太在意什么是最简单的设计 愿意在最后重构,比知道如何做简单的设计重要得多。,(在第三天的课程将详细阐述), Copyright 2002 Chinaxp. All rights reserved,43,简单设计 XP中的演进设计(Evolutionary-design),如果没有它和众多惯例规则之间的耦合,XP的演化设计就蜕化成CODE-FIX。 XP的演化设计是在Up-front design和Refactoring之间找到新的平衡。, Copyright 2002 Chinaxp. All rights reserved,44,简单设计 简单可行,不要增加现
24、阶段不需要的复杂功能。,简单设计 Do the simplest thing that could possibly work;You arent going to need it(YAGNI)。 标准(依重要性):通过所有测试,可读性高的代码,避免重复,最少数量的类别或方法。 System Metaphor给设计提供了指引,加强Team对设计的理解; 第一个迭代搭建了基本的系统框架。 以后的迭代过程,是在反馈和编程的基础上做交互式设计,减少了设计的投机性。 迭代过程中的CRC卡帮助Team交流设计思想,简化了设计文档。 重构对设计进行优化。, Copyright 2002 Chinaxp.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XP 基础 课程
链接地址:https://www.31doc.com/p-3889045.html