Архитектура решений

Pause

Архитекту́ра реше́ний — практика проектирования конкретной системы или комплекса систем, при которой требования бизнеса, ограничения предприятия и атрибуты качества преобразуются в целостную структуру решения: состав частей, их зоны ответственности, способы взаимодействия и принципы развития. Термин закрепился в области управления архитектурой информационных систем наряду с корпоративной архитектурой, описывающей предприятие в целом, и программной архитектурой, определяющей внутреннее устройство отдельного приложения[1].

Предметом архитектуры решений служит отдельный проект или продукт: система электронного документооборота, расчётная система, интернет-магазин. Архитектор решений выбирает состав подсистем и способы их соединения, распределяет ответственность между компонентами, задаёт принципы хранения данных и оценивает, насколько выбранная структура выдержит рост нагрузки. Успешность этой работы измеряется тем, насколько система устойчиво решает задачи владельца при приемлемой стоимости владения[2].

undefined
Общие сведения
Архитектура решений
Область использования информационные технологии, архитектура предприятия, программная инженерия, искусственный интеллект, управление проектами
Дата появления 1990-е годы
Место появления США и Западная Европа
Автор понятия складывалось в практике; существенный вклад внесли Дж. Захман, Ф. Крухтен, М. Фаулер
Ключевые слова архитектор решений, архитектурное решение, нефункциональные требования, заинтересованная сторона, шаблон проектирования
Базовые понятия информационная система, требование, программная архитектура, интеграция систем, машинное обучение

История

Истоки в практике программной инженерии

Практика осознанного проектирования структуры систем старше самого термина. В 1968 году Э. Дейкстра описал построение операционной системы THE в виде упорядоченных слоёв, где каждый уровень опирается только на нижележащие; слоистая организация сделала систему обозримой и проверяемой[3]. В 1972 году Д. Парнас сформулировал критерий разбиения на модули: скрывать внутри модуля проектные решения, которые, вероятнее всего, изменятся, а наружу выставлять лишь устойчивые обязательства; этот принцип сокрытия информации до сих пор лежит в основе компонентной организации систем[4].

Эти работы показали, что структура системы — самостоятельный объект проектирования. В корпоративной среде параллельно зрела мысль о связи информационных систем с деятельностью предприятия: модель Дж. Захмана 1987 года разложила описание организации на уровни от бизнес-целей до технической реализации и дала управленцам язык разговора с разработчиками[5].

Оформление дисциплины в 1990-е годы

Слово «архитектура» вошло в название области в начале 1990-х годов. Д. Перри и А. Вулф в работе 1992 года определили архитектуру через совокупность компонентов, связей и ограничений, подчеркнули роль заинтересованных сторон и необходимость описывать систему с разных точек зрения[6]. М. Шоу и Д. Гарлан систематизировали повторяющиеся структуры систем — архитектурные стили — и закрепили взгляд на архитектуру как на дисциплину с собственным предметом[7].

П. Крахтен в 1995 году предложил модель «4+1», при которой архитектура описывается пятью согласованными представлениями: логическим, процессным, реализации и развёртывания, связанными сценариями использования; модель вошла в практику благодаря Унифицированному процессу разработки[8]. К концу десятилетия появились первые своды правил описания архитектуры: рекомендация IEEE 1471—2000 закрепила понятия заинтересованной стороны, точки зрения и вида, позднее перешедшие в международный стандарт[9].

Выделение архитектуры решений

Термин «архитектура решений» вошёл в отраслевой оборот с методологией TOGAF, первую редакцию которой консорциум The Open Group опубликовал в 1995 году, опираясь на рамочную структуру министерства обороны США[10]. Методология разделила архитектурную работу по уровням — бизнес, данные, приложения, технологии — и потребовала связывать корпоративные нормы с конкретными проектами; так родилась промежуточная роль, отвечающая за архитектуру отдельного решения. Х. Хофмайстер, Р. Норд и Д. Сони в это же время описали метод «глобального анализа», соединяющий факторы проекта с архитектурным планом его реализации[11].

В 2000-е и 2010-е годы роль архитектора решений закрепилась в крупных заказчиках и интеграторах: проектировать «в целом» поручали специалисту, который говорил с бизнесом о задачах, а с разработкой — о компонентах. Л. Басс, П. Клементс и Р. Казман ввели в оборот понятие значимых решений — тех, что трудно изменить после постройки, — и показали, что именно они составляют архитектуру[1]. Н. Розански и Э. Вудс описали работу архитектора системы как службу заинтересованным сторонам: каждое представление существует потому, что кому-то нужен ответ на его вопрос[12].

