Non-Functional Requirement یا نیازمندی نان‌فانکشنال درباره کیفیت و محدودیت‌های عملکرد نرم‌افزار است. این نیازمندی پاسخ می‌دهد سیستم با چه سرعت، پایداری، امنیت، ظرفیت و شرایط عملیاتی باید قابلیت‌هایش را ارائه کند. یک NFR خوب باید تا حد ممکن قابل اندازه‌گیری و آزمایش باشد.

دسته‌های رایج نیازمندی‌های نان‌فانکشنال

کیفیتنمونه نیازمندی قابل بررسی
Performanceزمان پاسخ P95 API کاتالوگ زیر ۳۰۰ میلی‌ثانیه برای بار تعریف‌شده
Availabilityدسترس‌پذیری سرویس سفارش ۹۹٫۹ درصد در ۳۰ روز
Scalabilityپردازش سه برابر ترافیک عادی بدون کاهش فراتر از SLO
Securityکاربران فقط سفارش متعلق به خود را ببینند و ارتباط TLS باشد
Reliabilityپس از شکست Worker، پیام‌های پردازش‌نشده از بین نروند
Maintainabilityاستقرار نسخه جدید بدون ویرایش دستی داده‌های عملیاتی انجام شود
Accessibilityفرم ثبت سفارش با کیبورد و صفحه‌خوان قابل استفاده باشد
Observabilityهر درخواست شناسه ردیابی و متریک خطا داشته باشد

چگونه NFR مبهم را به معیار روشن تبدیل کنیم؟

عبارت «سیستم باید سریع باشد» مبهم است. بهتر است بنویسیم «در آزمون بار با ۱۰۰ درخواست هم‌زمان و داده آزمایشی مشخص، زمان پاسخ P95 مسیر GET /products کمتر از ۳۰۰ میلی‌ثانیه باشد». حتی این عبارت نیز به محیط سخت‌افزار، منطقه و نوع داده وابسته است.

تفاوت با SLO و SLA

NFR می‌تواند هدف کیفیت محصول را در کل طراحی مشخص کند. SLO معمولاً هدف عملیاتی یک سرویس را با تکیه بر SLI تعیین می‌کند و SLA تعهد قراردادی است. این مفاهیم می‌توانند به هم مرتبط باشند، اما جای یکدیگر را نمی‌گیرند.

مهم‌ترین خطای تحلیل نیازمندی

افزودن عبارت «امن و مقیاس‌پذیر» به سند بدون تعریف مدل تهدید، بار کاری و معیار پذیرش، تضمین فنی ایجاد نمی‌کند. NFR باید قابل آزمایش و متناسب با بودجه پروژه باشد.

اصطلاحات فنی: نیازمندی فانکشنال، سیستم دیزاین، اس‌ال‌او، نیازمندی نان‌فانکشنال، مدیریت تهدیدات.