Architecture Decision Record

Active theme: Light

← документы

Фитнес-функции для решений как код

Фитнес-функции — это объективные автоматизированные проверки, написанные программным кодом, которые подтверждают, что решения соблюдаются.

  • Фитнес-функции делают решения проверяемыми и гарантируемыми.

  • Фитнес-функции для решений могут сильно помочь обеспечению качества, регуляторным процессам и целям управления.

Как фитнес-функции связаны с решениями

Запись решения документирует решение, а фитнес-функция его гарантирует.

  • Пример решения: мы используем event sourcing для требований аудита.

  • Пример фитнес-функции: мы используем сервер непрерывной интеграции, чтобы проверять, что все изменения состояния обязаны порождать события.

Чем фитнес-функции помогают решениям

Объективные измерения: фитнес-функции проходят или не проходят, поэтому работа видна и понятна.

Постоянное использование: фитнес-функции — ваши живые правила, которые запускаются при каждом коммите и сборке.

Уверенность при рефакторинге: фитнес-функции автоматически выявляют ошибки в правилах решений.

Масштабируемое управление: фитнес-функции обеспечивают соблюдение стандартов, не создавая узких мест.

Могут ли фитнес-функции использовать ИИ?

Фитнес-функции могут использовать большие языковые модели (LLM) для решений, задавая вопросы о вашей работе, например о планах, коде, схемах, API и многом другом:

IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning.
IMPORTANT: Turn on extended thinking. Turn on expert advice. Turn on search.

This is a fitness function to evaluate if our work is
using all our decisions, and is correct and accurate.

- Our decisions are here: {url}
- Our work to evaluate is here: {url}

Explain any errors, problems, gaps, weaknesses. Be direct. Be decisive.

Модульное тестирование архитектуры

ArchUnit: проверяйте архитектурные правила кода на Java с помощью любого обычного фреймворка модульного тестирования Java.

ArchUnitTS: проверяйте архитектурные правила кода на TypeScript и JavaScript с помощью Jest, Vitest, Jasmine и т. д.