undefined

М. Ричардс и Н. Форд подвели итог: архитектурная работа начинается не со схем, а с определения характеристик, которыми система обязана обладать, — от них зависит выбор стиля и технологии[13]. М. Фэйрбэнкс предложил руководствоваться риском: вкладываться в проектирование тех свойств, сбои в которых дороже всего обойдутся владельцу[14].

Определение и границы понятия

Соотношение с уровнями архитектуры

В организациях, ведущих систематическую архитектурную работу, принято различать три уровня. Корпоративная архитектура описывает деятельность предприятия в целом: цели, процессы, данные, приложения и технологии, а также нормы их согласования[15]. Архитектура решений соединяет эти нормы с конкретным проектом, а программная архитектура отвечает за внутреннее устройство созданного продукта[1].

Границы между уровнями подвижны: в малом проекте один человек совмещает все роли, в крупной организации архитектор решения отчитывается о соответствии корпоративным стандартам. Архитектура решений при этом не сводится к «промежуточному звену»: она добавляет собственный предмет — выбор состава подсистем, распределение данных, план внедрения и перехода со старых систем[16].

undefined

Роль архитектора решений

Архитектор решений работает на стыке трёх языков: языка бизнеса, языка проекта и языка технологий. Он переводит задачу заказчика в требования и характеристики качества, предлагает структуру системы и сопровождает реализацию[12]. Его горизонт — жизненный цикл одного решения, но рассматривает он систему в целом, включая эксплуатацию, сопровождение и увязку с соседними системами.

undefined

Обязанности в рамках этой роли варьируются от компании к компании: от выбора продуктов до консультирования проектов. Общим остаётся ответственность за значимые решения: состав подсистем, размещение данных, распределение обязанностей между узлами, порядок интеграции. Ошибки на этом уровне дороги: замена способа хранения данных или способа соединения подсистем после внедрения обходится на порядок дороже, чем на старте[2].

Процесс проектирования решения

Анализ контекста и требований

Работа начинается с контекста: с кем решение взаимодействует, какие нормы на него распространяются, кто его владельцы и пользователи, каковы ограничения бюджета и сроков. Затем собираются требования — функциональные, описывающие поведение системы, и характеристики качества, описывающие, насколько хорошо система должна вести себя: скорость отклика, доступность, защищённость, переносимость[1]. Характеристики качества формулируются измеримо: не «система должна быть быстрой», а «страница результата открывается не дольше двух секунд при пятистах одновременных пользователях». Русскоязычная практика подчёркивает значение этого этапа: разбор проблем проектирования автоматизированных систем показывает, что большинство переделок уходит корнями в неясные требования и несогласованные обязанности подразделений[17]. Поэтому архитектор фиксирует границы системы и список заинтересованных сторон до начала проектирования, а спорные требования выносит на решение владельца.

Выработка и оценка вариантов

Существенная черта архитектурной работы — выбор среди вариантов. Для каждой значимой задачи обычно есть несколько вариантов структуры: готовый продукт или собственная разработка, свои серверы или облако, деление по функциям или по данным. Архитектор сопоставляет варианты по характеристикам качества и стоимости владения, включая расходы на эксплуатацию и развитие[13].

undefined

Фиксация описания и проверка соответствия

Выбранные решения фиксируются в архитектурном описании — наборе документов и моделей, доступных участникам проекта: от диаграмм структуры до табличных реестров решений с их причинами. Описание не самоцель: оно нужно, чтобы разработчики понимали зоны ответственности компонентов, эксплуатация — порядок развёртывания, а заказчик — что именно он получает[18].

По мере реализации архитектор проверяет соответствие постройки описанию: следит за отклонениями от договорённостей и разбирает инциденты, обнажившие слабые места структуры. Итогом цикла служит пересмотр описания: архитектура решения — не разовый документ, а текущая модель, которая сопровождает систему до вывода из эксплуатации[1].

Атрибуты качества

Основные атрибуты и сценарии

