نیازمندیهای نرمافزار در مهندسی نرمافزار توصیف ویژگیها و ویژگیهای سیستم هدف است. نیازمندیها انتظارات کاربران از محصول نرمافزاری را منتقل میکند. الزامات میتواند آشکار یا پنهان، شناخته یا ناشناخته، مورد انتظار یا غیرمنتظره از دید مشتری باشد.
مهندسی نیازمندیها
فرایند جمعآوری نیازهای نرمافزار از مشتری، تجزیهوتحلیل و مستندسازی آنها بهعنوان مهندسی نیازمندیها شناخته میشود و هدف از مهندسی نیازمندی، توسعه و نگهداری سند سطح بالا و توصیفی خصوصیات نیازمندیهای سیستم است.
فرایند مهندسی نیازمندی
این یک فرایند چهارمرحلهای است که شامل موارد زیر میشود.
- امکانسنجی
- جمعآوری نیازمندی
- مشخصات نیازمندی نرمافزار
- اعتبارسنجی نیازمندی نرمافزار
امکانسنجی
هنگامی که کاربر نرم افزار برای دستیابی به محصول موردنظر خود، رویکرد سازمان را توسعه میدهد، ایده کاملی در مورد این که باید چه عملکردی نرمافزار انجام دهد و این که چه ویژگیهایی از نرمافزار انتظار میرود، ارائه میشود.
با مراجعه به این اطلاعات، تحلیلگران مطالعه مفصلی در مورد این که سیستم موردنظر و عملکرد آن برای توسعه امکانپذیر است یا خیر، انجام میدهند.
این مطالعه امکانسنجی به سمت هدف سازمان متمرکز شده است. این مطالعه، تجزیهوتحلیل میکند که آیا محصول نرمافزاری میتواند از لحاظ عملی، همکاری پروژه در سازمان، محدودیت هزینه و بر اساس ارزشها و اهداف سازمان عملی و قابلاجرا باشد. این جنبههای فنی پروژه و محصول مانند قابلیت استفاده، قابلیت حفظ، بهرهوری و توانایی یکپارچگی را بررسی میکند.
نتیجه این مرحله باید یک گزارش مطالعات امکانسنجی باشد که حاوی نظرات و توصیههای کافی برای مدیریت در مورد این باشد که آیا پروژه باید انجام شود یا خیر.
جمعآوری نیازمندی های نرم افزار
اگر گزارش امکانسنجی نسبت به انجام پروژه مثبت باشد، مرحله بعدی با جمعآوری نیازهای کاربر شروع میشود. تحلیلگران و مهندسین با مشتری و کاربران نهایی ارتباط برقرار میکنند تا ایدههای خود را در مورد آن چه که نرمافزار باید ارائه دهد و ویژگیهایی را که میخواهند نرمافزار شامل شود، بشناسند.
مشخصات نیازمندی نرمافزار یا Software Requirement Specification
SRS سندی است که پس از جمعآوری الزامات از ذینفعان مختلف، توسط تحلیلگر سیستم ایجاد شده است.
SRS چگونگی تعامل نرمافزار را با سختافزار، رابطهای خارجی، سرعت کار، زمان پاسخگویی سیستم، قابلیت حمل نرمافزار در سیستمعاملهای مختلف، قابلیت اطمینان، سرعت بازیابی پس از خرابی، امنیت، کیفیت، محدودیتها و غیره را تعریف میکند.
الزامات و نیازهای دریافت شده از مشتری به زبان طبیعی نوشته شده است. این وظیفه تحلیلگر سیستم است که الزامات را به زبان فنی مستند کند تا آنها توسط تیم توسعه نرمافزار قابلدرک و مفید باشند.
ویژگی های Software Requirement Specification
- نیازهای کاربر به زبان طبیعی بیان شده باشد
- الزامات فنی به زبان ساختاری بیان میشود که در داخل سازمان استفاده میشود.
- شرح طراحی باید با کد Pseudo نوشته شود.
- فرمت فرمها و چاپ صفحه GUI.
- نمادهای شرطی و ریاضی برای DFD بیان شده باشد
اعتبارسنجی نیازمندی نرمافزار
پس از تهیه مشخصات نیازمندی، الزامات ذکر شده در این سند اعتبار مییابد. ممکن است کاربر راهحل غیرقانونی، غیرعملی را درخواست کند یا کارشناسان ممکن است الزامات را نادرست تفسیر کنند. نیازها را میتوان در برابر شرایط زیر بررسی کرد.
- در صورت عملیشدن آنها
- در صورت صحت و طبق عملکرد و دامنه نرمافزار
- در صورت وجود هرگونه ابهام
- در صورت کاملبودن
- درصورتیکه بتوان آنها را نشان داد.
فرایند استخراج نیازمندی (Requirement Elicitation Process)
فرایند استخراج نیازمندی را میتوان با استفاده از نمودار دنبال شده میتوان به تصویر کشید.

