Я бы начал с рисования диаграммы классов со всеми связями и реализовывал только те классы, которые необходимы в соответствии с требованиями вашего приложения.
Вы можете использовать анемичный подход (атрибуты плюс геттеры и сеттеры), чтобы упростить задачу и избежать одного шага написания бизнес-логики. В случае анемичной модели логика перейдет в соответствующий класс Service. Таким образом, вы можете рассмотреть варианты использования позже.
Я знаю, что некоторые люди не ценят такой способ работы, но он помогает в обслуживании и позволяет избежать некоторых проблем с зависимостями.
Ответ на вопрос пожираемого Элизиума ниже :
С точки зрения анализа, начиная с вариантов использования (что), а затем переходя к диаграмме классов (как), звучит как хорошее практическое правило. Лично я бы потом сделал диаграмму последовательности (когда и кого?), Так как вам нужно было бы знать, между какими процессами / объектами нужно отправлять сообщения.
Кроме того, я считаю, что UML - это просто способ моделирования системы / проекта, а не сама методология (в отличие от Merise, RAD, RUP, Scrum и т. Д.). Нет ничего, что могло бы помешать кому-то начать с любой диаграммы, если у него есть достаточно информации для ее завершения. Фактически, они должны выполняться одновременно, поскольку каждая из диаграмм - это разные перспективы одной и той же системы / проекта.
Итак, в целом все зависит от того, как вы будете проводить анализ. Во время обучения меня учили жесткому водопадному подходу, когда вы выполняете полный анализ от начала до конца, прежде чем создавать некоторый код. Однако на практике все может быть по-другому, поскольку императивом может быть создание рабочего приложения в кратчайшие сроки.
Например, недавно я познакомился с методологией Scrum для упражнения, включающего создание веб-сайта, где люди могут публиковать свои вымыслы. Поскольку были временные ограничения и четкое видение того, что должно быть достигнуто, мы сразу начали с простой диаграммы классов, представляющей модель домена . Варианты использования были затем выведены из серии макетов экранов, которые мы создали.
По памяти классами были История, Глава, Пользователь и Категория. Этот последний класс был свернут в пользу более гибкого класса Tag. Как вы могли догадаться, полная диаграмма классов существующего проекта была бы намного более сложной из-за применения доменного дизайна и особенностей языка программирования Java.
Этот подход можно рассматривать как неаккуратный. Тем не менее, такой веб-сайт может быть легко создан за пару недель с использованием итеративного процесса и при этом хорошо продуман. Преимущество итеративного процесса перед водопадным подходом состоит в том, что вы можете постоянно корректировать требования по мере необходимости. Частое изменение требований - это реальность, так как люди часто меняют свое мнение, а возможность создания работающего приложения после каждой итерации позволяет, так сказать, идти по курсу.
Конечно, когда вы представляете проект клиенту, предпочтительнее будет провести полный анализ с использованием диаграмм UML и некоторых макетов, чтобы они имели представление о том, что вы предлагаете. Вот тут-то и появляется UML. Как только вы объясните некоторые визуальные условные обозначения, человек должен понимать диаграммы.
В заключение, если вы находитесь в ситуации, когда вы пытаетесь определить, чего хочет клиент, вероятно, будет хорошей идеей постепенно составить анкету, которую вы сможете взять с собой. Собеседование с человеком - единственный способ определить, какие концепции / функции действительно необходимы для приложения, и вам следует ожидать возврата к нему для выяснения определенных аспектов. Еще один совет - провести небольшое исследование в Интернете, когда вы столкнетесь с темой, с которой вы не знакомы.
В вашем примере это было бы пройти через основы анатомии. Среди прочего, это поможет вам решить, что должна содержать модель и какую гранулярность она должна иметь (Какую группу органов следует учитывать? Насколько точной она должна быть? Нужно ли моделировать только органы или они должны быть разложены на их составляющие, такие как ткани, клетки, химический состав и т. д.?).