# مشخصات درسنامه: تحلیل نیازمندیها: کارکردی در برابر غیرکارکردی (Functional vs Non-Functional Requirements)
- **شناسه در سیلابس:** `L4.7`
- **فصل:** فصل ۴: از ایده تا محصول (Ch 4)
- **نوع محتوا:** 📘 درسنامه متنی
- **زمان تقریبی مطالعه:** ۱۲ دقیقه
- **پیشنیازهای مستقیم:** `L4.6` (فیچرها و معیارهای پذیرش)
---
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
- [ ] **درک کند (Understand):** تفاوت بنیادین میان نیازمندیهای کارکردی (Functional Requirements - FR: سیستم چه کاری انجام میدهد) و نیازمندیهای غیرکارکردی یا کیفی (Non-Functional Requirements - NFR: سیستم چگونه و با چه کیفیتی عمل میکند) چیست.
- [ ] **تحلیل/ارزیابی کند (Evaluate):** چرا هوش مصنوعی به طور پیشفرض به نیازمندیهای کیفی (پرفورمنس، امنیت، واکنشگرایی در موبایل) کمتوجه است مگر اینکه صراحتاً به او دیکته شود.
- [ ] **بهکار ببندد (Apply):** چهار ستون اصلی کیفیت نرمافزار (کاربردپذیری، پایداری، پرفورمنس، امنیت) را بر روی پروژه محوری (پورتفولیوی پویا) استخراج و مستند کند.
- [ ] **بهکار ببندد (Apply):** بلوک استانداردی از شروط غیرکارکردی (مانند سازگاری با موبایل، نمره بالای سئو، و محافظت از متغیرهای امنیتی) را برای درج در پرامپتها و فایل قوانین ایجنت آماده سازد.
---
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
### آنچه باید پوشش داده شود (In-Scope):
1. **تفاوت دو جنس نیازمندی در مهندسی نرمافزار:**
* **نیازمندیهای کارکردی (FR):** رفتارهای مستقیم، دکمهها، فرمها، عملیات ورود و خروج دادهها (پاسخ به سوال: *سیستم چه میکند؟*).
* **نیازمندیهای غیرکارکردی (NFR):** ویژگیهای کیفی و صفات سیستمی نظیر سرعت، مقاومت، امنیت، دسترسیپذیری و سئو (پاسخ به سوال: *سیستم با چه کیفیتی کار میکند؟*).
2. **چرا هوش مصنوعی بدون NFR کدهای فاجعهبار تولید میکند؟**
* هوش مصنوعی با پرامپت ساده کدی مینویسد که کار میکند، اما:
* تصاویر با حجم ۱۰ مگابایت لود میشوند و سرعت سایت را نابود میکنند.
* چیدمان در موبایل کاملاً به هم میریزد.
* اطلاعات محرمانه در فرانتاند لو میروند.
3. **ستونهای چهارگانه کیفیت محصول (چارچوب FURPS سادهشده):**
* **۱. کاربردپذیری (Usability):** تجربه کاربری روان، پیامهای خطای فارسی و واضح، طراحی واکنشگرا (Responsive) از عرض ۳۲۰ پیکسل تا نمایشگرهای دسکتاپ.
* **۲. پایداری (Reliability):** ممانعت از کرش کردن برنامه در صورت قطعی ارتباط یا وارد کردن دادههای ناقص.
* **۳. عملکرد و سرعت (Performance):** زمان بارگذاری اولیه زیر ۱.۵ ثانیه و کسب امتیاز لایتهاوس (Lighthouse) بالای ۹۰.
* **۴. امنیت و سئو (Security & SEO):** عدم دسترسی بدون لاگین به پنل `/admin`، استفاده از ساختار تگهای سمانتیک استاندارد (`
` تا ``، متا تگها، Alt برای تصاویر).
4. **استخراج لیست تفکیکشده FR و NFR برای پروژه پورتفولیوی پویا:**
* جدول شفاف نیازمندیهای کارکردی (نمایش کارتها، فیلتر مهارت، لاگین ادمین، فرم ویرایش سئو).
* جدول شفاف نیازمندیهای غیرکارکردی (سرعت لودینگ، ریسپانسیو بودن، محافظت از کلیدها، تگهای OpenGraph).
5. **روش تزریق NFR به پرامپتهای ایجنتهای وایب کدینگ:**
* نحوه افزودن بلوک «الزامات کیفی» در انتهای پرامپت برای مجبور کردن مدل به رعایت استانداردهای مهندسی.
6. **کالاوتهای Quera:**
* ``: چرا هوش مصنوعی به ذات خود نیازمندیهای غیرکارکردی را فراموش میکند و چگونه با `.cursorrules` جلوی این نسیان را بگیریم؟
* ``: خطر امنیتی افشای کلیدها در کلاینت؛ مرز باریک میان کدهای اجرا شونده در سرور و کدهای لو رفته در مرورگر کاربر.
### آنچه نباید وارد آن شویم (Out-of-Scope):
- تستهای مقیاسپذیری انترپرایز برای میلیونها کاربر همزمان (در فصول آخر بررسی خواهد شد).
- تنظیمات سرورهای وب Nginx یا کلودفلر (فصل ۱۲ استقرار).
---
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
| :--- | :--- | :--- |
| Functional Requirement (FR) | نیازمندی کارکردی | عمل و رفتار مشخصی که نرمافزار باید در پاسخ به ورودی کاربر انجام دهد |
| Non-Functional Requirement (NFR) | نیازمندی غیرکارکردی | صفت یا معیار کیفی که نحوه عملکرد، سرعت، پایداری و امنیت سیستم را توصیف میکند |
| Semantic HTML | ساختار معنایی وب | استفاده از تگهای استاندارد HTML که به موتورهای جستجو و ابزارها معنای محتوا را تفهیم میکنند |
| Lighthouse Audit | ارزیابی لایتهاوس | ابزار رسمی گوگل برای سنجش سرعت، سئو، دسترسیپذیری و استانداردهای وبسایت |
| Responsive Layout | چیدمان واکنشگرا | انطباق خودکار ابعاد و اجزای رابط کاربری با اندازه صفحهنمایش موبایل، تبلت و کامپیوتر |
---
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` قرار گرفته و در قالب جدول تکخانهای وسطچین با کپشن تفصیلی درج شوند:
1. **تصویر کاور درس:** `images/cover.png`
* **موضوع:** کاور مدرن با تم تیره و ترازوی دیجیتالی نئونی که در یک کفه چرخدندههای کارکردی (FR) و در کفه دیگر شاخصهای سرعت، امنیت و سئو (NFR) را به توازن رسانده است.
2. **ترازوی نیازمندیهای کارکردی در برابر غیرکارکردی:** `images/fr-vs-nfr-balance.png`
* **موضوع:** اینفوگرافیک مقایسهای: ستون سبز (FR: چه کارهایی میکند) در برابر ستون آبی (NFR: با چه سرعتی، چه امنیتی و چگونه میکند).
3. **چهار ستون کیفیت نرمافزار:** `images/quality-pillars-diagram.png`
* **موضوع:** تصویر شماتیک ۴ ستون معبد کیفیت: کاربردپذیری، پایداری، عملکرد و سرعت، امنیت و سئو.
4. **چکلیست کیفی پروژه پورتفولیوی پویا:** `images/portfolio-nfr-checklist.png`
* **موضوع:** نمایش تصویری ۴ تیک سبز: تست در موبایل، سرعت لود زیر ۲ ثانیه، محافظت از پنل ادمین و تگهای سالم سئو.
---
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
1. **تیتر اصلی:** `# تحلیل نیازمندیها: تفاوت کارهایی که نرمافزار میکند با کیفیتی که ارائه میدهد`
2. **مقدمه:** چرا یک برنامه با ده فیچر عالی اما سرعت حلزونی و باگهای موبایل، یک شکست کامل است؟
3. **جدول کاور درس**
4. **تعریف نیازمندیهای کارکردی (FR): استخوانبندی کارها:** کارهایی که برنامه انجام میدهد.
5. **تعریف نیازمندیهای غیرکارکردی (NFR): روح و کیفیت نرمافزار:** سرعت، امنیت و تجربه.
6. **باکس شگفتانگیز Quera (``):** چرا هوش مصنوعی به طور خودکار NFRها را دور میزند؟
7. **چهار ستون استاندارد کیفیت (FURPS):** کاربردپذیری، پایداری، پرفورمنس، امنیت و سئو.
8. **تفکیک FR و NFR در پروژه محوری (پورتفولیوی پویا):**
* لیست نیازمندیهای کارکردی ویترین، ادمین و سئو.
* الزامات کیفی سرعت، نمایش در گوشی و حفظ متغیرهای امنیتی.
9. **فرمول تزریق الزامات کیفی به پرامپتها و `.cursorrules`:** مهار هوش مصنوعی پیش از تولید کد بیکیفیت.
10. **باکس هشدار Quera (``):** اشتباه نابخشودنی نشت کلیدهای خصوصی در محیط کلاینت.
11. **جمعبندی درسنامه:** تکمیل ابزارهای تفکر محصولی و آماده شدن برای تدوین سند نیازمندیهای محصول (PRD).
---
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- [ ] تمایز میان نیازمندیهای کارکردی و غیرکارکردی با مثالهای واضح تبیین شده باشد.
- [ ] پیامدهای غفلت هوش مصنوعی از NFRها (سرعت پایین، خرابی در موبایل، نشت اطلاعات) تشریح گردد.
- [ ] نیازمندیهای کارکردی و کیفی پروژه پورتفولیو در دو جدول مجزا مستند شده باشند.
- [ ] شیوه هدایت ایجنت با لحاظ کردن الزامات کیفی در پرامپتها آموزش داده شود.