
极限编程精要.ppt
24页极限编程精要整理:余建超什么是极限编程Extreme Programming(极限编程,简称XP ) 是一个轻量级的、灵巧的软件开发方法;同 时它也是一个非常严谨和周密的方法它的基础 和价值观是交流、简单、反馈和勇气;即,任何 一个软件项目都可以从四个方面入手进行改善: 加强交流;从简单做起;寻求反馈;勇于实事求 是XP是一种近螺旋式的开发方法,它将复杂 的开发过程分解为一个个相对比较简单的小周期 ;通过积极的交流、反馈以及其它一系列的方法 ,开发人员和客户可以非常清楚开发进度、变化 、待解决的问题和潜在的困难等,并根据实际情 况及时地调整开发过程 极限编程的起源XP是由Kent Beck在1996年提出的Kent Beck 在九十年代初期与Ward Cunningham共事时,就 一 直共同探索着新的软件开发方法,希望能使软件开 发更加简单而有效Kent仔细地观察和分析了各种 简化软件开发的前提条件、可行性以及面临的困难 1996年三月,Kent终于在为Daimler Chrysler所 做的一个项目中引入了新的软件开发观念——XP 极限编程的起源-标志项目C3是克莱斯勒公司综合工资系统(Chrysler Comprehensive Compensation)的简称,是XP的“典范”项 目。
2000年2月,在实施四年后被撤销XP的核心价值l沟通l简单l反馈l勇气XP的核心价值-沟通项目中的所有问题都可以追溯到某个关 键点上,都是因为相关人员没有能够就一些 重要问题进行充分、及时的交流XP认为 沟 通是必不可少的XP的核心价值-简单XP 建议在考虑过程和编写代码时,永远都要 使用尽可能简单的方式只要它能工作就可以,与 其实现一个复杂的的系统,不如设计一个能够满足 目前需要的、简单的系统,因为你所考虑的情况可 能永远都不会发生按照 Kent 的说法,“XP 就是 预 测它通过今天做最简单的事情,来避免将来做更 复杂但可能永远也不会用到的事情 XP的核心价值-反馈及时经常地从客户、团队以及真正的最 终用户哪里听取具体的反馈意见,会让开发 者有更多的机会尽可能早的改进其工作质量 这样就可以把握住正确的方向,从而少走 弯路XP的核心价值-勇气如果没有以最快的速度前进,就会失败 在您遇到困难时勇气会给您力量克服它, 例如当你必须放弃某些代码或者事后做一些 变更的时候XP的实践1、计划游戏 2、测试 3、结对编程 4、重构 5、简单设计 6、代码集体所有7、持续集成 8、现场客户 9、小版本 10、每周工作40小时 11、编码标准 12、系统隐喻XP的实践-计划游戏计划游戏的主要思想就是先快速地制定一份概 要计划,然后随着项目细节的不断清晰,再逐步完 善这份计划。
计划游戏的结果是一套包含用户需求 故事的索引卡(这些需求故事驱动项目的迭代)以 及后续的一两个版本的概要计划这种形式得以 发挥作用的关键因素是:让客户负责业务决策而让 开发团队负责技术决策计划需要不断被调整、改 进计划游戏-开发团队需要决策l估算开发一个需求故事需要的时间l估算采用不同可选择技术需要的成本l组件团队l估计每个需求故事的风险l决定一次迭代种需求故事的开发顺序(先 实现风险大的需求故事可以降低整体风险 )计划游戏-客户需要决策l范围(一个发行版本需要实现的需求故事 和每一次迭代需要实现的需求故事)l版本发行日期l优先级(根据业务价值决定先开发哪些需 求特性)XP的实践-测试XP有两类测试:单元测试、验收测试 开发人员在编写代码的同时编写单元测试用 例客户在定义了需求故事后就开始编写验 收测试用例单元测试告诉开发人员系统是 否能在每个功能点上正常运行验收测试告 诉整个团队,系统是否能按客户的要求运行 XP的实践-结对编程l所有设计决策都牵涉到至少两个人l至少有两个人熟息系统的每一部分l至少不可能出现两个人同时疏忽的测试或 其他任务l改变结对的组合可以在团队范围内传播知 识l代码至少能被一个人审查XP的实践-重构重构是一种对代码进行改进而不影响功 能实现的技术。
重构时机:实现特性前和实现特性后 开发人员尝试改变已有代码并确定是否能使 实现新特性更容易XP的实践-简单设计XP认为设计非常重要,应由一部分人不间断 地进行我们总是尝试先使用在某一点上能工作的 最简单的设计,当现实改变时再 进行调整 什么是简单设计: 1、能运行所有的测试用例 2、不包含重复代码 3、能清晰表达程序员的所有代码的意图 4、尽可能包含最少的类和方法XP的实践-代码集体所有团队中的每个成员都应该拥有对代码进 行改进的权利每个人都要对代码负责在 每一次集成之前和集成之后都要运行单元测 试不管是代码的哪一部分,如果是您破坏 了某些特性,那么您就必须负责将其修复XP的实践-持续集成XP要求代码集成的周期必须尽量短,并 且应在确保系统运行的所有单元测试通过之 后执行频繁的集成使得每次集成失败的原 因更为明显(错误一定是由新集成要素引起 的)持续集成将问题解决在日常开发工作 中XP的实践-现场客户l把目标客户引入开发过程中,时刻保持与 客户的沟通l应用设计工具快速把软件功能界面展现给 客户,诱导客户快速理解软件功能,以便 挖掘更深层的客户需求XP的实践-小版本优点:小版本发布是一个与客户交流的好办 法, 客户可以针对性提出反馈。
缺点:模块被缩得很小,会影响软件的整体 思路连贯 补充:使用项目管理工具,添加完善的版本 说明信息,使用项目快速发布工具XP的实践-每周工作40小时要点:充分利用工作时间 XP的实践-编码标准项目一开始就要制定完善的编码标准( 命名规则 、异常的处 理 、与性能有关的 方面 等),并且所有项目成员都严格按照 标准的要求去开发,定期进行代码检查XP的实践-系统隐喻在XP中“隐喻“以及“story“的使用可能会让人有 一点不舒服但是,这些术语的使用可以帮助我 们以一种更人性化的方式加以理解,尤其是对客 户而言 从某种程度上来说,隐喻同体系结构 是同意语――他们都着重于从全局描述一个项目 但是体系结构经常会陷于符号与连接的泥潭 而XP使用“隐喻“定义一个从 开发者到商业客户 都可联系的全面一致的主题隐喻用于描述项目 全面的面貌,而Story用于描述个别具体的特征 。
