领域建模:DDD设计模式

1,707 阅读2分钟

业务分析和领域建模致力于“Do the RIGHT thing”,而设计和实现致力于“Do the thing RIGHT”。前者远比后者重要。如果你已经南辕北辙了,那么,你跑的越快,离目标就越远。

但是国内大多数的软件公司、团队和开发者,在业务分析和领域建模方面做得不够好,究其原因,大概是因为:

  • 认识错误。以为软件开发就是数据建模,以及针对数据的增删改查,完全没想到需要领域建模。这样的开发模式往往是从现有数据库或报表入手,实现客户的表层需求,遗漏业务的本质机制。
  • 对业务分析和领域建模的重要性认识不足,把大部分资源和精力投放在编码实现上。 缺乏领域建模方面的指导和训练,无法快速而深刻地洞察业务领域的本质,因此形成的领域模型充满各种误解和缺陷。
  • 开发人员偏爱钻研具体软件技术,不敢或不愿踏足业务领域分析。

如果建模不足(不够全面,不够深刻,不够抽象),会产生下面的后果:

  • 你的软件不符合或不完全符合客户的需要。
  • 你的软件只符合客户的浅层需要和当前需要,当客户需要有变化时(必然如此!),根本无法进行扩展和变更,或者需要对你的代码基做伤筋动骨的改动。
  • 你的软件只符合当前客户的需要,当需要移植给同行业的其他客户使用时,需要对你的代码基做伤筋动骨的改动。
  • 你的概念模型和技术实现紧密耦合,当需要技术升级或更换技术实现时,需要对你的代码基做伤筋动骨的改动。

好的领域模型深刻反映了业务领域的本质,它不仅满足客户的浅层需要,还能满足客户的深层需要;它不仅满足客户的当前需要,还能满足客户的未来需要;它不仅满足单一客户的需要,还能满足相同领域其他客户的需要。它使得软件可以快速、安全、低成本地进行扩展和修改,而不影响系统的主体结构。好的领域模型独立于软件技术实现,在软件技术快速升级换代的同时恒久地发挥作用。