Functional Requirement یا نیازمندی فانکشنال مشخص میکند نرمافزار باید چه قابلیت و رفتاری ارائه دهد. این نیازمندی معمولاً با سناریوی کاربر، ورودی، خروجی و شرایط پذیرش بیان میشود. نمونه آن ثبت سفارش، اعمال کد تخفیف، جستوجوی محصول یا امکان لغو مرسوله است.
مثال از یک فروشگاه اینترنتی
| شناسه | نیازمندی | شرط پذیرش |
|---|---|---|
| FR-01 | مشتری بتواند محصول موجود را به سبد اضافه کند | موجودی و تعداد سبد پس از عملیات صحیح باشد |
| FR-02 | مشتری بتواند کد تخفیف معتبر وارد کند | تخفیف فقط برای سفارش واجد شرایط اعمال شود |
| FR-03 | سیستم پس از پرداخت موفق سفارش را تایید کند | وضعیت سفارش و شماره پرداخت ثبت شوند |
| FR-04 | کاربر بتواند سفارش خود را پیگیری کند | فقط سفارشهای خود کاربر قابل مشاهده باشند |
چه چیزی نیازمندی فانکشنال نیست؟
«صفحه سفارش باید در کمتر از ۳۰۰ میلیثانیه پاسخ بدهد» یک نیازمندی نانفانکشنال یا معیار کیفیت است. «مشتری باید بتواند آدرس ارسال را ویرایش کند» قابلیت سیستم است و فانکشنال محسوب میشود. امنیت و دسترسپذیری میتوانند شرطهای کیفی فراگیر باشند که روی اجرای همه قابلیتها اثر میگذارند.
نوشتن یک شرط پذیرش قابل تست
Feature: Apply discount code
Scenario: Valid code on an eligible order
Given a cart with an eligible subtotal
When the customer applies code "WELCOME10"
Then the payable total is reduced by 10 percent
And the discount is recorded on the order
برای اینکه نیازمندی قابل توسعه و تست باشد، باید محدوده آن دقیق مشخص شود. اصطلاحهایی مانند «خوب»، «سریع» و «کاربرپسند» بدون معیار پذیرش قابل اندازهگیری نیستند.
اصطلاحات فنی: نیازمندی نانفانکشنال، سیستم دیزاین، یونیت تست، رابط برنامهنویسی کاربردی.