Функціональні та нефункціональні вимоги, обмеження
Розділ: Інженерія систем і програмного забезпечення
📌 Про що ця тема
Тут перевіряють, чи вмієш ти розрізняти ТИПИ вимог до програмної системи та відділяти їх від обмежень. Ключове поняття — ВИМОГА: зафіксована потреба замовника чи користувача до того, що система має робити і якою вона має бути. Це фундамент етапу аналізу в розробці ПЗ.
📖 Головне
• Вимога — це документально зафіксована властивість чи поведінка, якій повинна відповідати система. Збір і опис вимог — перший етап життєвого циклу ПЗ.
• Функціональні вимоги (ФВ) описують, ЩО система робить: конкретні функції, дії, реакції на введення. Відповідають на питання «що система вміє».
• Приклади ФВ: «система дозволяє зареєструватися», «розраховує суму замовлення», «надсилає лист-підтвердження», «шукає товар за назвою».
• Нефункціональні вимоги (НФВ) описують, ЯК система працює: якості та характеристики роботи, а не самі функції. Відповідають на питання «наскільки добре».
• Основні категорії НФВ: продуктивність (швидкість, час відгуку), надійність, безпека, зручність використання (юзабіліті), масштабованість, сумісність, доступність, супровідність.
• Приклади НФВ: «сторінка завантажується менш ніж за 2 с», «система витримує 1000 користувачів одночасно», «пароль зберігається у зашифрованому вигляді», «інтерфейс доступний українською».
• Обмеження (constraints) — умови, які звужують варіанти реалізації, нав’язані ззовні: технологія, бюджет, строки, законодавство, обладнання.
• Приклади обмежень: «розробити лише мовою Python», «працювати на Windows 10», «вкластися в бюджет X», «відповідати закону про захист персональних даних».
• Головна відмінність: ФВ — ДІЇ системи; НФВ — ЯКОСТІ дій; обмеження — РАМКИ, у яких усе будується.
• Якісна вимога має бути: конкретною, вимірюваною, несуперечливою, здійсненною і перевірюваною.
🔢 Як це працює на прикладі
Розглянемо онлайн-бібліотеку. Класифікуємо вимоги:
• «Користувач може взяти книгу в електронну чергу» — ФВ (дія).
• «Адміністратор додає нову книгу до каталогу» — ФВ (дія).
• «Пошук книги виконується не довше ніж за 1 секунду» — НФВ (продуктивність).
• «Система працює без збоїв 99,9% часу» — НФВ (надійність).
• «Доступ до акаунта лише за паролем» — НФВ (безпека).
• «Сайт має бути реалізований на базі наявного сервера установи» — обмеження.
Крок міркування: спитай «це дія чи характеристика?». Дія → ФВ. Характеристика роботи → НФВ. Якщо нав’язане ззовні рамкове умова → обмеження.
⚠️ Типові помилки
• Плутають НФВ і обмеження: «швидкість 1 с» — це НФВ (якість), а «тільки мова Java» — обмеження (рамка вибору).
• Записують безпеку чи швидкість як функціональну вимогу — ні, це завжди НФВ.
• Формулюють вимогу невимірювано («система має працювати швидко») — таку не можна перевірити.
• Вважають, що НФВ другорядні — насправді їх порушення часто критичніше за дрібні функції.
• Плутають напрям питань: ФВ — «що робить», НФВ — «як/наскільки добре робить».
🎯 Що завчити напамʼять
• ФВ = ЩО (функції, дії). НФВ = ЯК (якості). Обмеження = РАМКИ (зовнішні умови).
• Категорії НФВ: продуктивність, надійність, безпека, зручність, масштабованість, сумісність.
• Властивості хорошої вимоги: конкретна, вимірювана, несуперечлива, здійсненна, перевірювана.
🧠 Перевір себе
1. «Система шифрує паролі користувачів» — це яка вимога?
2. «Розробка тільки на безкоштовному ПЗ» — це що?
3. Назви три категорії нефункціональних вимог.
4. Чим ФВ відрізняється від НФВ одним словом-питанням?
Відповіді: 1 — нефункціональна (безпека); 2 — обмеження; 3 — напр. продуктивність, надійність, безпека (також зручність, масштабованість, сумісність); 4 — ФВ відповідає «що», НФВ — «як/наскільки добре».