“循序渐进”,架构演化的敏捷应对之道

  • Chris Sims
  • 郑柯

2009 年 2 月 3 日

话题:敏捷文化 & 方法

Kent Beck最近撰写了《由一而多》一文,说明如何应用“循序渐进(Succession)”过程进行软件设计。“循序渐进”这种技巧,可以用来帮助系统架构从“只满足现有需求”演化到最终需要的状况。文中例举的系统,现在每天只需处理一笔事务,而将来需要处理许多笔事务。

一般来说,极限编程社区喜欢根据实际需求使用“简单设计”和可演化的架构。其中的例子包括:

Kent 的例子中,客户不知道多笔事务应该以何种规则处理。虽然开发人员可以做出一些猜测,尝试使用某种类型的 API 和底层架构处理多事务情况,可这些猜测却不一定是最理想的。团队和客户就要为开发目前尚未需要的功能付出代价。而且,团队和客户在将来还会再次付出,要么就得忍受基于猜测的设计,要么就得重写代码、修正设计。Kent 指出:未来开发人员还可能基于 API 认为目前的代码已经具备处理多事务的能力,这也是一种风险。

Kent现在倾向于创建一个能够满足最低限度要求的设计,然后使用一种他称之为“循序渐进(Succession)”的流程来使设计演化。他的文章中描述了一种名为“由一而多”的 Succession 类型的实现过程,其中可以安全地让代码从处理单个事务转为处理事务列表。

您会一开始就设计、实现支持多事务处理的系统吗?不管选择是或否,请说出您的原因。请留下您的评论并共享您的想法。

查看英文原文:Succession, an Agile Approach to Evolving Architecture

敏捷文化 & 方法