В чем разница между функциональными и нефункциональными требованиями

«В чем разница между функциональными и нефункциональными требованиями» — вопрос из категории Требования и ТЗ, который задают на 26% собеседований Менеджер Проектов. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функциональные требования описывают что должна делать система — её основные функции и возможности. Например: "Пользователь должен иметь возможность авторизоваться через email и пароль".

Нефункциональные требования определяют как система должна работать — её атрибуты качества, производительность, безопасность и т.д. Например: "Система должна обрабатывать 1000 запросов в секунду с задержкой не более 200 мс".

Пример кода (функциональное требование):

def login(email, password):
    if validate_credentials(email, password):
        return generate_auth_token()
    raise InvalidCredentialsError()

Нефункциональные требования часто выражаются в метриках (SLA, latency, uptime) и не имеют прямого отражения в коде.