Model 如何与领域专家协商领域模型?

Model 如何与领域专家协商领域模型?,model,dns,domain-driven-design,Model,Dns,Domain Driven Design,假设您正在与客户的领域专家合作。你意识到(或者至少有一个合理的信念)你对他们问题的模型比他们的更清楚。你如何说服他们按照你的方式去做 在我的例子中,需求的主旨是什么相当清楚(例如,产品的交易系统)。根据我的经验和研究,我推荐一份有两个交易方的交易合同。每个交易方购买一种产品,然后销售一种产品。如果必须用XML对组合进行建模,我可能会将其建模为: <tradeContract> <id>1234</id> <tradeParty>

假设您正在与客户的领域专家合作。你意识到(或者至少有一个合理的信念)你对他们问题的模型比他们的更清楚。你如何说服他们按照你的方式去做

在我的例子中,需求的主旨是什么相当清楚(例如,产品的交易系统)。根据我的经验和研究,我推荐一份有两个交易方的交易合同。每个交易方购买一种产品,然后销售一种产品。如果必须用XML对组合进行建模,我可能会将其建模为:

<tradeContract>
    <id>1234</id>
    <tradeParty>
       <id>1</id>
       <name>Ann</name>
       <long type="money" value="20.00"/>
       <short reference="book.123"/>
    </tradeParty>
    <tradeParty>
       <id>2</id>
       <name>Bob</name>
       <long reference="book.123"/>
       <short type="money" value="20.00"/>
    </tradeParty>
    <product>
       <id key="book.123">123</id>
       <type>book</type>
       <title>Harry Potter and the Prisoner of Azkaban</title>
    </product>
</tradeContract>
这是安赠送的20美元的模型。然后必须输入单独的交易:

<tradeParty>
   <id>1</id>
   <name>Ann</name>
   <transaction type="short" product="book" reference="book.123"/>
</tradeParty>

1.
安

她得到了《哈利波特》这本书。在我看来相当麻烦,因为我们无法模拟我们的系统是否会欺骗Ann。同样,类似的交易碎片也发生在交易合同的Bob方。

我从未试图改变领域专家的思维模式……他们毕竟是专家。但是,如果我的模型与他们的模型稍有不同,那么我会确保它仍然可以产生相同的效果。所以我接受他们的观点,以我自己的方式建模,然后以他们理解的方式呈现给他们

从您的技术角度到他们面向业务的角度,总会有这样的翻译。这就是您的业务分析师的角色

您的领域专家提出的模型是什么?如果正如您所说,您的模型捕获了需求,那么请使用您的模型,但向领域专家展示一个技术性较低的视图……请使用图表。他们不必知道从图表生成的XML


我从不试图改变领域专家的思维模式…他们毕竟是专家

我认为这基本上是正确的。然而,我知道这样一种感觉:领域专家并不像我那样“理解”。虽然很容易把这一点写在他们身上,而不是理解技术方面,但往往是开发者和领域专家之间的沟通不符合标准的标志。这可能相当危险

如果你认为最有效的方法和领域专家想要的方法之间存在巨大的脱节,那么可能是你错过了他们认为理所当然的领域的关键部分。试着从不同的角度问这个问题。有时,通过另一条推理途径,你会得到不同的结果。灯泡可能会亮起来,突然之间,你对问题的理解会比以前好得多,因此你可以更好地与领域专家沟通

您的领域专家提出的模型是什么


我想这也会很有趣。

他们提出的模型是什么?我使用的XML堆栈溢出不支持UML图的输入。虽然我可以为模型编写代码(可能是Ruby,因为它更简洁),但我仍然希望“语言不可知论”。因此,XML是一种“it-works”模型。
<tradeParty>
   <id>1</id>
   <name>Ann</name>
   <transaction type="short" product="book" reference="book.123"/>
</tradeParty>