Как стать автором
Обновить

Классы проектирования против классов анализа

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров885
Автор оригинала: geeksforgeeks

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

В системном дизайне понимание разницы между классами проектирования (design classes) и классами анализа (analysis classes) носит ключевой характер. Классы анализа подобны детективу — они исследуют и понимают проблему. Они сфокусированы на том, что система должна делать, без погружения в то, как именно это должно быть реализовано. Эти классы помогают разработчикам понять требования к программе и ее цели. В то время как классы проектирования подобно архитектору берут результаты изысканий классов анализа и создают план, как именно система будет работать.

Что такое классы проектирования?

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

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

  • Они определяют внутреннюю логику работы приложения, включая алгоритмы, структуры данных и взаимодействия между модулями.

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

  • Классы проектирования переводят эти требования в конкретный план того, как именно система будет строиться.

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

Характеристики классов проектирования

  • Фокусируются на том, как система будет строиться и управляться.

  • Определяют методы, атрибуты и взаимодействия.

  • Включают детали реализации, такие как алгоритмы и структуры данных.

  • Преобразуют требования в структурированный план для разработки.

  • Обычно изображаются в виде диаграмм классов, диаграмм последовательностей или паттернов проектирования

Применение классов проектирования

  • Стадия проектирования следует за стадией анализа, во время которой создаются классы анализа, и переводит требования к приложению в подробный дизайн.

  • Уточняют внутреннюю структуру и поведение компонентов приложения.

  • Разрешают вопросы, связанные с эффективностью, возможностью переиспользования и поддерживаемостью.

  • Служат как план для написания кода и внедрения.

  • Используются для создания диаграмм классов, диаграмм последовательностей и документации по дизайну приложения для разработчиков.

Что такое классы анализа?

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

  • Классы анализа служат как исследователи или детективы в процессе построения дизайна системы

  • Они собирают информацию о том, что должна выполнять система, кто будет ее использовать и какие данные она будет обрабатывать.

  • Это включает исследование потребностей пользователей, бизнес-процессы и любые внешние системы и интеграции, с которыми будет взаимодействовать наша система.

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

    В целом, классы анализа необходимы для обеспечения соответствия программного решения потребностям пользователей и заинтересованных сторон.

Характеристики классов анализа

  • Фокусируются на понимании проблем предметной области и требованиях к системе.

  • Абстрагируют представление сущностей, атрибутов и отношений в системе.

  • Предоставляют общий вид на составные части системы без погружения в детали реализации.

  • Выявляют потребности пользователей, бизнес-процессов и внешних интеграций.

  • Обычно описывается с помощью моделей предметной области, вариантов использования или пользовательских историй.

Использование классов анализа

  • Служат как первый шаг в проектировании дизайна системы для сбора и анализа требований к приложению.

  • Помогают найти общий язык и понимание с заказчиком при обсуждении системы.

  • Обеспечивают базу для дальнейшей разработки дизайна системы и фаз разработки.

  • Помогают определить ключевые функциональности и ограничения системы.

  • Используются для создания пользовательских историй, вариантов использования и моделей предметной области для фиксации требований.

Отношения между классами анализа и проектирования

1. Взаимозависимость

  • Классы проектирования строятся на основании изысканий классов анализа.

  • Классы анализа обеспечивают базу и требования для фазы дизайна.

  • Без ясного понимания проблем предметной области и требований, описанных классами анализа, будет сложно создать эффективные классы проектирования.

  • Классы анализа фокусируются на определении, что система должна делать и ее основных компонентах.

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

2. Итеративность

  • Отношения между классами анализа и проектирования часто итеративны.

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

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

Переход от классов анализа к классам проектирования

Шаг 1. От анализа к проектированию

  • Переход от классов анализа к классам проектирования включает в себя преобразование требований к системе, определенных на стадии анализа, в структурированный план для реализации.

  • Классы анализа обеспечивают входные данные для разработки архитектуры приложения, определяя компоненты, взаимосвязи и поведение, требуемые для выполнения требований ТЗ.

