Функциональные характеристики системы
Функциональные характеристики отвечают на вопрос «что система делает»: какие входы принимает, какие результаты выдаёт и какие правила соблюдает. Нефункциональные характеристики описывают качество выполнения: скорость, доступность, безопасность, стоимость.
Как записывать функцию
Удобная схема:
— вход, — состояние, — условия и ограничения, — результат.
Формулировка должна позволять построить проверку:
Дано: заказ находится в состоянии NEW
Когда: получено подтверждение оплаты
Тогда: заказ переходит в PAID
И: повтор того же подтверждения не создаёт вторую оплатуЗдесь зафиксированы вход, исходное состояние, переход, выход и инвариант.
Пространство траекторий функционирования
Траектория — последовательность состояний и выходов:
Пространство траекторий включает все допустимые последовательности. Требования ограничивают это пространство: запрещают неверные переходы и задают обязательные.
Для процесса оплаты допустима траектория NEW → PAID → REFUNDED, но недопустима REFUNDED → PAID без отдельной операции.
Функционал
Функционал сопоставляет целой траектории число:
где — время, — стоимость, — число ошибок. Коэффициенты выражают приоритеты. Это уже критерий выбора поведения, а не отдельная функция системы.
Проверка требований
- указаны ли предусловия;
- описаны ли ошибки и повторные вызовы;
- есть ли инварианты;
- определены ли запрещённые переходы;
- не смешаны ли функция и требование к производительности.
Связано: Разработка ТЗ АСУ, Логико-динамическая модель системы.
Самопроверка
- Чем функция отличается от функционала?
- Почему happy path не описывает функцию полностью?
- Как идемпотентность ограничивает пространство траекторий?