Адже Aaronaught вже є чудовою відповіддю, але оскільки були видалені інші відповіді, видалені зараз, які були абсолютно помилковими щодо того, що таке нефункціональна вимога, я думаю, було б корисно додати кілька пояснень, щоб уникнути помилок щодо того, що нефункціональна вимога є.
Нефункціональна вимога - це "якість або властивість, яку повинен мати виріб" ¹. Джеймс Тейлор каже, що нефункціональна вимога "[...] є [тим не менше] вимогою, і вона важлива для замовника - іноді навіть важливіша, ніж функціональна вимога" . Потім він наводить два приклади: логотип виробу та точність та надійність обладнання. Ці обидва приклади дуже добре показують, що:
- Нефункціональні вимоги не є маркетинговим рухом, як: "Інтернет є важливим в наш час, і ми хочемо мати веб-сайт".
- Нефункціональні вимоги стосуються покупців, оскільки вони можуть сильно вплинути на їх продуктивність та можливість самостійно використовувати продукт.
- Нефункціональні вимоги є абсолютно об'єктивними.
Останній пункт є суттєвим. Якщо вимога є суб'єктивною, вона не має нічого спільного в списку вимог. Неможливо побудувати перевірки валідації з чогось суб'єктивного . Єдиною метою переліку вимог є перерахування неоднозначних очікувань замовника. "Я хочу, щоб ця площа була червоною" - це вимога. "Я хочу, щоб цей квадрат мав приємний колір" - це бажання, яке потребує пояснення.
Пам'ятайте, що перелік вимог схожий на договір (і в більшості випадків є частиною договору). Він підписується замовником та розробницькою компанією, а у випадку судового розгляду він буде юридично використаний для визначення того, чи правильно ви виконали свою роботу. Що робити, якщо я замовляю вам програмний продукт, вкажіть, що "продукт повинен бути чудовим", і відмовлятись платити, коли продукт зроблений, адже для мене те, що ви насправді зробили, не є чудовим продуктом?
Отже, подивимося кілька прикладів.
1. Програмний продукт реагує на кінцевого користувача.
Це не вимога. Не функціонал. Не нефункціональний. Це просто не вимога. Зовсім. Він має нульове значення. Ви не можете перевірити, чи відповідає програмна система цій вимозі під час перевірки перевірки. Ні ви - відділ контролю якості, ані замовник.
2. Перезавантаження статистики користувача виконує 90% часу нижче 100 мс. при випробуванні на машині з робочими характеристиками, зазначеними в додатку G, частина 2 та завантаженням нижче 10% для процесора, нижче 50% для оперативної пам'яті та відсутність активних операцій з R / W на диску.
Це вимога. Якщо додаток G частина 2 є досить точним, я можу взяти машину з аналогічним обладнанням та виконати перевірку перевірки у відділі якості, і я завжди отримаю двійковий результат: пройшов чи не вдався.
Це функціональна вимога? Ні. У ньому не вказано, що повинна робити система. Раніше, ймовірно, були функціональні вимоги, вказуючи, що програмне забезпечення повинне мати можливість перезавантажити статистику користувачів.
Це нефункціональна вимога? Це є. Він визначає властивість, яку повинен мати виріб, тобто максимальний / середній час відгуку з урахуванням порогу відсотка.
3. Заява написана на C #.
Це вимога? Ми насправді не знаємо без контексту. Це може бути бажання головного розробника, який хоче, вставивши цю вимогу, уникнути подальшої дискусії з колегами щодо мови, якою користуватися. Це також може бути вимога, заснована на апаратному / програмному забезпеченні, застарілих елементах або елементах сумісності. Ми не знаємо.
4. Кодова база продукту C # відповідає мінімальним рекомендованим правилам Microsoft та Правилам глобалізації Microsoft.
Це дивна річ. Особисто я б не назвав це вимогою, а виклав би її в окремий документ із зазначенням стандартів та найкращої практики.
5. У головному вікні програми є синя (# 00f) рамка 10 пікселів із рожевими (#fcc) заповненими колами, причому ці кола розміщуються у внутрішньому краї кордону та мають діаметр 3 пікселя, відокремлені один від одного 20 пікселями.
Це вимога, і нефункціональна. Він визначає те, що ми можемо перевірити під час перевірки валідації, і вказує властивість продукту, а не те, що продукт призначений.
6. Система відстеження автомобіля вимірює швидкість з точністю ± 0,016 миль / год.
Також нефункціональна вимога. Це дає вимірюваний поріг точності системи. Він не говорить про те, що система повинна робити, але розповідає, наскільки точно вона робить свою роботу. Але чекати? Це говорить, що система відстеження автомобіля вимірює швидкість, чи не так? Тож це також функціональна вимога? Ну, ні, оскільки ми акцентуємо увагу на точності вимірювання, а не на тому, що вимірювання зроблено.
7. Система відстеження транспортного засобу вимірює швидкість руху транспортного засобу.
Тепер це функціональна вимога. Він не вказує, як працює система, а що робить. Завдяки функціональним вимогам ми могли б дізнатися, що система відстеження транспортного засобу вимірює швидкість, потужність акумулятора, тиск. Я не знаю, що і якщо світло чи увімкнено.
8. Сторінки веб-сайту займають 850 мс. завантажувати.
Це не вимога. Намагається бути одним, але абсолютно недійсним. Як би ви активували це? Які сторінки? Усі? Тестується через локальну мережу 1Gbps на чотирьохядерній клієнтській машині та восьмиядерному сервері з SSD, що використовується на 2%, або через модем старого і хитрого ноутбука, коли веб-сайт розміщений на невеликому сервері, який використовується на 99% ? Що означає «завантажувати»? Чи означає це завантаження сторінки? Завантажити та відобразити його? Надіслати запит POST з деякими великими даними, потім завантажити відповідь і відобразити його?
На закінчення, нефункціональна вимога - це завжди вимога, яка означає, що вона описує щось, що є цілком об'єктивним і може бути перевірено за допомогою автоматизованого або ручного тестування перевірки, але замість того, щоб розповідати, що робить система, це пояснює, як система щось робить чи як сама система .
¹ Управління проектами інформаційних технологій: застосування стратегій управління проектами до програмних, апаратних та інтеграційних ініціатив, Джеймс Тейлор, ISBN: 0814408117.