Table of Contents

Architectural Blueprints — The “4+1” View Model of Software Architecture

Оригинал: November 1995, Philippe Kruchten
https://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf

Введение

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

Архитектурная модель

Архитектура ПО = {Элементы, Формы, Обоснование/Ограничения}
Чтобы описывать большие и сложные архитектуры, мы предлагаем использовать 5 “взглядов”:


Logical архитектура

Logical архитектура использует объектно-ориентированный подход, в основном поддерживает функциональные требования(какие сервисы система должная предоставлять пользователям). Для представления логической архитектуры используются обозначения диаграммы классов, шаблонов классов. Диаграмма классов показывает набор классов(Class) и их взаимосвязей: ассоциация(Association), использование(Usage), композиция, наследование(Inheritance), и т.д. Наборы связанных классов группируются по категориям класса(Class category). Схожие механизмы или сервисы определены в утилиты класса(Class utility).

Process архитектура

Process архитектура рассматривает некоторые нефункциональные требования, такие как производительность и доступность. Process архитектура может быть описана несколькими уровнями абстракции.


Development архитектура

Development архитектура сосредотачивается на фактической организации программного модуля в среде разработки архитектуры ПО. ПО упаковано в небольшие библиотеки или подсистемы, которые могут быть разработаны с помощью одного или нескольких разработчиков. Development архитектура системы представлена ​​диаграммами модулей и подсистем. Правила, которые регулируют development архитектуру: разделение, группировка, видимость. Development архитектура учитывает внутренние требования, связанные с простотой разработки, управлением ПО, повторным использованием ПО, а также ограничениями, которые накладываются на набор инструментов или на язык программирования.

Рекомендуется использовать слоевую структуру для представления development архитектуры.
Пример слоевой структуры для Hughes Air Traffic Systems(HATS)

Physical архитектура

Соответствие ПО с аппаратными средствами. Physical архитектура учитывает прежде всего нефункциональные требования системы, такие как доступность, надежность (отказоустойчивость), производительность и масштабируемость. ПО выполняется в сети компьютеров или на узлах обработки. Различные элементы(сети, процессы, задачи и объекты) нужно отобразить на различных узлах.

Scenarios(Сценарии)

Предыдущие 4 системы работают вместе при помощи сценариев. Сценарии выполняют 2 основные функции:

Связь между системами

Logical ⇔ process

Logical ⇔ development

Класс обычно реализуется в виде модуля. Дополнительные ограничения накладываются на определения подсистем, таких как организация команды, ожидаемая величина кода, степень ожидаемого повторного использования. Logical и development взгляды очень близки, но решают разные проблемы. Чем больше проект, тем больше расстояние между этими видами.

Process ⇔ physical

Процессы и группы процессов отображаются на доступных аппаратных средствах в различных конфигурациях для тестирования или развертывания.

Заключение

Модель “4 + 1” была с успехом использована на нескольких крупных проектов с использованием(или без) некоторой локальной настройки и регулировки в терминологии.