极限编程实践

1、客户作为团队成员

        谁是客户?XP团队中的客户是指定义产品的特性并排列这些特性优先级的人或团体。

最好是客户和开发人员在一个房间中工作。

 

2、用户故事

        对于做计划而言,了解需求只需要做到能够估算它的程度就足够了,需求的特定细节很可能会随着时间而改变。新系统问世是关注需求的最好时刻。

        在XP中,我们和客户反复讨论,以获取对于需求细节的理解,但是不去捕获那些细节。用户故事(user stories)就是正在进行的关于需求谈话的助记符。它是一个计划工具,客户可以使用它并根据它的优先级和估算代价来安排实现该需求的时间。

 

3、短交付周期

        XP项目每两周交付一次可以工作的软件。

3-1、迭代计划

        每次迭代通常耗时两周。一旦迭代开始,客户就同意不再修改当次迭代中用户故事的定义和优先级别。迭代期间,开发人员可以自由地将用户故事分解成任务(task),并依据最优的顺序来开发这些任务。

3-2、发布计划

        XP团队通常会创建一个计划来规划随后大约6次迭代的内容。它表示了一次较大的交付,通常此次交付会被加入到产品中。发布计划是由一组客户根据开发人员给出的预算所选择的、排好优先级别的用户故事组成。

 

4、验收测试

        验收测试使用能够让它们自动并且反复运行的某种脚本语言编写,这些测试共同来验证系统按照客户指定的行为运行。

        一旦通过一项验收测试,就将该测试加入到已经通过的验收测试集合中,并决不允许该测试再次失败。

 

5、结对编程

        所有的产品(production)代码都是由结对的程序员使用同一台电脑共同完成的。两个人强烈地(intensely)进行着交互,他们都全身心地投入到软件的编写中。

        两人频繁互换角色。结对的关系每天至少要改变一次。团队的每个人都与其他成员一起工作过,并且都参与了迭代中所涉及的每项工作。

        Laurie Williams 和 Nosek 的研究表明,结对非但不会降低开发团队的效率,而且会大大减少缺陷率。

 

6、测试驱动开发

        当为了测试用例通过而编写代码时,这样的代码就被定义为可测试的代码。这样做会强烈地激发你去解除各个模块间的耦合,这样能够独立地对它们进行测试。

 

7、集体所有权

        结对编程中的每一对都具有检出(check out)代码并修改的权力。没有程序员对任何一个特定的模块或技术单独负责。

 

8、持续集成

        第一个检入(check in)的只要完成检入就可以了,所有其他的人负责代码的合并(merge)工作。

 

9、可持续的开发速度

        软件项目是马拉松长跑,团队必须要有意识地保持稳定、适中的速度。

        XP 的规则是不允许团队加班工作。除非是在发版前的一个星期,并且能够一蹴而就,则允许加班。

 

10、开放的工作空间

        团队在一个开放的房间中一起工作,房间中有一些桌子,每张桌子上摆放了两到三台工作站,每台工作站前有给结对编程的人员预备的两把椅子,墙壁上挂满了状态图标、任务明细表、UML图等等。

        密歇根大学的一项研究表明,在“充满积极讨论的屋子(war room)”里工作,生产率非但不会降低,反而会成倍地提高。

 

11、计划游戏

        计划游戏(planning game)的本质是划分业务人员和开发人员的职责。业务人员(即客户)决定特性(feature)的重要性,开发人员决定实现一个特性所花费的代价。

 

12、简单的设计

        XP 团队使他们的设计尽可能地简单、具有表现力(expressive)。

12-1、考虑能够工作的最简单的事情

        XP 团队总是尽可能寻找能实现当前用户故事的最简单的设计。

12-2、你不需要它

        除非有明显的证据表明引入一个基础结构更加合算时,团队才会引入这个基础结构。

12-3、一次,并且只有一次

        XP 不能容忍重复的代码。

 

13、重构

        重构是持续进行的,通过重构,我们可以持续地保持尽可能干净、简单并且具有表现力的代码。

 

14、隐喻

        隐喻(metaphore)将整个系统联系在一起的全局视图:它是系统的未来景象,是它使得所有单独模块的位置和外观(shape)变得明显直观。

        隐喻通常可以归纳为一个名字系统。这些名字提供了一个系统组成元素的词汇表,并且有助于定义它们之间的关系。

        eg.一个每秒60个字符的速度将文本输出到屏幕的系统。

        我们用装卸卡车拖运垃圾来比喻整个系统。缓冲区是小卡车,屏幕是垃圾场,程序是垃圾制造者。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南开大学java考试试题_2014秋学期南开大学《Java语言程序设计》在线作业附答案...

2014秋学期南开大学《Java语言程序设计》在线作业附答案1.下列代码中,将引起一个编译错误的行是(D)。1)public class Test{ 2) int m,n; 3) public Test(){} 4) public Test(inta){ma;} 5) public static void main(String args[]){ 6) Test t1,t2; 7) int j,k;8) j…

张小龙演讲干货:微信的未来在哪?这里有7个答案

来源:钱塘大数据概要:1月15日,以“to be正当时”为主题的2018微信公开课Pro版在广州举行,腾讯集团高级执行副总裁、微信事业群总裁张小龙出席并发表演讲。1月15日,以“to be正当时”为主题的2018微信公开课Pro版在广州…

