Стили архитектуры программного обеспечения
Стили архитектуры программного обеспечения — это именованные, повторно используемые организационные схемы, которые определяют типы компонентов и коннекторов, используемых системой, а также ограничения на способы их комбинирования.
Definition
Архитектурный стиль — это семейство архитектур, характеризующееся словарем типов компонентов и коннекторов, а также набором ограничений на то, как экземпляры этих типов могут быть сконфигурированы.
Scope
Эта тема охватывает классические стили, такие как многослойная, клиент-серверная, конвейерная (pipe-and-filter), репозиторная (ориентированная на данные), событийно-ориентированная и publish-subscribe, микроядерная, а также сервис-ориентированные и микросервисные архитектуры; архитектурный стиль REST для сетевых систем; и компромиссы в отношении качественных атрибутов, которые мотивируют выбор одного стиля над другим.
Core questions
- Какой словарь компонентов и коннекторов определяет каждый стиль?
- Какие качественные атрибуты данный стиль способствует или препятствует?
- Как стили комбинируются в рамках одной системы?
- Чем сетевые и распределенные стили, такие как REST и микросервисы, отличаются от классических?
Key theories
- Стили как словари компонентов-коннекторов
- Шоу и Гарлан характеризовали архитектуры повторяющимися паттернами компонентов и коннекторов с соответствующими ограничениями, что дало этой области словарь стилей, таких как конвейерный (pipe-and-filter), многослойный и репозиторный.
- Архитектурный стиль REST
- Филдинг вывел REST как набор ограничений — отсутствие состояния (statelessness), унифицированный интерфейс, кэшируемость, многослойная система — которые объясняют масштабируемость и эволюционируемость веба и направляют проектирование сетевых сервисов.
Clinical relevance
Выбор подходящего стиля на ранних этапах приводит структуру системы в соответствие с ее доминирующими требованиями к качеству; плохое соответствие между стилем и потребностями трудно и дорого исправлять после начала разработки.
Evidence & guidelines
ISO/IEC/IEEE 42010 описывает архитектуру с точки зрения точек зрения (viewpoints) и представлений (views), в рамках которых документируются и анализируются стили.
History
Каталогизация архитектурных стилей началась с Шоу и Гарлана в середине 1990-х годов, когда архитектура программного обеспечения стала признанной дисциплиной; диссертация Филдинга 2000 года формализовала REST, а в 2010-х годах наблюдался рост микросервисных и событийно-ориентированных стилей для систем облачного масштаба.
Key figures
- Mary Shaw
- David Garlan
- Roy Fielding
- Len Bass
Related topics
Seminal works
- shaw1996
- fielding2000
- bass2012
Frequently asked questions
- В чем разница между архитектурным стилем и паттерном проектирования?
- Архитектурный стиль описывает общесистемную организацию — типы компонентов и коннекторов, а также правила их комбинирования — тогда как паттерн проектирования решает более локальную проблему проектирования внутри компонентов; стили оперируют на более высоком уровне детализации.
- Может ли система использовать более одного стиля?
- Да. Реальные системы, как правило, гетерогенны, комбинируя стили — например, многослойная архитектура, чей уровень представления является событийно-ориентированным, а сервисы взаимодействуют через REST — при этом каждый стиль применяется там, где его компромиссы наиболее подходят.