专题预告——璀璨星光:ThoughtWorks 实践集锦

  • 李剑

2009 年 3 月 1 日

话题:JavaSOA敏捷.NETRuby架构语言 & 开发文化 & 方法

近日,InfoQ 中文站策划了一期专题,名为“璀璨星光:ThoughtWorks 实践集锦”。我们邀请到了 ThoughtWorks 的数位咨询师,他们将在这个专题中,为读者献上他们的实践经验总结。

顾名思义,这个专题不以理论探讨为主——这年头空口谈敏捷大家已经也见得太多了,还是拿些真刀实货的东西出来实在。正如胡适先生所说,“多谈些问题,少谈些主义”。所以就有了以下选题:

  • 我和敏捷团队的五个约定——覃其慧

作为测试人员,在敏捷项目中往往是一个孤单的角色,在一般规模的项目中,一般独自一人工作,很少与其他人交互。然而,如何让测试人员的工作更有效率,与其他人配合更好,其他角色可能没有如此深刻的体会。本文的作者是敏捷项目中的 QA,请看她与敏捷团队的五个约定。

  • 如何在敏捷开发中做好数据迁移——章昱恒

数据迁移是件看似简单,但做起来让人烦恼的工作。盲目实施会导致脏数据,数据丢失,业务逻辑混乱,破坏数据建模等很多问题。在现代企业级系统应用中,数据 迁移的需求比比皆是。利用敏捷开发常用的测试驱动、持续集成,并引入精益软件的开发技巧,能够高质量的保障数据迁移的顺利进行,为高质量的软件开发打造坚 实的数据质量基础。

  • RichClient/RIA 原则与实践(上)(下)——陈金洲

Web 领域的经验在过去十多年的不断的使用和锤炼中,整个开发领域的技术、理念、缺陷已经趋于成熟,它丰富的积累使得开发者逐渐将更多的精力投入到应用本身。但 是,目前仍然没有比较深入的实践性文章来介绍企业环境下 RichClient 开发,而只是偏向于小规模特性介绍,但在大规模的企业应用中,这些小的技巧对 于架构决策往往帮助很小。作者在加入 ThoughtWorks 之后,参加了多个不同的 RichClient 项目的开发工作,使用 / 尝试过的语言包括 Java Swing、Flex/Adobe Air、.NET WinForm/.NET WPF,对于不同平台之间的种种有些体会。在本文中,作者将这些实践和原则进行了总结。

  • 为什么我们要抛弃 Subversion——胡凯

Subversion 有哪些局限性?使用分布式版本管理工具对团队又意味着什么?在本文中,作者分析了使用 Subversion 在他所在团队产生的若干问题,以及迁移到分布式版本管理工具 Mercurial 后,如何利用分布式版本管理工具的特性来解决这些问题。

  • “持续集成”也需要重构——乔梁

持 续集成是极限编程十二实践之一,最初被使用极限编程方法的开发人员所推捧,并在过去的几年中得到广泛应用,成为业界广为人知的软件开发实践。该实践用于解 决软件开发过程中一个具体且重要的问题,即“确保当某个开发人员完成新的功能或修改代码后,整个软件仍旧能正常工作。” 然而,持续集成并非像大多数人想像的那样,首次部署好持续集成环境后就大功告成,一劳永逸了。恰恰相反,它与你项目中的其它产品代码一样,需要改进与重 构,否则,就会使你进入一种“持续闹心”的状态,甚至可能让你觉得这件事根本不应该做,如何解决这一问题呢?对“持续集成”应用 “Retrospective”和“重构”。本文将结合 Cruise 团队的实际开发历程,讲述持续集成在软件项目中的演进。

  • 在遗留系统和传统组织架构下应用敏捷——路宁

遗留系统、传统组织架构、较大的交付压力,这些是很多公司面临的现状,在此背景下应用敏捷也有其独特的意义和挑战。作者以一个真实的敏捷启动 (Agile Enablement) 项目为基础,回顾了项目实施过程,总结了一些在上述背景下实施敏捷的要点和启示。

  • 慎用“Mock”——胡凯

mock 技术是创造完全受控的被模仿对象最小实现的一种技术。在测试中,mock 技术被广泛用于模仿被测代码的外部依赖,以减小它们对于被测方法的影响。由于软件 开发团队对于单元测试的迫切需求以及 mock 技术所提供的完美解决方案,各种 mock 框架于是如雨后春笋一般发展起来。但是 mock 本身也具有种种问题, 如“行为依赖风险”、“mock 对象设置过程过于繁重”、“Mock Object 的 set up 过程通常难以阅读”等等。滥用 mock,不仅起不到测试的作用,反而可能成为开发工作的桎梏。但 mock 框架的流行以致 mock 测试的滥用某种程度上 体现了开发团队逐渐认识到了测试的重要性,在进行测试的过程中碰到了困难,不断的尝试使用各种方法来解决问题。

  • Agile 项目的 QuickStart——熊子川

敏 捷项目由 QuickStart 开始,顾名思义,和传统软件开发项目不同,敏捷项目的开始需要快速。所有 QuickStart 的方法都基于敏捷的基本精神, 因此也可以把 QuickStart 当作一个小型的敏捷项目,只是交付物是足以启动整个敏捷项目的所有准备,包括第一个交付期的迭代计划,足够的主故事列 表,以及足够的原型设计。作为一个标准敏捷项目 QuickStart 的参与者,作者将在本文中介绍 QS 是如何准备,进行和结束的。

  • 自动化测试不仅仅是自动的测试——徐昊
  • 哪个家伙没写测试?——韩锴
  • 实践中的重构——李彦辉
  • ……

上面这些文章会以每周两篇左右的频率在 InfoQ 中文站上发布,敬请期待。

JavaSOA敏捷.NETRuby架构语言 & 开发文化 & 方法