聂同学

一个程序员和架构师的实践与思考

敏捷的架构设计(六):领域地图(二)

敏捷已死,而敏捷性长存。

如何建立领域地图

以下直接转帖“领域地图”工作开始时的kickoff邮件,可以体现我们建立“领域地图”方法的基本思路。


  1. “领域地图”编制和使用将是一个渐进的和团队参与的过程。地图将逐步进化和完善,于此同时可以使用。
  2. “领域地图”的目的是将系统的领域知识(业务知识)进行整理,使其结构化,为相关工作提供指导。比如:架构设计、包划分……
  3. “领域地图”中的知识来源于:
    1. 同学们和业务同事的记忆中或者从其他渠道整理的业务知识。
    2. 从代码中发掘来的业务知识。
  4. “领域地图”希望展现的是业务概念及其关系。是一个静态的领域模型视图。“功能地图”也是一个领域模型的一个视图,是动态视图。两者保持一致并相互支持和完善。
  5. “领域地图”编制工作要点大致是:
    1. 工作在“领域地图白板”上进行,就是“英雄联盟白板”1的右侧白板。
    2. 图上的要素说明如下:
      1. 紫色矩形:来源于同学们的业务知识(3.a),目前主要来源于SA维护的“功能地图”。
      2. 绿色矩形:来源于代码的架构现状。既有可能是从代码发掘的正面的业务知识(3.b),也有可能是系统多年积累来负面现状。
      3. 橙色塔形:从i,ii两点综合而来的理想或者说是设计结论,是领域地图的结果。由架构师和开发同学们讨论确立。
      4. 紫色和绿色的post上的文字可以是一些词语,也可以是一些描述。橙色的post是结果,一般是一个词语,是英文的,便于指导后续架构和设计工作。
      5. post之间的距离表示概念之间的关系。间隔较小进而重叠的,表示业务概念有较多重合和交互;间隔较远的,表示业务概念分隔明显。
  6. 对“领域地图”的使用目前主要体现在代码的结构改进,目标是按领域组织代码。
    1. 对照橙色塔形和绿色矩形,可以发现现状与理想间的差距,是我们的改进方向,用红色post表示。
    2. 从红色的post,产生可衡量可执行的改进任务,用紫色post表示,与“英雄联盟”白板上内部改造需求一致,便于移动到“英雄联盟”上跟进。(虽然与5.b.i中的颜色一样,但内容会很不一样,应该不会混淆。)
    3. 在“英雄联盟”白板上,有时会有橙色塔形标注“DM”(domain map)贴在任务卡片上,表示此项任务涉及到的领域知识(业务知识)必须在设计阶段在“领域地图”上体现。(和要求设计复审的符号相似,都是橙色塔形,不过那个上标注“D”)


  1. 该系统敏捷开发过程的用户故事白板。

敏捷, 架构, 过程

分享 -