Какова обычная практика разработки начальной диаграммы классов для проекта?

В настоящее время я прохожу курс, который дает введение в планирование проекта. В основном это о том, как рисовать UML-диаграммы (блин), но есть и несколько других тем.

В частности, меня постоянно беспокоит одна часть. В курсе описывается метод перехода от набора требований к исходной диаграмме классов, но все в этом методе вызывает у меня ощущение, что это определенно не тот путь. Позвольте мне сначала привести пример, прежде чем продолжить.

Рассмотрим систему, управляющую тепличным предприятием. В компании несколько теплиц, и каждый сотрудник закреплен за своей теплицей. У теплицы есть местоположение и тип выращиваемого в ней растения. У сотрудника есть имя и номер телефона.

Вот как в соответствии с методом курса будет выглядеть диаграмма классов: введите здесь описание изображения

Для меня это выглядит как макет базы данных, адаптированный для кода. Когда я приступаю к разработке программы, я пытаюсь определить основные абстракции. Как и весь код, взаимодействующий с базой данных, или код, отвечающий за графический интерфейс, — все это разные части системы. Это было бы то, что я считаю начальной диаграммой классов.

Я просто не могу себе представить, что это обычный способ начать проектирование архитектуры проекта. Классы выглядят уродливо, так как если вы возьмете немного больший пример, классы будут переполнены обязанностями. Для меня они выглядят как объекты данных, у которых есть функциональные возможности, которых у них быть не должно. Это не дает мне подсказки о том, как продолжить отсюда и получить общую архитектуру. Все в нем кажется устаревшим.

Все, что я хочу знать, есть ли кто-нибудь, кто может сказать мне, является ли это обычным способом получить первоклассную диаграмму на бумаге по причинам, которые я упускаю из виду.


uml
person Bartvbl    schedule 16.08.2012    source источник


Ответы (2)


Я бы сказал, что разумно начать с логической модели, свободной от ограничений реализации. Эта логическая модель не обязательно связана с деталями физической реализации (например, следует ли использовать базу данных, какой тип базы данных, выбор ОС / пользовательского интерфейса и т. д.) и, таким образом, представляет только «реальные» объекты и процессы бизнес-домена. Сходство с потенциальной реализацией базы данных не должно вызывать удивления для простого примера.

Поняв предметную область вашего бизнеса (с помощью логической модели, которую вы начали создавать), вы будете лучше подготовлены к тому, чтобы впоследствии определить, например, какие архитектурные шаблоны подходят, какие экраны вам нужно построить и какие элементы базы данных нужно спроектировать. Возможно, будет другая часть курса, которая поможет вам на этом этапе.

На практике вы часто будете знать, что намереваетесь реализовать, скажем, веб-приложение, используя MVC с серверной базой данных, и можете попытаться смоделировать классы реализации параллельно с вашими бизнес-элементами. Использование в вашем курсе метода, подчеркивающего различие между логическими и физическими этапами, не кажется неразумным.

person richaux    schedule 16.08.2012

Когда я приступаю к разработке программы, я пытаюсь определить основные абстракции.

Тот же принцип и в UML. Вы представляете абстракции и их отношения, а благодаря существующим визуальным инструментам вы можете презентовать систему заинтересованным сторонам или даже автоматически генерировать заглушки из вашего проекта.

person Cratylus    schedule 16.08.2012
comment
То есть вы говорите, что действительно странно начинать моделирование с данных и их взаимосвязей? - person Bartvbl; 16.08.2012
comment
Нет, я сказал обратное. Вы используете UML как инструмент для представления всех абстракций более высокого уровня и спускаетесь все ниже и ниже. Он предоставляет вам стандартные способы представления вашего дизайна (в том числе третьим лицам) и инструменты, которые ускоряют работу. - person Cratylus; 16.08.2012