【问题标题】:Approaches to creating your conceptual Domain Model创建概念领域模型的方法
【发布时间】:2013-07-16 13:54:08
【问题描述】:

我们正在尝试在我当前的项目中使用 DDD 技术,并且已经开始经历域建模的过程,并且在“如何”创建域模型方面遇到了很多摩擦。我没有找到很多我们关于这个主题的指导的例子。

我们首先尝试通过与业务用户交谈并提出域实体及其属性列表来定义通用语言。进展顺利,但我们遇到了以下问题:

  • 行为、动作
  • 权限
  • 业务逻辑(如果 attributeA = true 则 foo else bar)

我对如何捕捉所有这些不同的东西(序列图、用例、流程图等...)有很多想法,但如果有一个正式的流程或一些资源提供示例驱动的指导,它' d 肯定会加快速度。

【问题讨论】:

    标签: domain-driven-design


    【解决方案1】:

    这是一个很好的问题。

    我总是采取的第一步是与一位(是的)领域专家会面,并从他们的角度就问题领域进行公开讨论。我带了很多便利贴,并确保我有足够的白板空间。正如专家所说,我尝试使用便利贴在墙上绘制流程图或 BPMN 图。我发现给领域专家一些视觉上的东西是非常重要的——他/她可以用身体指向并说“不,那是错误的!” (他们通常会这样做很多次)。

    在这些对话中,我会仔细聆听专家所说的话,并要求澄清存在歧义的地方。我总是发现让无处不在的语言以这种方式自然出现更好——而不是试图强行建立它(我永远不会要求领域专家给我一份术语列表)。

    我尝试用命令和事件来表达流程图——即使我最终没有使用 CQRS,我发现这自然会流入更具体的需求。当流程图完成时(我通常可以这么说,因为专家看起来对此非常满意——很有可能他/她从未见过以这种方式绘制的域,而且他们常常对新奇感到兴奋),我开始通过流程图跟踪各个路线。通常,这些单独的路由可以很容易地表示为Given, When, Then 样式要求方面的行为规范。 (参见BDD 第 3 节)

    一旦您拥有涵盖流程图中每条路线的Given, When, Thens 集合,您就有足够的规范在恰好一个Bounded Context 中开始域模型的设计阶段。

    我与其他领域专家重复这个过程。与后来的专家一起,我还倾听他们使用的语言和术语之间的相关性。大多数时候,不同的领域专家会使用通用语言共享术语,但含义会略有不同。这表明我们正在处理不同的有界上下文。

    【讨论】:

    • 所以要清楚。您可以通过使用 Post It Notes 快速捕获的 UML 样式域模型来捕获通用语言。然后,您通过流程图捕获高级交互,并使用 BDD gherkin 风格的用例充实细节?如果是这样,您能否在流程图部分展开一点,这样的示例粒度级别是多少?您将在什么粒度级别上迁移到小黄瓜?
    • @RyanVice 澄清一下,我只用便利贴画了一张图表,它更接近流程图。我首先请领域专家描述他们的业务流程,然后尝试将他们所说的内容捕捉为一系列事件和命令。 99% 的时间专家会描述常见的场景(黄金路径)——从而产生一个非常简单的流程图。然后,我通过询问一系列揭示边缘案例的“假设”问题来挖掘隐藏的复杂性。我通常可以说,当我的“假设”问题遭到茫然的凝视时,我变得过于细化了,就好像我在说疯话一样。
    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 2014-11-14
    • 2016-03-15
    • 1970-01-01
    • 2018-06-23
    • 2015-12-30
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多