敏捷软件开发—原则、模式与实践总结

思维导图:https://www.processon.com/view/link/60d46dfb5653bb049a469068

java 配置写成表达式_Java的正则表达式之小结

一直很奇怪为什么Java和Tcl的正则表达式之间有这样的一个差异,即Tcl正则表达式中的转义符\在Java正则表达式中一律会需要写成\\。比如,Tcl的正则表达式为 "^Case\_name\s*\\s*(.*)"对应的Java正则表达式则需要写成 "^Case\\_name\\s*\\\s…

AWS VS 阿里云 VS 腾讯云 国内三大云服务商云主机评测报告

来源:CloudBest概要:近几年,随着国内公有云市场规模的不断增长,以阿里云、腾讯云为代表的本土云服务商,以及以AWS、微软Azure为代表的海外云服务商,成为公有云市场最大的赢家,市场寡头化趋势已经…

单一职责原则(SRP)

单一职责原则(The Single Responsibility Principle,SRP) 就一个类而言,应该仅有一个引起它变化的原因。 为何要把两个职责分离到单独的类中? 因为每一个职责都是变化的一个轴线(an axis of change&…

数独java界面基础_java版数独游戏界面实现(二)

本文实例为大家分享了java版数独游戏界面实现的具体代码,供大家参考,具体内容如下实现效果图:这里写图片描述主函数用于启动程序:package hlc.shudu.app;import hlc.shudu.src.ShuduHelper;import hlc.shudu.ui.ShuduMainFrame;pu…

多国相继出台政策法规:为「自动驾驶」的「创新发展」保驾护航

来源:腾讯研究院曹建峰 腾讯研究院法律研究中心高级研究员祝林华 腾讯研究院法律研究中心助理研究员人工智能等新技术,正从科幻概念逐步落地到各行各业,将从重塑驾驶、医疗、制造等领域开始,全面重构人类社会和生活。自动驾驶汽…

测试替身之类型

测试桩Stub 桩:截断的或非常短的物体。 测试桩,用最简单的可能实现代替Real。 基本实现:所有方法仅一行,返回默认值。 public class LoggerStub implements Logger {public void log(LogLevel level, String message) {// still…

华为《5G业务商业价值评估》白皮书!

来源:5G蹇飒:华为公司商业与网络咨询部咨询专家。概要:在过去不长的时间里,5G技术不断取得重大进展,5G发展之路更为清晰。未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学…

java正则匹配的坑_java正则表达式入坑指南

在日常开发工作中,无论你使用的语言是java、python、shell、golang还是C#, 正则表达式是编程语言中几乎绕不开的话题。有了它,可以帮你快速定位到符合条件的文本内容。今天小编带大家一起来学习下正则表达式,相信通过这篇文章的介…

这有5种来自大自然「馈赠」的AI技术及其应用,你知道多少?

原文来源:Towards Data Science作者:Luke James「雷克世界」编译:KABUDA对于技术领域中存在的AI相关技术,我们应心存感恩。人类不仅花费了数十年的时间来研究完善数学算法,以使这些奇妙复杂的算法发挥效用,…

有效单元测试之可读性

断言 断言的基本原理和意图隐藏在无意义的单词和数字背后,难以理解,难以验证断言的正确性。 Bad eg. Test public void outputHasLineNumbers() {String content "1st match on #1\nand\n2nd match on #3";String out grep.grep("ma…

mysql 异步复制建立过程_mysql生产环境高可用---基于GTID异步复制项目实施

客户需求:客户需要上线一个门户网站,初期业务量非常小,数据量10个G,后台需要使用msyql 数据库,需要建设一个数据库环境项目技术:操作系统:两台linux系统 红帽6.5数据库版本:msyql 5.…

物联网定位技术超全解析!定位正在从室外走向室内~

来源:物联网智库概要:GPS和基站定位技术基本满足了用户在室外场景中对位置服务的需求。GPS和基站定位技术基本满足了用户在室外场景中对位置服务的需求。然而,人的一生当中有80%的时间是在室内度过的,个人用户、服务机器人、新型物…

有效的单元测试--总结

思维导图:https://www.processon.com/view/link/60d3072d0791297edd63290a

java原生的ajax怎么写_原生Ajax代码实现

AjaxAsynchronous JavaScript And XML异步:指一段程序执行时不会阻塞其他程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序 ,相反的则为同步,自己理解的就是类似百度的搜索框输入内容时的提示相关的内容功能&#xf…

人工智能阅读理解是如何打破人类记录? 解读阿里iDST SLQA 技术

来源:网络大数据概要:微软和阿里巴巴开发的人工智能在斯坦福阅读理解测试中并列第一,在答案的精确匹配度上比人类高出几个基点。微软和阿里巴巴开发的人工智能在斯坦福阅读理解测试中并列第一,在答案的精确匹配度上比人类高出几个…

Java测试驱动开发--总结

思维导图:https://www.processon.com/view/link/60d307415653bb049a437111

java发送邮件354_基于SMTP的JAVA邮件发送程序

这个程序没有使用JavaMail API,而是根据SMTP协议的要求直接处理协议的细节发送邮件,虽然比较麻烦了一些,但是对了解邮件协议的细节很有帮助的。本文分两部分,第一部分是SMTP命令介绍(这个从别的地方抄的,嘿嘿)&#xf…