Шаг 2. Создание классов проектирования

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

  • Классы проектирования включают в себя детали реализации, такие как алгоритмы, структуры данных и системные взаимодействия, для достижения указанных в ТЗ требований.

Шаг 3. Уточнения и итерация

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

  • Классы проектирования могут влиять на обновления классов анализа по мере выявления новых проектных соображений или ограничений.

Примеры из практики классов анализа и проектирования

1. Классы анализа

Система электронной коммерции (интернет-магазин):

  • Юз-кейс: Определим классы анализа такие как «Customer», «Product», «Order» и «Payment» чтобы понять, какими сущностями мы располагаем и какие отношения между ними вовлечены в систему магазина.

  • Цель: Проанализировать требования пользователей и бизнес‑процессов, чтобы определить какие функции система должна поддерживать и как они будут взаимодействовать между собой.

  • Например: класс «Customer» может иметь атрибуты, такие как имя, адрес электронной почты и почтовый адрес, тогда как класс «Order» может иметь атрибуты номер заказа, товары и общая цена.

Система управления больницей:

  • Юз‑кейс: Определим классы анализа такие как «Patient», «Doctor», «Appointment» и «MedicalRecord» чтобы зафиксировать основные сущности в системе.

  • Цель: Проанализируем потоки пациентов, докторов и администраторов чтобы определить требования к составлению расписания, управлению записями в медицинских карточках и координации медицинской помощи.

  • Например: класс «Appointment» может включать в себя такие атрибуты как дата и время приема, идентификатор доктора и пациента, отражающие процессы составления расписания приемов.

2. Классы проектирования

Система электронной коммерции (интернет-магазин):

  • Юз-кейс: Переводим классы анализа в классы проектирования чтобы уточнить, как система должны быть реализована.

  • Цель: Определить внутреннюю структуру и поведение компонентов приложения, чтобы удовлетворить требованиям, определенным на этапе анализа.

  • Например: Классы проектирования могут включать в себя «CustomerManager», «ProductCatalog», «OrderProcessor» и «PaymentGateway», каждый отвечает за определенный функционал и взаимодействие внутри системы.

Система управления больницей:

  • Юз‑кейс: Разработаем классы проектирования такие как «AppointmentScheduler», «PatientRecordManager,» «DoctorRegistry», и «BillingSystem» чтобы уточнить реализацию компонентов системы.

  • Цель: Уточнить алгоритмы, структуры данных и интерфейсы чтобы поддержать функции системы, требуемые ТЗ.

  • Примеры: Класс «AppointmentScheduler» может включать в себя методы для записи, отмены и переноса приема с алгоритмами по оптимизации свободных слотов и предотвращению накладок в расписании.

Разница между классами проектирования и классами анализа

Аспект

Классы анализа

Классы проектирования

Назначение

Определить требования и понять проблематику предметной области

Определить как система будет построена и управляться

Фокус

Что система должна мочь делать (функциональные требования)

Как система будет выполнять свои задачи (детали реализации)

Уровень детализации

Поверхностный уровень, фокус на сущностях, атрибутах и взаимоотношениях

Детальный уровень, специфицируют методы, атрибуты и взаимодействие

Реализация

Без деталей реализации, абстрактное представление

Уточнение деталей реализации, конкретное представление

Зависимости

Зависит от требований пользователей, бизнес-процессов и внешних систем

Строится на основе классов анализа, переводя требования в структурированный план

Получаем на выходе

Примеры применения, пользовательские истории, модели предметной области

Диаграммы классов, диаграммы последовательностей, паттерны проектирования

Очередность

Ранняя стадия разработки системы, до проектирования

Следует за стадией анализа, до реализации

Гибкость

Более гибки и могут меняться в процессе анализа

Менее гибки, изменения могут потребовать больше усилий в процессе проектирования

Теги:
Хабы:
+1
Комментарии0

Публикации

Истории

Работа

Ближайшие события

25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область