Волновая модель в продуктовой разработке

Волновая модель в продуктовой разработке

6 октября 2025 г.

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

Проблематика

Конфликт интересов ролей

Общепринятые методологии продуктовой разработки, такие как User Stories или Customer Journey, позволяют сформировать требования к разрабатываемой системе, всякий раз исходя из интересов одной конкретной выбранной роли. Вместе с тем в любой системе всегда задействовано несколько ролей: даже если разрабатываем обычный список заметок, его пользователь может выступать в роли писателя и в роли читателя.

Разные User Stories для разных ролей (или даже для одной и той же роли) могут конфликтовать между собой по противоположным метрикам, однако общепринятой методологии устранения таких конфликтов не существует. Как итог полученные продуктовые требования также могут наследовать конфликты интересов описываемых ролей.

Экспоненциальная сложность

Всякая дополнительная User Story вносит дополнительные логические развилки в общую бизнес-логику. Если система реализована в виде общей state-машины, то каждая бинарная логическая развилка удваивает количество возможных состояний системы, которые нужно закодировать и протестировать. При достижении некоторого порогового объема разработка системы становится нерентабельной: стоимость добавления в систему новой User Story начинает превышать доход/экономию от ее реализации.

Волновая модель как решение

Устранение конфликта интересов ролей

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

Таким образом, волновая модель предлагает резонанс как основной индикатор эффективной работы системы. Индивидуальные метрики ролей могут конфликтовать между собой, но резонансное взаимодействие по определению являются компромиссным решением: самим фактом своего существования резонанс свидетельствует об улучшении индивидуальных метрик обеих сторон.

Устранение экспоненциальной сложности

Всякий волновой субъект потенциально может участвовать сразу в нескольких различных резонансных взаимодействиях. Конфликта между этими взаимодействиями не возникает: волна по определению взаимодействует исключительно со средой, т.е. не зависит от других волн.

Независимость волновых взаимодействий друг от друга достигается за счет особой структуры программного кода: всякий акт доступа к состоянию (чтение или запись) выполняется строго последовательно, носит атомарный характер и всегда возвращает результат. Акт доступа к состоянию будем называть операцией. Одновременное выполнение нескольких операций запрещено, неопределенный результат операции также запрещен. Такое сочетание ограничений приводит к тому, что всякая волна представляет собой линейную последовательность (цепочку) операций. Каждая из операций всегда возвращает результат и является точкой запуска следующей операции.

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

Таким образом, вместо общей state-машины, учитывающей все возможные состояния, мы можем работать с распределенным набором ресурсов, сложность каждого их которых в отдельности ограничена. Сложность каждого отдельного резонансного взаимодействия (общая длина цепочки операций) также ограничена. Рост совокупной сложности системы при добавлении новых резонансов в итоге носит линейный и предсказуемый характер, что позволяет надежно прогнозировать затраты на разработку, тестирование и сопровождение новой функциональности.

Волновая модель как основа для применения AI

Аналитическая система, отслеживающая выполняемые операции, позволяет адресно выявлять точки потерь резонанса: если некоторая операция не вернула результат, то именно в этой точке волна угасла, именно эта точка стала причиной потери резонанса. Накопленный к этому моменту волновой контекст несет информацию обо всех операциях, которые были выполнены до этого момента в ходе распространения волны. Это позволяет выявлять причинно-следственные связи также адресно, без необходимости прибегать к A/B-тестам и законам больших чисел.

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

Фрактализация волнового контекста

Всякое волновое взаимодействие по своей природе носит фрактальный, иерархически самоподобный характер. Например, пользователь клиентского приложения, нажимая на кнопку, взаимодействует с приложением как с самостоятельным субъектом, получая отклик в виде изображения на экране устройства. Нажатие на кнопку и ответное изображение на экране – это артефакты – носители контекста. Артефакты позволяют волнам преодолевать границу между вычислительными пространствами. Из головы пользователя артефакт-нажатие попадает в приложение, а из приложения ответный артефакт-изображение возвращается к пользователю. Внутри приложения нажатие порождает цепочку операций, каждая их которых выполняет запрос к некоторому API. C точки зрения приложения эти запросы являются атомарными операциями, т.е. получается, что резонанс между пользователем и приложением может быть описан одной короткой волной, распространяющейся внутри приложения. Вместе с тем каждое из обращений к API на сервере может порождать целый каскад вторичных обращений к микросервисам, кешам, базам данных и т.д. Получается, что внешне атомарная операция по своей сути является отдельным самостоятельным взаимодействием между приложением и сервером, которое выполняется через обмен артефактами: артефакт-запрос и артефакт-ответ. Получение артефакта-запроса порождает на сервере отдельную волну, результатом которой является отправка артефакта-ответа.

Таким образом, исходное взаимодействие между пользователем и приложением можно фрактально «зумить» до тех пор, пока не доберемся до взаимодействия между системой и другим пользователем-субъектом. «Другой» всегда есть, в противном случае существование самой системы-волновода лишено смысла. Каждый из пользователей на конечном уровне взаимодействует с системой, однако при полном развертывании фрактала мы получаем в итоге описание резонансного взаимодействия между парой конечных пользователей.

Возможность произвольно «зумить» волновой контекст позволяет формировать задачи продуктовой разработки на произвольном уровне детализации с возможностью в любой момент углубиться в детали или наоборот, обобщить их. Это обеспечивает эффективную работу в волновой модели как человека, так и AI.