Разделение функциональности по компонентам
Контекст задачи
На этапе архитектурного проектирования необходимо определить крупные компоненты системы и их взаимодействие. Правильное разделение функциональности снижает связанность (coupling) и повышает связность (cohesion) внутри компонентов, что облегчает разработку, тестирование и поддержку.
Формулировка
Разработайте компонентную архитектуру программной системы на основе выбранного архитектурного стиля.
Теория и\или Примеры
Подзадача А. Выбор архитектурного стиля
- Выберите архитектурный стиль для вашей системы (MVC, клиент-сервер, микросервисный, слоёный, pipe-and-filter и др.)
- Обоснуйте выбор: почему этот стиль подходит для вашей предметной области?
Пример: 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 |
Результаты
- Обоснование выбора архитектурного стиля
- CRC-карточки для всех компонентов (минимум 3)
- Диаграмма компонентов
- Таблица спецификации интерфейсов
Критерии оценивания
- Архитектурный стиль выбран и обоснован
- CRC-карточки заполнены для всех компонентов (минимум 3)
- Диаграмма компонентов отражает все зависимости
- Таблица интерфейсов заполнена полностью
- Соблюдены принципы низкой связанности и высокой связности