敏捷软件开发-ch06.pdf

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
敏捷软件开发-ch06,scrum敏捷软件开发,敏捷软件开发,敏捷软件开发pdf,敏捷软件开发方法,敏捷软件开发工具,敏捷软件开发宣言,敏捷软件开发原则,软件工程敏捷开发,敏捷开发

第6 章 一次编程实践 设计和编程都是人的活动。忘记了这一点,将会失 去一切。 ——Bjarne Stroustrup ,1991 为了演示一下XP 的编程实践,Bob Koss (RSK )和Bob Martin (RCM )要在一个小型的应用 程序中使用结对编程(pair programming )的方法,你可以在一边进行观看。在创建该应用程序的过 程中,会使用测试驱动的开发方法以及大量的重构。接下来的一幕是这两个Bob 于2000 年末在一 家旅馆中实际编程情景的真实再现。 在创建这个程序的过程中,我们犯了很多的错误。这些错误包括代码方面的、逻辑方面的、设 计方面的以及需求方面的。在学习本章时,会看到我们围绕这几个方面所进行的活动:识别出错误 和误解,然后处理它们。过程是混乱的——过程中只要有人参与都是这样。结果……唔,令人吃惊, 竟然能够从这样一个混乱的过程中出现秩序。 这个程序是计算保龄球比赛得分的,所以如果知道保龄球比赛的规则,会有助于理解本章内容。 如果对保龄球比赛的规则不了解的话,可以察看章末的补充内容。 6.1 保龄球比赛 RCM :可以帮忙编写一个保龄球记分小程序吗? RSK:(自言自语,“XP 中结对编程的实践规定当有人请求帮助时,不能够说“不”。若请求的人是 你的老板,就更不能拒绝了。”)当然可以,Bob ,非常高兴帮助你。 RCM :太好了,我想编写一个应用程序来记录一届保龄球联赛。需要记录下所有的比赛、确定团队 的等级、确定每次周赛的优胜者和失败者,并且准确地记录每场比赛的成绩。 RSK:棒极了。我曾经是个很好的保龄球选手。这件事情很有趣。你已经列出了一些用户素材,想 先做哪一个呢? RCM :先来实现记录一场比赛成绩的功能吧! RSK:好。它指的是什么呢?该素材的输入和输出是什么呢? RCM :在我看来,输入只是一个投掷(throw)的序列。一次投掷仅仅是一个整数,表明了此次投 球所击倒的木瓶数目。输出就是每一轮(frame )的得分。 RSK:如果你在这个练习中担任客户的角色,会希望什么形式的输入和输出呢? 40 敏捷软件开发:原则、模式与实践 RCM :好,我担任客户。我们需要一个函数,调用它可以添加投掷,还需要另外的函数用来获取得 分。有几分像下面的样子: ThrowBall(6); ThrowBall(3); assertEquals(9, getScore( ) ); RSK:好,我们需要一些测试数据。我来画一张记分卡的小草图(参见图6.1)。 图6.1 典型的保龄球比赛记分卡 RCM :这名选手发挥的很不稳定。 RSK:或许喝醉了,但是可以作为一个相当好的验收测试用例。 RCM :我们还需要其他的验收测试用例,稍后再考虑吧。该如何开始呢?要做一个系统设计吗? RSK:我不介意用UML 图来说明从记分卡中得到的一些问题领域概念。从中会发现一些候选对象, 可以在随后的编码时使用。 RCM :(戴上他那顶强大的对象设计者的帽子)好,显然,Game 对象由一系列共 10 个 Frame 对象 组成,每个Frame 对象可以包含1 个、2 个或者3 个Throw 对象。 RSK: 好主意。这也正是我所想的。我立刻把它画出来(参见图6.2)。 RSK:好,来选取一个要测试的类。从依赖关系链的尾部开始,依次往后如何?这样测试会容易些。 图6.2 保龄球记分卡的UML 图 RCM :当然可以。我们来创建Throw 类的测试用例。 RSK:(开始键入代码) //TestThrow.java import junit.framework.*; public class TestThrow extends TestCase { public TestThrow(String name) { 第6 章 一次编程实践 41 super(name); } //public void test???? } RSK:Thr

文档评论(0)

mydoc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档