Предположим, вы работаете с экспертами домена клиента. Вы понимаете (или, по крайней мере, имеете разумное убеждение), что ваша модель их проблемы яснее, чем их. Как ты убедил их, что они должны идти по твоему пути?
В моем случае достаточно ясно, каковы основные требования (например, торговая система для продукта). Исходя из моего опыта и моих исследований, я бы порекомендовал TradeContract, у которого есть две TraderParties. Каждая 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>
Вышеуказанные простые модели, которые Энн купила Гарри Поттер и Узник Азкабана у Боба за 20,00 долларов. Более абстрактно, это моделирует двухстороннюю, четырехногую торговлю. Давайте просто предположим, что система, которая использует 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>
Чтобы смоделировать, что она приобрела книгу о Гарри Поттере. На мой взгляд, довольно громоздко, потому что мы не можем смоделировать, обманет ли наша система Энн. Аналогичным образом фрагментация транзакций происходит аналогично со стороны Боба в торговом контракте.