UML 领域建模

Posted

技术标签:

【中文标题】UML 领域建模【英文标题】:UML Domain Modeling 【发布时间】:2011-04-19 14:36:10 【问题描述】:

领域模型和数据模型有什么区别?

【问题讨论】:

【参考方案1】:

我认为在这里为后代提供一些清晰度很重要。

数据模型是关于如何构建和表示信息的设计。通过结构,我的意思是像“第五范式”这样的问题。通过表示,我的意思是选择计算机序列化,例如整数、浮点或字符串。

领域模型这个词实际上有两个混合的含义。

世界上真实或想象事物的基本特征模型。在这种模型中,类代表人类的概念化,实例是世界上的事物。例如,“Person”类的实例包括你和我,一个基本特征可能是每个 Person 都有一个母亲。这种模型通常称为概念本体概念模型,旨在提供意义。 关于世界上事物的所需信息的模型,通常考虑到一些系统。在这种模型中,类表示必须存储关于世界上事物的信息。例如,“Person”类将包含表示关于你和我的所需信息的实例,例如名字、姓氏、出生日期、当前身高和当前体重。这些信息通常包括所有基本特征,例如我们的母亲,因为对于特定系统的目的,这些信息不是必需的。这种模型通常称为信息模型概念数据模型操作本体

UML 和 OWL 语言都可以用来表示任何一种领域模型。两者都可以被视为分析模型,因为它们用于分析域。一种用于理解领域中的事物,另一种用于收集为领域中的事物构建特定软件或数据库系统的需求。两者都是必要的,不幸的是,它们通常被混为一谈,以至于构建分析模型的人自己对自己建模的内容感到困惑!

【讨论】:

【参考方案2】:

我认为领域模型和数据模型现在与新的自顶向下建模技术几乎相同。我的意思是你可以在类图中建模,并且只在你的图中添加数据库原型。如果您使用我使用的工具,那么您的 ejb3 注释将立即与您的代码同步。下一步只是使用映射器来创建您的数据库。该技术仅适用于 Java

【讨论】:

【参考方案3】:

数据模型是一个设计模型,它只描述数据及其关系。该模型包含实体,但它们是根据他们拥有的数据来描述的,而不是他们如何处理这些数据或他们的职责是什么。

另一方面,域模型是用于分析问题域的概念模型。它根据具有关系、数据和行为的实体来描述领域。它将这些实体的职责描述为与理解问题域相关。

顺便说一句,UML 的一个极好且非常简短的介绍是:

UML Distilled: A Brief Guide to the Standard Object Modeling Language

【讨论】:

数据模型可以存在于概念、逻辑和物理级别。我认为概念数据模型是领域模型的一个子集,在某些方法中它可能是相同的东西(同构?)。 +1 @MikeAinOz。同样,域模型不必只是概念性的。领域驱动设计的核心原则是,一个真实的、实时的、完全执行的领域模型是解决方案的核心。 +1 这就是我要说的。我总是将数据模型与物理和领域联系起来,以在可观察的层面上描述问题区域(即,用户如何看待应用程序与他们交互的项目等)。【参考方案4】:

data 模型专注于 DB 模式定义,包括表、列和关系。

领域模型专注于业务领域,包括概念(对象类)、行为(方法/逻辑)和关系。

在这两种情况下,基数都用于关系(例如 1:1、1:Many、0:Many、...)。

也就是说,理想情况下,您希望数据模型和域模型密切相关,即具有名称的 Person,... 和 MailingAddress,... 与具有 NAME 列和 FK 的 PERSON 表相关MAILING_ADDR 表条目。您必须通过过程、触发器等决定逻辑的托管位置——软件系统中的对象还是数据库中的对象。

【讨论】:

我完全同意这篇文章。我的答案是处理我在公司中使用的实施技巧。我们也使用这种方法,因为我们有 hibernate 专家。如果我们没有这方面的专业知识,我不确定我们是否会对数据库方法进行相同的自上而下建模。

以上是关于UML 领域建模的主要内容,如果未能解决你的问题,请参考以下文章

UML用例建模,业务用例建模概念用例建模系统用例建模,领域建模

统一建模语言

UML建模的要点总结

uml是啥?? 用处大吗??

业务领域建模

uml中的类图