JavaRush /Курсы /JSP & Servlets /Модульная архитектура ПО

Модульная архитектура ПО

JSP & Servlets
14 уровень , 5 лекция
Открыта

6.1 Декомпозиция

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

Иногда для простоты это называют принципом “разделяй и властвуй”, но, с точки зрения архитектора ПО, речь идет об иерархической декомпозиции.

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

Декомпозиция

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

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

И самое ценное тут вот что: чем более независимы подсистемы, тем безопаснее сосредоточиться на разработке каждой из них в отдельности в конкретный момент времени и при этом не заботиться обо всех остальных частях.

6.2 Преимущества модульной архитектуры

Использование принципа иерархической декомпозиции позволяет избавиться от хаоса в тысячах классов твоего кода. Помнишь, что твой код разбивается по пакетам (package) и подпакетам? Это и есть одно из выражений иерархический декомпозиции.

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

Вот самые основные из них:

  • Масштабируемость (Scalability) – возможность расширять систему и увеличивать ее производительность за счет добавления новых модулей.
  • Ремонтопригодность (Maintainability) – изменение одного модуля не требует изменения других модулей.
  • Заменимость модулей (Swappability) – модуль легко заменить на другой.
  • Возможность тестирования (Unit Testing) – модуль можно отсоединить от всех остальных и протестировать/починить.
  • Переиспользование (Reusability) – модуль может быть переиспользован в других программах и другом окружении.
  • Сопровождаемость (Maintenance) – разбитую на модули программу легче понимать и сопровождать.

Можно сказать, что в разбиении сложной проблемы на простые фрагменты и заключается цель всех методик проектирования. А термином “архитектура” в большинстве случаев просто обозначают результат такого деления плюс "некие конструктивные решения, которые после их принятия с трудом поддаются изменению" (Мартин Фаулер «Архитектура корпоративных программных приложений»).

Поэтому большинство определений в той или иной форме сводятся к следующему:

"Архитектура идентифицирует главные компоненты системы и способы их взаимодействия. Также это выбор таких решений, которые интерпретируются как основополагающие и не подлежащие изменению в будущем".

"Архитектура — это организация системы, воплощенная в ее компонентах, их отношениях между собой и с окружением. Система — это набор компонентов, объединенных для выполнения определенной функции."

Таким образом, хорошая архитектура — это, прежде всего, модульная/блочная архитектура. Чтобы получить хорошую архитектуру, надо знать, как правильно делать декомпозицию системы. А значит, необходимо понимать, какая декомпозиция считается “правильной” и каким образом ее лучше проводить.

Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Серафим Уровень 109
17 августа 2024
Декомпозиция — основной метод снижения сложности больших систем, заключающийся в их разделении на независимые подсистемы и модули. Это упрощает понимание, разработку и управление системой. Иерархическая декомпозиция обеспечивает гибкость, масштабируемость и устойчивость системы, позволяя сосредотачиваться на разработке отдельных частей без учета остальных. Модульная архитектура обладает ключевыми преимуществами: - Масштабируемость - Ремонтопригодность - Заменимость модулей - Возможность тестирования - Переиспользование Упрощенное сопровождение Хорошая архитектура — это модульная архитектура, результат правильной декомпозиции системы. Архитектура определяет основные компоненты системы и их взаимодействие, формируя базовые, неизменные решения.