Suppose you're working with a customer's domain experts. You realize (or at least have a reasonable belief) that your model of their problem is clearer than theirs. How do you convince them that they should go your way.
In my case, it is fairly clear what the main thrust of the requirements are (e.g. a trading system for a product). Based on my experience and my research, I would recommend a TradeContract which has two TraderParties. Each TraderParty buys one Product and sells one Product. If I had to model the composite in XML, I might model it as:
<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>
The above simply models that Ann bought Harry Potter and the Prisoner of Azkaban from Bob for $20.00. More abstractly, this models a two-party, four-legged trade. Let's just assume for argument's sake the system that consumes the XML validates the tradeContract
and orchestrates the trade.
What if your domain experts feel this is too complicated for them? While you can readily acknowledge some intermediate steps to get to the above domain model, how do you persuade them that it's better to "bite the bullet" and use the above domain model sooner rather than later?
ADDITION: the SME's proposed model ...
What the domain experts keeping talking about is the model I came up with, but it looks like they don't believe their business process is ready for it yet. (Still, I think there are ways to make do now).
The model they want immediately is:
<tradeParty>
<id>1</id>
<name>Ann</name>
<transaction type="long" product="money" value="20.00"/>
</tradeParty>
This models that Ann gave away $20.00. Then a separate transaction has to be entered:
<tradeParty>
<id>1</id>
<name>Ann</name>
<transaction type="short" product="book" reference="book.123"/>
</tradeParty>
To model that she acquired the Harry Potter book. Quite cumbersome in my opinion because we cannot model whether our system will cheat Ann. Likewise a similar kind of fragmentation of transactions happens to the Bob's side of the trade contract.