UML中的域模型?

And*_*rew 4 uml class-diagram domain-model

我读到了关于域模型及其重要性的内容,我有以下疑问:

  • 域模型可以解决哪些问题?换句话说,对于每个问题,我应该建立一个域模型?

  • 据我所知,域模型使用类图表示.类图和域模型之间没有区别?

  • 我也想了解哪种方式是与域模型相关的词汇?

sfi*_*nie 12

域模型可以解决哪些问题?

几乎任何您想要/需要提供软件解决方案的问题都适合建模.实际上:无论如何,您必须以某种方式,形状或形式对您的问题域进行"建模".如果您不以某种方式捕获软件中问题的规则和策略,那么终端系统很可能无法满足其预期要求.

换句话说,对于每个问题,我应该建立一个域模型?

这取决于你建立一个领域模型的意思.见上下文...

据我所知,域模型使用类图表示.类图和域模型之间没有区别?

类图是建模域的一种方法.实际上,它们是构建域的一部分的一种方式.类图的主要优点是它明确而清晰地暴露了问题空间中的关系.有一种观点认为,域的语义主要是通过概念(类)之间的关系产生的 - 比类本身更多.如果你接受了这个意见,那么你可能会/有可能找到一个有用的类图.

但请注意,Class Diagrams仅捕获域的结构元素:类,属性和关系.CD不捕获行为.如果要以任何有用的方式对问题空间进行建模,域模型需要结构和行为.因此,您需要使用一些行为描述来扩充类图; 例如状态模型和/或动作.

还有其他方法可以对域进行建模.它可以是一组java/c#类.这种方法的主要缺点是减少对关系的重视.与类图不同,OO语言不提供关系作为第一类构造.优点是编程语言环境(编辑器/编译器/库/语言运行时)为定义域的行为方面提供了比大多数建模工具更好的支持.

更一般地说,没有规则表明域模型必须遵循OO范例.它可以是Haskell或OCAML中的一组函数和类型.或者它可以是一些微分方程或其他数学结构.

关键是模型 - 无论如何表达 - 提供了问题空间的描述.为了有用,描述将不完整 - 它将仅捕获与系统要求相关的问题空间中的属性子集.为了有用但它应该是正确的 -这些概念和行为捕获应准确反映世界建模.

我也想了解哪种方式是与域模型相关的词汇?

您可以将领域模型视为生成正式和高度结构化词汇表的一种方式.实际上,它也捕获了一些语法; 例如,它说"所有权"关系中的参与者必须是狗和人; 不是两只狗,一个人和一把勺子.

这就是Eric Evans在域驱动设计中所称的"无所不在的语言" .这意味着模型中使用的术语应该准确反映被建模问题的术语.因此,如果真实领域的专家使用"人"和"狗"这两个词,那么该模型不应该使用'Homo Sapien'和'Canine'.理由很简单:如果开发人员(建模人员)使用与领域专家相同的术语,那么误解的可能性就会大大降低.它还可以带来更高效和愉快的对话,因为每个人都在使用具有共同含义的熟悉词语.

摘要

  • 域模型是一种抽象.它代表了系统解决的现实问题所固有的概念,规则和策略的子集.
  • 类图是表示域模型的结构方面的一种方式.它没有捕捉动态方面.这些同样重要.
  • 还有其他方法可以对域进行建模.它们不仅限于面向对象的范例.
  • 域模型应该是问题空间的结构化词汇表.它应采用该领域专家使用的术语.

心连心.