model - 您如何与领域专家协商领域模型?

标签 model dns domain-driven-design

假设您正在与客户的领域专家合作。您意识到(或至少有合理的信念)您对他们问题的模型比他们的更清晰。你如何说服他们应该走你的路。

就我而言,需求的主旨是什么(例如产品的交易系统)是相当清楚的。根据我的经验和研究,我会推荐一个有两个 TraderParties 的 TradeContract。每个 TraderParty 购买一种产品并出售一种产品。如果我必须在 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>

以上只是 Ann 以 20.00 美元从 Bob 处购买的哈利·波特与阿兹卡类的囚徒的模型。更抽象地说,这是一个两方四足贸易的模型。为了便于论证,我们假设使用 XML 的系统验证 tradeContract 并协调交易。

如果您的领域专家觉得这对他们来说太复杂怎么办?虽然您可以轻松地承认达到上述领域模型的一些中间步骤,但您如何说服他们最好“咬紧牙关”并尽早使用上述领域模型?

附加:中小企业提出的模型...

领域专家一直在谈论的是我提出的模型,但看起来他们不相信他们的业务流程已经准备好。 (不过,我认为现在有办法凑合)。

他们立即想要的模型是:

<tradeParty>
   <id>1</id>
   <name>Ann</name>
   <transaction type="long" product="money" value="20.00"/>
</tradeParty>

安赠送的这款型号为 20.00 美元。然后必须输入单独的交易:

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

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

最佳答案

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

总会有从您的技术角度到他们的业务导向角度的转换。这就是业务分析师的角色。

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

关于model - 您如何与领域专家协商领域模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404601/

相关文章:

hibernate - DDD : how to properly implement with JPA/Hibernate entities relation?

model - 在 Go 中构建模型

angular - 如何在 Angular 共享库中创建模型?

ruby-on-rails - 如何处理 Rails 中的数据库错误?

url - 在 Jenkins 中自定义 URL

domain-driven-design - DDD : Aggregate Roots

JavaFX 8 : Separation of model/domain from view

dns - 如何以编程方式找到新的可用域?

dns - 如何以编程方式查询 senderbase.org?

asp.net-core - 如何处理多层一对多关系的DAL?