知识卡片

领域模型的定义与两种表示形式

普通读书笔记卡

内容

开发人员惧怕一个陌生领域,首先是苦闷于”领域行话”听不懂看不懂——领域模型正是解决这个问题的工具:把领域概念(领域行话)以可视化方式抽象成一个或一套模型。它比《领域词汇表》更进一步——《领域词汇表》只关注重要领域概念本身,领域模型除了概念,更重要的是还刻画了领域概念之间的关系,这个”关系”维度正是词汇表结构性缺失的部分。领域模型最常用两种UML图表示:类图,用来刻画领域概念之间的静态结构关系(如”账户可能与多个凭证相关,凭证可以是银行卡、存折或存单等形式,各种凭证的编号格式不统一”);状态图,用来对业务领域对象的状态变化做有效补充说明(如储蓄账户在正常、挂失、冻结、销户之间的状态转换及触发这些转换的业务规则,比如”开户金额≥10元人民币”这条规则)。类图无疑用得最多,但类图无法表达对象的动态变化过程,这正是状态图存在的价值。需要提醒的是一个容易矫枉过正的误区:初学者有时希望用领域模型囊括一切领域知识,但领域模型和文字说明各有优势,应该结合使用——像”银行卡卡号的具体编码规则”这类简单直观的信息,用文字说明就足够清楚,如果硬要为此专门建模,反而是一种笨拙的过度设计,不该用UML时就不要用。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第7章《领域建模》"7.1.1 领域模型'是什么'"及"7.1.2 领域模型'什么样'"节(源文件:_epub-src/OEBPS/text00010.html) - 结论依据:原文说明"领域模型比《领域词汇表》更进了一步,它不仅关注重要的领域概念,更重要的是它还刻画领域概念之间的关系",并给出银行凭证类图和储蓄账户状态图两个例子分别演示类图和状态图的用途,同时提醒"该用文字时就不要用UML",直接支撑本卡片结论。 - 原始内容:领域模型,就是将领域概念(即领域行话)以可视化的方式抽象成一个或一套模型。对比而言,领域模型比《领域词汇表》更进了一步……如果此时硬要建模,岂不笨拙?