Характеристики качества — то, что отличает один вариант структуры от другого при равных функциях. В литературе устоялся набор: производительность, надёжность и доступность, защищённость, модифицируемость, переносимость, удобство сопровождения, масштабируемость[1]. Для измеримости каждая характеристика формулируется через сценарий: стимул, источник, среду, ответ системы и меру успеха. Доступность записывают долей времени работоспособности; её связь с показателями надёжности выражается формулой A = MTBF / (MTBF + MTTR), где MTBF — среднее время между отказами, MTTR — среднее время восстановления.

undefined

Компромиссы и методы оценки

Свойства качества связаны не сложением, а обменом: наращивание защищённости обычно замедляет отклик и увеличивает зацепление частей при проверках, дублирование узлов повышает доступность и удорожает эксплуатацию, глубокая настройка под заказчика снижает переносимость. Архитектор управляет этими компромиссами осознанно: сначала выясняет, какие характеристики для решения первостепенны, затем жертвует второстепенными в пределах, согласованных с владельцем[13].

Архитектурное описание

Виды, точки зрения и модели

Описание собирают из представлений — разделов, каждый из которых отвечает на вопросы определённой группы участников. Модель «4+1» связала логическое, процессное, реализации и развёртывания общими сценариями[8]. Международный стандарт описания архитектуры закрепил словарь понятий и требование обосновывать выбор точек зрения[19]. Н. Розански и Э. Вудс предложили готовый набор видов и «перспективы» — сквозные требования качества вроде защищённости[12]. Для записи моделей служат графические языки: UML покрывает структуру и поведение программ, BPMN — процессы бизнеса, язык ArchiMate связывает слои от бизнеса до технологий и служит общим знаменателем между архитекторами разных уровней[20].

undefined

Документирование и сопровождение

Правило практиков — описывать не всё, а то, что нужно читателю: у каждого документа есть адресат и вопрос, на который он отвечает. На практике значительная часть описаний живёт в репозиториях кода и системах учёта задач, а свежесть поддерживается процедурами, при которых значимое изменение не считается завершённым, пока не отражено в описании.

Стандарты и методологии

Стандарт описания архитектуры

Международный стандарт описания архитектуры вырос из рекомендации IEEE 1471—2000, ставшей в 2011 году стандартом ISO/IEC 42010, а в 2022 году выпущенной в новой редакции ISO/IEC/IEEE 42010 совместно тремя организациями стандартизации; редакция 2022 года действует и распространяет требования с программных систем на системы и предприятия[19]. Стандарт не предписывает метод проектирования, он задаёт словарь и требования к содержанию описания.

Методологии корпоративного уровня

TOGAF — самая распространённая открытая методология архитектурной работы; её десятая редакция действует с апреля 2022 года и оформляет методологию как набор модулей: базовые принципы и прикладные руководства[10]. Язык ArchiMate в версии 3.2 служит для записи моделей в согласовании с методологией[20]. Наряду с TOGAF используются собственные методологии крупных поставщиков и лёгкие практики, при которых архитектурная работа ведётся итерациями гибкой разработки[13].

Критика и практика применения

Распространённые затруднения

Практика архитектуры решений сталкивается с повторяющимися затруднениями. Первое — отрыв описаний от реализации: схемы устаревают, и через годы им никто не доверяет[18]. Второе — переусложнение: архитектор строит «на вырост» там, где владельцу нужен скромный результат, и система несёт лишние расходы весь срок службы; противовес — риск-ориентированный подход, соразмеряющий глубину проработки с ценой ошибки[14]. Третье — слабое представительство интересов эксплуатации и защиты, когда описание создаётся с точки зрения разработчиков, а первые инциденты обнажают забытые требования[12].

Отдельная трудность — организационная: роль архитектора решений размыта между корпоративной архитектурой и руководителями проектов, и там, где ответственность не закреплена, значимые решения принимаются по умолчанию[1].

Области применения

Архитектура решений востребована там, где строится или меняется крупная система: внедрение электронного документооборота, перевод учёта на новую платформу, объединение данных филиалов, построение расчётных сервисов. Разборы отраслевых проектов показывают типовой ход: приспособление методологии к масштабу организации, архитектурное задание, целевая архитектура решения и план перехода[16]. В государственном секторе архитектурная работа связана с требованиями к автоматизированным системам и конкурсными процедурами[17].

