# AfRel -- введение **AfRel** -- архитектурная методика на основе ресурсных ограничений. ## Введение в AfRel (Architecture Framework with Resource Limitations) ## Проблема Существующие подходы к управлению архитектурой (**Enterprise Architecture**, **TOGAF**, **ArchiMate**, **UML**, **SysML**) часто страдают от разрыва между «бумажной» архитектурой и материальной реальностью разработки, эксплуатации и бизнеса. * Требования теряются в переходах между уровнями. * Архитектурные решения принимаются без проверяемой связи с бизнес-целями. * Деньги, время и усилия тратятся на «паразитические» задачи — те, которые не повышают способность системы выживать в меняющейся среде. * Документация версионируется вручную, трассировка исчезает, ответственность размывается. **AfRel** предлагает материалистический способ организации архитектурной деятельности, основанный на жёсткой, но прагматичной системе артефактов, версий и проверок. ## Базовый императив **AfRel** исходит из того, что любая система (бизнес, IT-сервис, код, команда) существует в условиях ограниченных ресурсов (время, деньги, люди, вычислительные мощности, энергия) и стремится реализовать базовый императив *выживай*. В переводе на язык архитектуры это означает: ```text Каждое архитектурное решение должно быть обосновано тем, как оно повышает шансы системы сохранить своё существование или развиваться в данных условиях. ``` Если решение или задача не могут быть обоснованы в терминах выживания — они считаются паразитическими (эксплуататорскими, потребительскими) и подлежат исключению или пересмотру. ## Основные принципы AfRel * *Материальность* — все артефакты (цели, требования, задачи, проверки) имеют измеримые атрибуты по трём осям: количество (X), качество (Y), деньги/ресурсы (Z). * *Трассируемость* — каждый артефакт имеет явную ссылку на родительский артефакт (от бизнес-цели до проверки инфраструктуры). * *Неизменность имени* — артефакты не переименовываются; при изменении создаётся новый артефакт, старый объявляется устаревшим (`deprecated`). * *Четырёхчастная структура* — на каждом уровне (`бизнес`, `архитектура`, `софт`, `инфра`) артефакты делятся на: + `targ` (цель, императив) + `req` (требование, условие) + `task` (задача, действие) + `check` (проверка верификации) * *Версионирование* — сквозное, четырёхуровневое (x.y.z.b = бизнес.архитектура.софт.инфра), хранится в системе контроля версий (**Git**) в виде тегов, привязанных к артефактам. * *Автоматизируемая проверка* — каждая `check` должна иметь измеримый критерий и, по возможности, автоматический способ верификации (`CI`, нагрузочные тесты, финансовая модель). ## Основные понятия | Понятие | Описание | |---|---| |Куб выживания| Пространство с осями X (количество), Y (качество), Z (деньги/ресурсы). Любое состояние системы — точка в кубе, любая цель — вектор (траектория) движения.| |Артефакт | Поименованный объект в репозитории, содержащий `targ` , `req` , `task` или `check` и обязательные поля X, Y, Z.| |Уровень артефакта| `b` (business), `a` (architecture), `s` (software), `i` (infrastructure).| |Часть артефакта| `targ` , `req` , `task` , `check` .| |Иерархия имён| Строится добавлением цифр без разделителей (например, `1b-targ` → `1a1-req` → `1a1s1-task` ).| |Репозиторий бизнес-процесса| Хранит артефакты уровня `b` и `a` .| |Репозиторий софта/инфры| Хранит код, тесты, скрипты, но версии синхронизируются с бизнес-тегами.| ## Краткий обзор практик * *Формулировка цели* — в терминах X, Y, Z с квадрантом куба выживания (расширение/сжатие, повышение/снижение качества, отток/приток ресурсов). * *Контрольный вопрос* — «Как эта цель повышает выживание?» (ответ в котором нет измеримых параметров, времени и денег -- цель не принимается). * *Разложение требований* — `цель` (`b-targ`) → `архитектурные требования` (`a-req`) → `задачи` (`a-task`, `s-task`, `i-task`) → `проверки` (`a-check`, ...). * *Планирование* — дорожная карта, где бизнес-задачи (`b-task`) сопровождаются метками архитектурных задач (`a-task`) и контрольными точками. * *Автоматическая проверка* — **CI** проверяет наличие обязательных полей, трассировку, неизменность имён, связь тегов с артефактами. ## Место **AfRel** среди других фреймворков **AfRel** не заменяет **TOGAF**, **ArchiMate**, **UML**, **SysML** — он дополняет их, вводя дисциплину материальности и проверки. Вы можете использовать любые нотации для моделирования, но **AfRel** требует, чтобы каждый элемент модели был привязан к артефакту `req` , `task` или `check` с измеряемыми X, Y, Z. Таким образом, **AfRel** — это методология поверх методологий или парадигма управления архитектурой, основанная на ресурсных ограничениях. ## Дальнейшие шаги В последующих разделах документа будут детально описаны: * Структура артефактов (YAML-схема) * Кубы выживания и траектории * Дорожная карта (графическая нотация) * Версионирование и связи с Git * Шаблоны чек-листов * Примеры (правильные и антипаттерны) * Рекомендации по внедрению