Загрузка данных


Кратко по контрольным вопросам:

1. **Архитектура ПО** — высокоуровневое описание структуры системы: из каких компонентов она состоит, как они взаимодействуют и как организована обработка данных.

2. **Задачи архитектурного проектирования** — упростить разработку и сопровождение, уменьшить число ошибок, повысить расширяемость, облегчить распределение работы между разработчиками.

3. **Компонент** — самостоятельная часть программной системы, выполняющая определённый набор функций (например, модуль управления пользователями).

4. **Ответственность компонента** — чётко определённая область функциональности, за которую отвечает данный компонент и только он.

5. **Интерфейсы взаимодействия** — нужны, чтобы один компонент мог использовать функции другого, не зная деталей его внутренней реализации.

6. **Почему минимизируют зависимости** — чем слабее связаны модули, тем проще изменять и сопровождать систему, не затрагивая остальные части.

7. **Принцип разделения ответственности** — каждый компонент должен отвечать только за одну группу логически связанных функций.

8. **Основные архитектурные стили** — монолитная, клиент-серверная, слоистая, микросервисная.

9. **Особенности слоистой архитектуры** — система делится на слои (представление, бизнес-логика, данные), каждый взаимодействует только с соседним; понятная структура, но избыточность прохождения запроса через все слои и риск размывания границ слоёв.

10. **Монолитная vs микросервисная** — в монолитной все компоненты входят в одно приложение (просто разрабатывать, сложно масштабировать); в микросервисной — множество независимых сервисов, разрабатываемых отдельно (гибко, но избыточно для небольших проектов).

11. **Почему слоистая клиент-серверная для небольших систем** — она проста для понимания, хорошо масштабируется и соответствует современным подходам к разработке.

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