Развитие области идёт по пути уточнения связи архитектуры с измеримыми характеристиками и встраивания архитектурной работы в итерации гибкой разработки[13]. Зрелая архитектурная работа снижает стоимость владения системами, хотя прямые измерения эффекта затруднены[2]."

Примечания

  1. ↑ 1 2 3 4 5 6 7 Bass L., Clements P., Kazman R. Software Architecture in Practice. — 4th ed.. — Boston: Addison-Wesley, 2021. — ISBN 978-0-13-688609-9.
  2. ↑ 1 2 3 Gorton I. Essential Software Architecture. — 2nd ed.. — Berlin: Springer, 2011. — ISBN 978-3-642-19175-6.
  3. ↑ Dijkstra E. W. The structure of the “THE”-multiprogramming system // Communications of the ACM. — 1968. — Т. 11, № 5. — С. 341—346. — doi:10.1145/363095.363143.
  4. ↑ Parnas D. L. On the criteria to be used in decomposing systems into modules // Communications of the ACM. — 1972. — Т. 15, № 12. — С. 1053—1058. — doi:10.1145/361598.361623.
  5. ↑ Zachman J. A. A framework for information systems architecture // IBM Systems Journal. — 1987. — Т. 26, № 3. — С. 276—292. — doi:10.1147/sj.263.0276.
  6. ↑ Perry D. E., Wolf A. L. Foundations for the study of software architecture // ACM SIGSOFT Software Engineering Notes. — 1992. — Т. 17, № 4. — С. 40—52. — doi:10.1145/141874.141884.
  7. ↑ Shaw M., Garlan D. Software Architecture: Perspectives on an Emerging Discipline. — Upper Saddle River: Prentice Hall, 1996. — ISBN 978-0-13-182957-2.
  8. ↑ 1 2 Kruchten P. B. The 4+1 View Model of architecture // IEEE Software. — 1995. — Т. 12, № 6. — С. 42—50. — doi:10.1109/52.469759.
  9. ↑ IEEE Std 1471-2000. IEEE Recommended Practice for Architectural Description of Software-Intensive Systems. — New York: IEEE, 2000.
  10. ↑ 1 2 The TOGAF Standard, 10th Edition (англ.). The Open Group (25 апреля 2022). Дата обращения: 24 сентября 2026.
  11. ↑ Hofmeister C., Nord R., Soni D. Applied Software Architecture. — Boston: Addison-Wesley, 1999. — ISBN 978-0-201-32571-3.
  12. ↑ 1 2 3 4 Rozanski N., Woods E. Software Systems Architecture. — Boston: Addison-Wesley, 2005. — ISBN 978-0-321-11229-3.
  13. ↑ 1 2 3 4 5 Ричардс М., Форд Н. Фундаментальный подход к программной архитектуре: паттерны, свойства, проверенные методы. — СПб.: Питер, 2023. — 448 с. — (Для профессионалов). — ISBN 978-5-4461-1842-7.
  14. ↑ 1 2 Fairbanks G. Just Enough Software Architecture: Risk-Driven Design. — Marshall & Brainerd, 2010. — ISBN 978-0-9846181-0-1.
  15. ↑ Патракова Д. И., Гаврилова Т. Б. Архитектура предприятия: эволюция понятия и выгоды ее формирования // European Science. — 2016. — № 8 (18).
  16. ↑ 1 2 Грубич Т. Ю. Разработка архитектуры предприятия по методологии TOGAF // European journal of Economics and Management Sciences. — 2016. — № 4.
  17. ↑ 1 2 Запорожцев А. В. Проблемы проектирования автоматизированных систем управления организационно-техническими системами // Вестник Нижегородского университета им. Н. И. Лобачевского. — 2013. — № 6—1.
  18. ↑ 1 2 Clements P., Bachmann F., Bass L., Garlan D., Ivers J., Little R., Nord R., Stafford J. Documenting Software Architectures: Views and Beyond. — Boston: Addison-Wesley, 2002. — ISBN 978-0-201-70372-6.
  19. ↑ 1 2 ISO/IEC/IEEE 42010:2022. Software, systems and enterprise — Architecture description. — Geneva: International Organization for Standardization, 2022.
  20. ↑ 1 2 ArchiMate 3.2 Specification (англ.). The Open Group (24 января 2023). Дата обращения: 24 сентября 2026.

Литература

Дополнительно по теме

Pause