Архитектура программного обеспечения (software architecture) – это представление, которое даёт информацию о компонентах ПО, обязанностях отдельных компонентов и правилах организации связей между компонентами. Необходимость архитектуры обоснована сложностью программного обеспечения. Продуманная архитектура облегчает разработку и дальнейшее развитие ПО. Она служит базисом, каркасом создаваемой системы, интегрируя отдельные компоненты и создавая высокоуровневую модель системы.
Набор принципов, используемых в архитектуре, формирует архитектурный стиль (software architecture style). Применение архитектурного стиля сродни употреблению шаблона проектирования, но не на уровне компонента (модуля или класса), а на уровне всей создаваемой системы ПО. Как и шаблоны проектирования, архитектурные стили упрощают коммуникацию разработчиков и предлагают готовые решения целого класса абстрактных проблем. В таблице 1 представлено короткое описание основных архитектурных стилей.
Таблица 1
Основные архитектурные стили
Архитектурный стиль | Описание |
Клиент-серверная модель | Разделение системы на два приложения – клиент и сервер. При работе клиент посылает запросы на обслуживание серверу |
Компонентная архитектура | Деление системы на компоненты, которые могут быть повторно использованы и не зависят друг от друга. Каждый компонент снабжается известным интерфейсом для коммуникаций |
Многоуровневая архитектура | Разделение функций приложения на группы (уровни), которые организованы в виде стекового набора |
Шина сообщений | Система, которая может посылать и передавать информационные сообщения в определённом формате по общему коммуникационному каналу. Благодаря этому организуется взаимодействие систем без указаний конкретных получателей сообщений |
Многозвенная архитектура | Разделение функций подобно многоуровневой архитектуре, но группировка происходит не только на логическом, а и на физическом уровне – отдельным группам соответствует отдельный компьютер (сервер, кластер) |
Объектно-ориентированная архитектура | Представление системы в виде набора взаимодействующих объектов |
Выделенное представление | Выделение в системе отдельных групп функций для взаимодействия с пользователями и обработки данных |
Архитектура, ориентированная на сервисы | Каждый компонент системы представлен в виде независимого сервиса, предоставляющего свои функции по стандартному протоколу |
Важно понимать, что стили не исключают совместное применение, особенно при проектировании сложных систем. По сути, архитектурные стили допускают группировку согласно направлению решаемых ими задач. Например, Шина сообщений и Архитектура, ориентированная на сервисы – это коммуникационные стили (т. е. их задача – способ организации коммуникации между отдельными компонентами). Далее отдельные архитектурные стили будут рассмотрены подробнее.