Разделение функциональности по компонентам

Сложность: medium Тема: ARCH
архитектура CRC-карточки диаграмма компонентов

Контекст задачи

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

Формулировка

Разработайте компонентную архитектуру программной системы на основе выбранного архитектурного стиля.

Теория и\или Примеры

теория и примеры

Подзадача А. Выбор архитектурного стиля

  1. Выберите архитектурный стиль для вашей системы (MVC, клиент-сервер, микросервисный, слоёный, pipe-and-filter и др.)
  2. Обоснуйте выбор: почему этот стиль подходит для вашей предметной области?

Пример: MVC (Model-View-Controller)

  • Модель (Model) — совокупная модель данных предметной области
  • Представление (View) — компонент, отвечающий за отображение Модели и взаимодействие с пользователем
  • Контроллер (Controller) — логика обработки действий пользователя для управления Моделью

Подзадача Б. Описание компонентов (CRC-карточки)

Для каждого компонента/модуля заполните CRC-карточку:

компонент 1
Обязанности (Responsibilities) Взаимодействие (Collaborators)
- обязанность 1 - класс/модуль, с которым взаимодействует
- обязанность 2 - другой класс/модуль
- обязанность 3  

Правила заполнения CRC:

  • Обязанности — что этот компонент делает (глаголы)
  • Взаимодействие — кто нужен компоненту для выполнения обязанностей

Подзадача В. Диаграмма компонентов

Постройте диаграмму компонентов (модулей) системы, отражающую:

  • Компоненты и их интерфейсы
  • Зависимости между компонентами
  • Интерфейсы «требуется» (required) и «предоставляется» (provided)

Пример диаграммы компонентов

Подзадача Г. Спецификация интерфейсов

Для каждого функционального элемента заполните таблицу:

Название элемента Обязанности (ответственность) Интерфейсы входящие Интерфейсы исходящие
Компонент А API-A-in API-A-out
Компонент Б API-Б-in API-Б-out

Результаты

  1. Обоснование выбора архитектурного стиля
  2. CRC-карточки для всех компонентов (минимум 3)
  3. Диаграмма компонентов
  4. Таблица спецификации интерфейсов

Критерии оценивания

  • Архитектурный стиль выбран и обоснован
  • CRC-карточки заполнены для всех компонентов (минимум 3)
  • Диаграмма компонентов отражает все зависимости
  • Таблица интерфейсов заполнена полностью
  • Соблюдены принципы низкой связанности и высокой связности