Хороший вопрос. Вот некоторые мысли из моего собственного опыта; не могу сказать, согласится ли Мартин (!), но, тем не менее, полезно.
В итоге: основное отличие заключается в формальности и выборе дизайна для отношений.
Я нашел следующее полезное:
Базовая структура: приблизительно соответствует UML Фаулера в виде эскиза и выполняется в интерактивном режиме на доске. Основная цель - понять общую структуру. Очень неформально. В частности, акцент на отношениях заключается просто в их идентификации, а не в формализации - поэтому нет кардинальности, поведения удаления, выбора классов контейнеров и т. Д.
Модель предметной области. Точная модель, ориентированная на формализацию отношений. В частности, именование ассоциации заканчивается, определяя количество элементов и подтверждая поведение удаления. Не учитывает судоходность или выбор контейнерных классов для количества элементов> 1. Один из лучших методов, которые я знаю для изучения проблемной области.
Я почти всегда буду использовать оба вышеперечисленных. Ключевым моментом в модели предметной области является использование именования на основе глаголов, а не ролей - потому что оно описывает, почему существуют отношения (фактически раскрывает бизнес-правила: например, «заказ должен быть размещен ровно одним клиентом»). Я использую шаблон именования, описанный в книге Simsion & Witt .
Необходимо выполнить работу по переводу модели предметной области в рабочий код, особенно в отношениях. Языки программирования не очень хорошо поддерживают отношения, поэтому ассоциации должны быть переведены в атрибуты участвующих классов. В этот момент вступает в игру навигация, а также выбор типа коллекции для кратности> 1. Здесь также должны быть указаны все операции. Лично я не считаю этот тип диаграмм особенно полезным. Модель предметной области плюс код дают мне все, что мне нужно.
Я буду использовать UML в качестве языка программирования только в том случае, если использую исполняемый инструмент UML.
Извинения, если это немного бессвязно, надеюсь, это поможет ...
PS: Если вам нужен лучший пример именования на основе глаголов, у меня есть запись в моем блоге . Пожалуйста, не принимайте это как саморекламу, просто нет смысла повторять здесь.