Функціональні та нефункціональні вимоги, обмеження

Розділ: Інженерія систем і програмного забезпечення

📌 Про що ця тема

Тут перевіряють, чи вмієш ти розрізняти ТИПИ вимог до програмної системи та відділяти їх від обмежень. Ключове поняття — ВИМОГА: зафіксована потреба замовника чи користувача до того, що система має робити і якою вона має бути. Це фундамент етапу аналізу в розробці ПЗ.


📖 Головне

• Вимога — це документально зафіксована властивість чи поведінка, якій повинна відповідати система. Збір і опис вимог — перший етап життєвого циклу ПЗ.

• Функціональні вимоги (ФВ) описують, ЩО система робить: конкретні функції, дії, реакції на введення. Відповідають на питання «що система вміє».

• Приклади ФВ: «система дозволяє зареєструватися», «розраховує суму замовлення», «надсилає лист-підтвердження», «шукає товар за назвою».

• Нефункціональні вимоги (НФВ) описують, ЯК система працює: якості та характеристики роботи, а не самі функції. Відповідають на питання «наскільки добре».

• Основні категорії НФВ: продуктивність (швидкість, час відгуку), надійність, безпека, зручність використання (юзабіліті), масштабованість, сумісність, доступність, супровідність.

• Приклади НФВ: «сторінка завантажується менш ніж за 2 с», «система витримує 1000 користувачів одночасно», «пароль зберігається у зашифрованому вигляді», «інтерфейс доступний українською».

• Обмеження (constraints) — умови, які звужують варіанти реалізації, нав’язані ззовні: технологія, бюджет, строки, законодавство, обладнання.

• Приклади обмежень: «розробити лише мовою Python», «працювати на Windows 10», «вкластися в бюджет X», «відповідати закону про захист персональних даних».

• Головна відмінність: ФВ — ДІЇ системи; НФВ — ЯКОСТІ дій; обмеження — РАМКИ, у яких усе будується.

• Якісна вимога має бути: конкретною, вимірюваною, несуперечливою, здійсненною і перевірюваною.


🔢 Як це працює на прикладі

Розглянемо онлайн-бібліотеку. Класифікуємо вимоги:

• «Користувач може взяти книгу в електронну чергу» — ФВ (дія).

• «Адміністратор додає нову книгу до каталогу» — ФВ (дія).

• «Пошук книги виконується не довше ніж за 1 секунду» — НФВ (продуктивність).

• «Система працює без збоїв 99,9% часу» — НФВ (надійність).

• «Доступ до акаунта лише за паролем» — НФВ (безпека).

• «Сайт має бути реалізований на базі наявного сервера установи» — обмеження.

Крок міркування: спитай «це дія чи характеристика?». Дія → ФВ. Характеристика роботи → НФВ. Якщо нав’язане ззовні рамкове умова → обмеження.


⚠️ Типові помилки

• Плутають НФВ і обмеження: «швидкість 1 с» — це НФВ (якість), а «тільки мова Java» — обмеження (рамка вибору).

• Записують безпеку чи швидкість як функціональну вимогу — ні, це завжди НФВ.

• Формулюють вимогу невимірювано («система має працювати швидко») — таку не можна перевірити.

• Вважають, що НФВ другорядні — насправді їх порушення часто критичніше за дрібні функції.

• Плутають напрям питань: ФВ — «що робить», НФВ — «як/наскільки добре робить».


🎯 Що завчити напамʼять

• ФВ = ЩО (функції, дії). НФВ = ЯК (якості). Обмеження = РАМКИ (зовнішні умови).

• Категорії НФВ: продуктивність, надійність, безпека, зручність, масштабованість, сумісність.

• Властивості хорошої вимоги: конкретна, вимірювана, несуперечлива, здійсненна, перевірювана.


🧠 Перевір себе

1. «Система шифрує паролі користувачів» — це яка вимога?

2. «Розробка тільки на безкоштовному ПЗ» — це що?

3. Назви три категорії нефункціональних вимог.

4. Чим ФВ відрізняється від НФВ одним словом-питанням?


Відповіді: 1 — нефункціональна (безпека); 2 — обмеження; 3 — напр. продуктивність, надійність, безпека (також зручність, масштабованість, сумісність); 4 — ФВ відповідає «що», НФВ — «як/наскільки добре».

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.