Ментальная модель FTS: данные, правила, вывод и эффект
FTS проще понимать не как «ещё один язык программирования», а как компилируемый договор между предметной областью и кодом.
Четыре слоя
Данные. объект или структура описывает наблюдаемую форму входа. Здесь нет
методов и скрытого состояния.
Вычисление. утилита принимает один объект, начинает с явного результата и
последовательно применяет подходящие правила.
Проверка. свойство задаёт постусловие, а пример — конкретное ожидание.
Оба выполняются, а не остаются документацией.
Эффект. Запись в БД, платёж или отправка команды происходят снаружи. FTS может вернуть «разрешено», но сам ничего не списывает и не отправляет.
Категория и DDD-контекст
категория «Исполнение заказа»
Категория задаёт замкнутую предметную область. В прикладной архитектуре это похоже на bounded context: слово «Заказ» внутри логистики и внутри бухгалтерии не обязано означать одно и то же.
Морфизм — не функция с произвольным кодом
морфизм «Готовый заказ можно отгрузить»
если «Готов к отгрузке»
то «Отгрузить заказ разрешено»
Морфизм описывает допустимый типизированный переход. Он нужен, когда важно не посчитать число, а показать цепочку вывода: из какого свидетельства получилось разрешение. Функтор отображал бы целую категорию в другую; для этого примера он не нужен.
Три уровня уверенности
fts checkдоказывает только структурную и типовую корректность модели.fts testпоказывает, что исполняемые примеры совпадают с текущей семантикой.fts verifyпроверяет сертификат, связанный с конкретным snapshot данных.
Ни один уровень не делает внешний бизнес-закон истинным «из воздуха». Если команда объявила морфизм «успешная проверка разрешает выплату», FTS проверит его правильное применение, но основание этого закона должно происходить из политики, договора или исследования.
Упражнение
Возьмите одно правило своей системы и разделите его на четыре строки:
- какие факты входят;
- какое чистое решение вычисляется;
- какой пример обязан проходить;
- какой внешний эффект выполнит приложение.
Если пункты 2 и 4 не удаётся разделить, сначала найдите архитектурную границу — писать FTS пока рано.