Requirement Elicitation Process
جمعآوری نیازها – توسعهدهندگان با مشتری و کاربران نهایی بحث میکنند و انتظاراتشان را از نرمافزار میشناسند.
سازماندهی نیازها – توسعهدهندگان اولویتبندی و ترتیب نیازها را به ترتیب اهمیت، فوریت و راحتی انجام میدهند.
مذاکره و بحث – اگر نیازها مبهم باشد یا در مورد نیازهای ذینفعان مختلف اختلافنظر وجود داشته باشد، در صورت وجود، پس از آن، مذاکره و بحث با ذینفعان انجام خواهد شد. سپس نیازها ممکن است در اولویت قرار گیرند.
نیازهای مربوط به ذینفعان مختلف است. برای رفع ابهام و تضاد و برای شفافیت و صحتوسقم بحث میشود.
مستندات – کلیه الزامات رسمی و غیررسمی، کاربردی و غیرکاربردی مستند شده و برای پردازش مرحله بعدی در دسترس است.
تکنیکهای استخراج نیازمندی نرمافزار (Requirement Elicitation Techniques)
تکنیکهای استخراج نیازمندی نرمافزار (Elicitation) فرایندی است برای یافتن نیازهای یک سیستم نرمافزاری در نظر گرفته شده از طریق برقراری ارتباط با مشتری، کاربران نهایی، کاربران سیستم و سایر افرادی که در توسعه استخراج نرمافزاری سهم دارند.

