Функційні та нефункційні вимоги
Модуль 1Урок 3 з 36Безкоштовний модуль
Перш ніж малювати квадратики, треба зрозуміти, що система має робити і наскільки добре. Функційні вимоги — це «що»: завантажити фото, надіслати повідомлення, скоротити URL. Нефункційні вимоги (NFR) — це «як добре»: швидко, майже завжди доступно, для мільйонів користувачів, безпечно та зручно в підтримці.
Функційні вимоги — список можливостей
Для скорочувача URL функційна вимога звучить просто: прийняти довге посилання, видати коротке, а при переході віддати оригінал. Без цього продукту немає. Функційні вимоги зазвичай легко перевірити тестом: «працює / не працює».
Функційні вимоги часто приходять від продукту або бізнесу: «користувач має мати можливість…». Їх зазвичай багато на старті, і вони змінюються частіше за NFR. Але без чіткого списку функційних вимог ви ризикуєте збудувати швидку систему, яка не робить того, що потрібно клієнту. Тому спочатку фіксуємо «що», а потім думаємо «як добре».
Нефункційні вимоги — якість під навантаженням
Ті самі функції можуть «існувати», але бути непридатними: відповідь за 20 секунд, падіння щогодини, один сервер на весь світ. Типові NFR: затримка, пропускна здатність, доступність, масштабованість, узгодженість, довговічність даних, безпека та зручність підтримки. Саме вони змушують додати кеш, репліки, балансувальник навантаження чи чергу.
NFR часто складніше сформулювати, бо вони звучать як цифри: «99,9% доступності», «p95 затримка менше 200 мс», «10 тисяч запитів на секунду». Але саме ці цифри відрізняють прототип від робочого середовища. Якщо ви не знаєте NFR, ви не знаєте, чи ваш дизайн «достатній» — можливо, він працює для ста користувачів і ламається на десяти тисячах.
Приклад
Онлайн-каса в магазині: функційна вимога — «провести оплату». NFR — «завершити її за секунди навіть у Чорну пʼятницю». Якщо каса «працює», але стоїть хвилину, бізнес уже програв. Те саме з банком: функційна вимога — «переказати гроші», NFR — «не втратити транзакцію під час збою сервера». Без NFR ви не знаєте, скільки реплік і резервних копій потрібно.
Увага
На інтервʼю й у житті люди часто стрибають у технології («давайте Kafka») до вимог. Спочатку запитайте: скільки користувачів, яка допустима затримка, що важливіше — свіжі дані чи доступність. Технологія — інструмент під вимоги, а не навпаки. Якщо вам потрібна проста черга на тисячу повідомлень на день, Kafka може бути надмірною.
Що запамʼятати
Функційні вимоги кажуть, що збудувати. Нефункційні — яким має бути результат у реальному житті. Хороше проєктування починається з обох списків, інакше ви або недобудуєте важливе, або перебудуєте зайве.
Порада
Запишіть вимоги двома колонками на папері чи в нотатках: зліва «що робить система», справа «як добре має працювати». Цей простий прийом рятує на співбесіді й на реальному проєкті, коли всі говорять про фічі, а про швидкість забувають до першого інциденту.
Перевірка
3 питанняКілька питань за матеріалом уроку. Спроб — скільки завгодно.