Функциональные характеристики системы

Функциональные характеристики отвечают на вопрос «что система делает»: какие входы принимает, какие результаты выдаёт и какие правила соблюдает. Нефункциональные характеристики описывают качество выполнения: скорость, доступность, безопасность, стоимость.

Как записывать функцию

Удобная схема:

— вход, — состояние, — условия и ограничения, — результат.

Формулировка должна позволять построить проверку:

Дано: заказ находится в состоянии NEW
Когда: получено подтверждение оплаты
Тогда: заказ переходит в PAID
И: повтор того же подтверждения не создаёт вторую оплату

Здесь зафиксированы вход, исходное состояние, переход, выход и инвариант.

Пространство траекторий функционирования

Траектория — последовательность состояний и выходов:

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

Для процесса оплаты допустима траектория NEW → PAID → REFUNDED, но недопустима REFUNDED → PAID без отдельной операции.

Функционал

Функционал сопоставляет целой траектории число:

где — время, — стоимость, — число ошибок. Коэффициенты выражают приоритеты. Это уже критерий выбора поведения, а не отдельная функция системы.

Проверка требований

  • указаны ли предусловия;
  • описаны ли ошибки и повторные вызовы;
  • есть ли инварианты;
  • определены ли запрещённые переходы;
  • не смешаны ли функция и требование к производительности.

Связано: Разработка ТЗ АСУ, Логико-динамическая модель системы.

Самопроверка

  • Чем функция отличается от функционала?
  • Почему happy path не описывает функцию полностью?
  • Как идемпотентность ограничивает пространство траекторий?