Определение fitness-функций

Тема дорожной карты · Software Architecture

Fitness-функции представляют собой измеримые цели, которые выражают важные атрибуты качества для системы. Они играют ключевую роль в обеспечении того, чтобы архитектурные решения действительно выполнялись и соответствовали ожиданиям. Без автоматизации fitness-функции остаются просто пожеланиями, которые не могут быть проверены или измерены. Большинство fitness-функций являются простыми, например, проверкой производительности с помощью Playwright, запросом к метрикам или правилом статического анализа.

Как это работает

Для каждого атрибута качества необходимо определить fitness-функцию, состоящую из двух частей: assertion (измеримая цель) и источник evidence (как система измеряет, выполнена ли цель). Например, для измерения производительности можно использовать следующую формулу: 'signup p95 < 500ms / измеряется synthetic monitoring каждые 5 мин'. Или для проверки импорта UI-компонентов: 'ни один UI-компонент не импортирует из lib/db/ / принуждается ESLint-правилом'. Для эмиссии структурированных логов сервисами можно использовать: 'все сервисы эмитируют structured-логи / верифицируется log-format scan на deploy'.

Когда применять

Fitness-функции следует определять каждый раз, когда принимается архитектурное решение с измеримыми последствиями. Каждое архитектурное решение должно иметь хотя бы одну fitness-функцию, чтобы гарантировать, что решение будет соблюдаться в будущем. Это помогает предотвратить дрейф от архитектурных решений и обеспечивает постоянное соответствие системе ожидаемым стандартам качества.

Типичные ошибки

  1. Untestable assertions — утверждения, которые не могут быть автоматически проверены. Например, 'система должна быть maintainable' не имеет операционного теста. Такие утверждения следует конвертировать в конкретные измеримые правила.
  2. Manual-проверки — полагание на человеческое обозрение для принуждения; люди забывают о них. Все такие проверки должны быть автоматизированы.
  3. Слишком много fitness-функций — наличие сотни правил может привести к тому, что команда игнорирует их. Необходимо курировать список до 10-15 самых важных функций, чтобы они были эффективными и не перегружали команду.

Связанные понятия

Полезные ресурсы