business meeting
روشهای مختلفی برای استخراج الزامات وجود دارد.
- مصاحبهها (Interviews): مصاحبهها برای جمعآوری نیازمندیها هستند. سازمان ممکن است چندین نوع مصاحبه مانند موارد زیر را داشته باشد:
- مصاحبههای ساختاری (بسته) که در آن هر یک از اطلاعات جمعآوری شده از قبل تصمیمگیری میشود، آنها الگو و موضوع بحث را کاملاً دنبال میکنند.
- مصاحبههای غیرساختاری (باز) که در آن اطلاعات برای جمعآوری از قبل تصمیمگیری نمیشود، انعطافپذیرتر است.
- مصاحبههای شفاهی
- مصاحبههای مکتوب
- مصاحبههای یکبهیک که بین دو نفر برگزار میشود.
- مصاحبههای گروهی که بین گروههای شرکتکنندگان برگزار میشود. این افراد معمولاً در کشف هرگونه نیاز کمک میکنند.
- نظرسنجیها :سازمان ممکن است با پرسوجو در مورد انتظارات و الزامات اشخاص از سیستم آینده، نظرسنجیها را بین افراد مختلف انجام دهند.
- پرسشنامهها : سندی با مجموعهای از سؤالات پیش تعریف شده عینی و گزینههای مربوطه به همه ذینفعان برای پاسخگویی ارائه میشود که جمعآوری و گردآوری میشود.کاستی این تکنیک این است که اگر گزینهای برای برخی از موضوعات در پرسشنامه ذکر نشده باشد، ممکن است موضوع بدون توجه باقی بماند.
- آنالیز وظیفه :تیم مهندسین و توسعهدهندگان ممکن است عملکردی را برای سیستم جدید موردنیاز، تجزیهوتحلیل کنند. اگر مشتری در حال حاضر، نرمافزاری برای انجام عملیات خاص داشته باشد، موردمطالعه قرار گرفته و نیازهای سیستم پیشنهادی جمعآوری میشود.
- آنالیز دامنه :هر نرمافزاری در بعضی کتگوریهای دامنه قرار میگیرد. افراد متخصص در حوزه میتوانند کمک بزرگی به تجزیهوتحلیل الزامات عمومی و خاص کنند.
- طوفان مغزی :یک بحث غیررسمی در بین ذینفعان مختلف برگزار میشود و تمام ورودیهای آنها برای تجزیهوتحلیل الزامات بیشتر ثبت میشود.
- نمونهسازی (Prototyping):نمونهسازی اولیه یا Prototyping، رابط کاربری را بدون اضافهکردن جزئیات عملکردی برای کاربر برای تفسیر ویژگیهای محصول نرمافزاری در نظر گرفته شده ایجاد میکند. این کمک میکند تا ایدههای نیازمندی بهتری داشته باشید. اگر هیچ نرمافزاری در انتهای مشتری برای مرجع توسعهدهنده نصب نشده باشد و مشتری از الزامات خاص خودآگاهی نداشته باشد، توسعهدهنده نمونه اولیه را بر اساس شرایط اولیه ذکر شده ایجاد میکند. نمونه اولیه به مشتری نشان داده میشود و بازخورد ذکر میشود. بازخورد مشتری بهعنوان ورودی برای جمعآوری نیاز مورداستفاده قرار میگیرد.
- مشاهده: تیم متخصصین از سازمان یا محل کار مشتری بازدید میکنند. آنها کار واقعی سیستمهای نصب شده موجود را مشاهده میکنند و روند کار در مشتری پایانی و نحوه رسیدگی به مشکلات اجرای عملیات را مشاهده میکنند. این تیم نتیجهگیریهایی را در مورد کمک به تشکیل نیازمندی مورد انتظار از نرمافزار ارائه میدهد.
ویژگیهای نیازمندیهای نرمافزار
جمعآوری نیازهای نرمافزاری پایه و اساس کل پروژه توسعه نرمافزار است. ازاینرو آنها باید واضح، صحیح و تعریف شده باشند.
مشخصات کامل نیازهای نرمافزار باید:
- تمیز
- درست
- استوار
- منسجم
- قابلدرک
- قابل اصلاح
- قابل تأیید
- اولویتبندی شده
- بدون ابهام
- قابل ردیابی
- منبع معتبر
ما باید سعی کنیم درک کنیم که چه نوع نیازمندیهایی ممکن است در مرحله انتخاب شرایط ایجاد شود و چه نوع نیازمندیهایی از سیستم نرمافزاری انتظار میرود.
نیازمندیهای گسترده نرمافزار باید در دودسته طبقهبندی شود:
نیازمندیهای عملکردی
نیازمندیهای مربوط به جنبه کاربردی نرمافزار در این دسته قرار میگیرند.
آنها توابع و عملکردهای درون و از سیستم نرمافزاری را تعریف میکنند.
مثالها
- گزینه جستجو داده شده به کاربر برای جستجو از فاکتورهای مختلف.
- کاربر باید بتواند هر گزارشی را به مدیریت ارسال کند.
- کاربران را میتوان به گروهها تقسیم کرد و گروهها میتوانند از حقوق جداگانهای برخوردار شد.
- باید قوانین تجاری و عملکردهای اداری رعایت شود.
نیازمندیهای غیرکاربردی
نیازمندیهایی که به جنبه کاربردی نرمافزار مربوط نمیشود، در این دسته قرار میگیرند. آنها ویژگیهای ضمنی یا مورد انتظار نرمافزار هستند که کاربران آن را فرض میکنند.
الزامات غیرکاربردی شامل موارد زیر میباشد.
- امنیت
- ورود به سیستم
- ذخیرهسازی
- پیکربندی
- کارایی
- هزینه
- قابلیت همکاری
- انعطافپذیری
- بازیابی
- دسترسی