Оригинал: November 1995, Philippe Kruchten
https://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf
Существует множество книг и статей, где авторы пытаются изобразить на одной диаграмме суть архитектуры системы. Но если взглянуть внимательнее на эти диаграммы, становится понятным, что отобразить все на одной невозможно. Мы предлагаем организовать описание архитектуры ПО, используя несколько картинок, каждая из которых отвечает за определенный набор проблем.
Архитектура ПО = {Элементы, Формы, Обоснование/Ограничения}
Чтобы описывать большие и сложные архитектуры, мы предлагаем использовать 5 “взглядов”:
Logical архитектура использует объектно-ориентированный подход, в основном поддерживает функциональные требования(какие сервисы система должная предоставлять пользователям). Для представления логической архитектуры используются обозначения диаграммы классов, шаблонов классов. Диаграмма классов показывает набор классов(Class) и их взаимосвязей: ассоциация(Association), использование(Usage), композиция, наследование(Inheritance), и т.д. Наборы связанных классов группируются по категориям класса(Class category). Схожие механизмы или сервисы определены в утилиты класса(Class utility).
Process архитектура рассматривает некоторые нефункциональные требования, такие как производительность и доступность. Process архитектура может быть описана несколькими уровнями абстракции.
Development архитектура сосредотачивается на фактической организации программного модуля в среде разработки архитектуры ПО. ПО упаковано в небольшие библиотеки или подсистемы, которые могут быть разработаны с помощью одного или нескольких разработчиков. Development архитектура системы представлена диаграммами модулей и подсистем. Правила, которые регулируют development архитектуру: разделение, группировка, видимость. Development архитектура учитывает внутренние требования, связанные с простотой разработки, управлением ПО, повторным использованием ПО, а также ограничениями, которые накладываются на набор инструментов или на язык программирования.
Рекомендуется использовать слоевую структуру для представления development архитектуры.
Пример слоевой структуры для Hughes Air Traffic Systems(HATS)
Соответствие ПО с аппаратными средствами. Physical архитектура учитывает прежде всего нефункциональные требования системы, такие как доступность, надежность (отказоустойчивость), производительность и масштабируемость. ПО выполняется в сети компьютеров или на узлах обработки. Различные элементы(сети, процессы, задачи и объекты) нужно отобразить на различных узлах.
Предыдущие 4 системы работают вместе при помощи сценариев. Сценарии выполняют 2 основные функции:
Класс обычно реализуется в виде модуля. Дополнительные ограничения накладываются на определения подсистем, таких как организация команды, ожидаемая величина кода, степень ожидаемого повторного использования. Logical и development взгляды очень близки, но решают разные проблемы. Чем больше проект, тем больше расстояние между этими видами.
Процессы и группы процессов отображаются на доступных аппаратных средствах в различных конфигурациях для тестирования или развертывания.