【问题标题】:Domain Model modelling how complex should the diagram be/become?领域模型建模图表应该/变得多复杂?
【发布时间】:2021-10-18 10:26:35
【问题描述】:

我对领域模型非常陌生,我正在努力加深我的理解。我已经围绕我将提供的场景创建了这个域模型。我觉得这个模型很简单,因此感觉不正确,并且可能缺少我可能没有想到的元素,尽管我想不出在给定场景的情况下还需要在域模型中包含什么。这个想法是为了展示我觉得我已经设法实现的真实世界级实体之间的关系。

场景:允许您创建用户、项目、公司和签发工单的管理应用程序。项目分配给公司,用户分配给项目,问题单分配给用户。工单的状态可以更改。

变化

实施建议的更改。我认为这是基于返回的反馈来表达想法的更好方式,尤其是在组合的使用方面。我还更新了多重性以更好地代表场景。

进一步的变化

【问题讨论】:

  • UserProject 之间的多重性似乎关闭了。一个项目只能分配一个用户?此外,Issue TicketUser 之间的组合肯定是错误的。我无法想象票是由用户组成的,如果票被删除,用户就会被删除。
  • 在这种特殊情况下,我想说的是,如果没有用户,票证就无法存在。在创建工单时,必须分配一个用户,否则不会创建工单,这将是一张不属于任何人的工单。考虑到这种情况,构图是否仍然不正确?
  • 作曲是关于终身责任的。 SO上有一些答案(有些好,有些不太好)。然而你的想法是不正确的。
  • User 端的下限 1 已经确保始终有一个 User 连接到工单。组合是关于整体部分的关系。
  • @GeertBellekens 这对于 Project > Company 是一样的吗?多重就够了,聚合应该去掉?

标签: uml domain-driven-design domain-model domain-modelling


【解决方案1】:

图表应尽可能简单,但不能更简单。

在这种特定情况下:

  • User 的两个特化可能过于复杂而无法满足需要:User 仍然是 User,不是吗?如果您确实需要考虑用户类别之间的差异,特别是如果类别随时间变化,您最好考虑(object) composition over inheritance(或者更好的 UML 措辞:更喜欢关联而不是继承)。
  • 关联可能过于简单或不完整。例如,在将Issue ticket 分配给用户之前,它不也与ProjectCompany 相关联吗?尚不清楚User 是否也与Company 相关联(例如多租户云场景),或者是否没有这种关联(例如服务提供商场景,该公司实际上是客户公司)。李>
  • 某些关联可能会隐藏关联类,例如您是否希望监控用户处理工单的时间?

【讨论】:

  • 一般来说,说“一个类的实例在其整个生命周期内都保持该类的一个实例”是不正确的。这适用于例如 Java,但不适用于一般的 OO 建模(使用 UML 类图)。只需考虑一个代表角色类型的类,例如Student。一个碰巧成为学生的人不会一辈子都是学生。
  • @GerdWagner 你能解释一下对象如何改变 UML 中的类吗?也许我错过了一些东西,但到目前为止,我的理解基于:9.2.3.2 说:“分类器的实例也是其每个概括的(间接)实例”。因此,在您的示例中,Student 的实例将是 Person 的实例。我没有发现任何证据表明分类器可能会更改实例或停止成为分类器的实例。因此,在您的示例中,我将 Person 和 Student 建模为不同的类,并将 Student 视为与 Person 关联的角色。
  • 您在哪里找到了实例无法在 UML 中更改其类型的证据?
  • 一般来说,依赖的东西,比如用户角色,和独立的东西,比如人,关联起来比较好,而不是做子类,正是因为有些语言(比如Java)做了多重分类或重新分类困难。不过,UML 是矛盾的。
  • @JimL。这是一个有趣的想法。我确实没有找到任何直接证据表明在 UML 中不能更改类型。但是,我认为这是其他条款组合的结果,可变性会导致一些不一致。但这值得专门提出一个问题。同时我删除了我有争议的陈述,因为它是次要的,主要是为了介绍组合而不是继承。
【解决方案2】:

这完全取决于模型的用途。

可能会创建一些模型来激发讨论和进一步发现。有些可能需要高级利益相关者批准。有些可能是供开发人员使用的。其他可能用于营销材料。

您的模型可以激发讨论和进一步发现。

【讨论】:

  • 感谢您的回复。我该如何改进图表以便对开发人员有用并获得股东的批准。我不确定需要利益相关者批准的图表是什么样的。我觉得它在为开发人员提供工作思路方面做得很好。
  • 这是一项团队运动!与开发人员交谈。他们会提出问题,您可以与他们一起探索细节,同时丰富模型。不要试图在没有开发人员的情况下创建开发人员就绪模型。你。将要。失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 2012-10-11
  • 1970-01-01
相关资源
最近更新 更多