Фитнес-функция — это концепция, заимствованная из генетики, она представляет собой метрику которая используется в эволюционных алгоритмах для оценки того, насколько хорошо решение справляется с поставленной задачей.
Идея пришла в разработку из книги Building Evolutionary Architectures. В ней описано что фитнес-функции помогают постоянно развивать архитектуру в правильном направлении через автоматизированные проверки. Грубо говоря, это способ гарантировать, что наша система становится лучше (или остается на месте), а не хуже.
Фитнес-функции — это автоматизированные проверки, которые оценивают нефункциональные характеристики системы. С помощью них мы проверяем, поддерживаем ли мы нужный уровень качества или пора вносить изменения.
Большие системы, над которыми работают команды из множества разработчиков, обычно сталкиваются с различными ограничениями. Например хранение персональных данных в определенном формате или обеспечение контроля доступа для предотвращения утечек данных. А так же нефункциональными требованиями, такими как способность быстро изменять код для тестирования бизнес-гипотез или возможность масштабироваться при пиковых нагрузках, например, во время рекламных акций.
Некоторые из этих ограничений и требований можно проверять автоматически с помощью фитнес-функций, например:
Сложность добавления фитнес-функций в проект зависит от используемого стека. Например, если проект использует модульную архитектуру с раздельными деплоями, то для автоматической проверки зависимости между ними в PHP можно использовать Deptrac, есть ли такое в вашем языке я не знаю. Однако не во всех языках программирования или фреймворках существуют готовые инструменты. Иногда приходится проверять характеристики вручную или разрабатывать собственные решения для создания фитнес-функций.
Фитнес-функции — это мощный инструмент для поддержки качества больших систем, особенно тех, которые развиваются быстро и сталкиваются с высокими требованиями к стабильности и гибкости. Они помогают командам сосредоточиться на разработке, а не на ручной проверке соблюдения требований.