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

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

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

  • 绝不过早加入功能。
  • 你不会需要它的。(YAGNI,You aren’t gonna need it)
  • 可以工作的、最简单的东西。

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

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

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

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

你可能感兴趣的:(“循序渐进”,架构演化的敏捷应对之道)