领域建模:方法与实例

本书关注对软件的成败生死攸关而在实际开发过程中往往被严重忽视的部分:业务分析领域建模,以及领域建模的产物领域模型,并给出几个领域建模的实例。

对软件开发来说(对其他行业也一样),成功的标准有两条:

  • 做正确的事(Do the RIGHT thing);
  • 正确地做事(Do the thing RIGHT)

如果客户需要画一只老虎,但是你给他画了一条狗,即使你把狗画得栩栩如生(Do the thing RIGHT),却不是客户需要的(Do the WRONG thing),那么这幅画就是彻底失败了。

与其他行业相比,软件开发有一个特殊性:我们是为其他行业提供自动化解决方案。我们不但要掌握编程语言、类库、框架、工具、操作系统、数据库等等软件开发技能,以便“Do the thing RIGHT”,还需要能够快速领会和深刻洞察业务领域的概念、规则、意图、行为和机制,形成一个反映业务现实的领域模型,代表我们对业务领域的理解,在业务专家、客户、用户、开发人员中间形成共识,这样才能确保我们是在“Do the RIGHT thing”,我们开发的软件才有可能成为“解决了正确的问题”和“正确地解决了问题”的解决方案。否则,难免刻鹄成鹜,画虎类犬。

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

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

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

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

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

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

Copyright © yyang.io 2016 all right reserved,powered by Gitbook该文件修订时间: 2016-08-08 00:43:13

results matching ""

    No results matching ""