**استخراج نیازمندی‌ها** به عنوان اولین گام از مهندسی نیازمندی‌ها به فرایند دریافت نیازمندی‌های یک سیستم نرم‌افزاری از ذینفعان سیستم بدون توجه به لزوم و امکان اجرای آن‌ها گفته می‌شود. استخراج نیازمندی‌ها در میان جامعه پژوهشگران و صنعتگران به عنوان یکی از فعالیت‌های حیاتی از فرایند مهندسی نیازمندی‌ها شناخته شده است. به عبارت دیگر به دست آوردن نیازمندی‌های صحیح و کامل یکی از مراحل حیاتی اما سخت از توسعه یک پروژه نرم‌افزاری به شمار می‌رود. این موضوع در تحقیق انجام شده توسط هافمن و لِنر  بر روی 15 تیم مهندسی نیازمندی که با هدف شناسایی مهمترین و موثرترین تجربیات موجود که منجر به موفقیت یک پروژه می‌‌شود، انجام شد، به خوبی قابل لمس است. نتایج تحقیق حاکی از آن است که استخراج کارای نیازمندی‌ها در میان مهمترین تجربیات مفید شناسایی شده در حوزه مهندسی نیازمندی می‌باشد.

فرایند استخراج نیازمندی
-----------------------

استخراج نیازمندی‌ها به تنهایی یک فرایند پیچیده می‌باشد که خود شامل زیر فعالیت‌هایی است که برای انجام هر یک تکنیک‌های مختلفی وجود دارد. این پیچیدگی سبب شده تا بروز خطا در حین انجام آن به دلیل تاثیر پذیری از معضلات ارتباطی (نظیر ابهام) بیشتر شود. در واقعیت استخراج نیازمندی‌ها یک فرایند چند جنبه‌ای و تکراری است که تا حد زیادی وابسته به مهارت‌های ارتباطی مهندس نیازمندی و میزان همکاری ذینفعان سیستم است. یکی دیگر از مشکلاتی که پیشروی تیم توسعه سیستم است، موضوع توافق بر روی نیازمندی‌های استخراج شده است. بعبارتی ممکن است موضوعی که کاملا برای یک گروه از ذینفعان واضح است، برای گروهی دیگر مبهم و ناپذیرفتنی باشد .

از یک دیدگاه گام‌های زیر را میتوان در این فرایند در نظر گرفت :

* درک دامنه مساله/سیستم
* شناسایی منابع نیازمندی
* تحلیل و شناسایی ذینفعان
* انتخاب تکنیک‌ها، رویکردها و ابزارهای مورد استفاده
* استخراج نیازمندی‌ها از ذینفعان و سایر منابع نیازمندی

گام‌های فوق را می‌توان به عنوان یک راه‌حل در استخراج نیازمندی‌ها در نظر گرفت. این درحالی است که دستور العملی با جزئیات بیشتر توسط سامرویل و همکارانش ارائه شده که شامل گام‌های زیر است:

* ارزیابی امکان‌سنجی سیستم
* شناسایی ملاحظات درون سازمانی و سیاست‌های موجود
* شناسایی کلیه ذینفعان سیستم
* شناسایی منابع نیازمندی
* تعریف محیط عملیاتی و دامنه سیستم مورد نظر
* تحلیل اهداف کسب و کار و استخراج نیازمندی‌ها از آن‌ها
* شناسایی محدودیت‌های دامنه و محیط عملیاتی
* ثبت منطق پُشت نیازمندی‌ها
* جمع‌آوری نیازمندی‌های از دیدگاه‌های مختلف
* نمونه‌سازی اولیه از نیازمندی‌های که درک ضعیفی در خصوص آن‌ها بدست آمده است
* بهره‌گیری از سناریوهای استفاده برای استخراج نیازمندی‌ها
* تعریف فرایندهای کاری کسب و کار
* استفاده مجدد از نیازمندی‌ها

فرایند استخراج نیازمندی بسیار وابسته به دامنه‌ای که سیستم در آن مستقر خواهد شد، ویژگی‌های اصلی پروژه، سازمان و محیط می‌باشد. در واقعیت میزان بودجه و برنامه زمانی پروژه بر روی فرایند و نحوه انجام آن تاثیر بسزایی دارد. ساختار و بلوغ سازمان در نحوه استخراج نیازمندی‌ها تاثیر گذار است. اصولا این فرایند در سطوح انتزاع بالا و با مشخص کردن اهداف، قابلیت‌ها و محدودیت‌های اصلی سیستم هدف و یا یک تعریف سطح بالا از مساله‌ای که باید حل شود، شروع می‌شود. به منظور توسعه این تعریف اولیه از سیستم، ذینفعان و دیگر منابع نیازمندی‌‌‌ شناسایی شده و در انجام فرایند استخراج استفاده می‌شوند. این نیازمندی‌های استخراج شده اولیه به عنوان پایه‌ای برای استخراج نیازمندی‌های بیشتر در رویکردی تکراری یا افزایشی مورد استفاده قرار خواهند گرفت. در بیشتر موارد فرایند استخراج نیازمندی‌ها به صورت افزایشی در جلسه‌های مختلف، به صورت تکراری برای افزایش سطوح بیان جزئیات یا حداقل به صورت موازی با سایر فرایندهای توسعه، صورت می‌گیرد. در دنیای واقعی اتمام فرایند معمولا با توجه به محدودیت‌های بودجه‌ای و زمانی مشخص می‌شود. خروجی این فرایند یک مجموعه از نیازمندی‌های جزئی شده که در قالب مدل‌های تشریحی و یا تجویزی تهیه شده‌اند، می‌باشد .

فرایند تبدیل لیست آرزوها به نیاز و در نهایت نیازمندی‌های ذینفعان و سیستم
------------------------------------------------------------------------

استخراج نیازمندی‌ها یک فعالیت جهت شناسایی نیازهای ذینفعان سیستم می‌باشد که لازم است طی یک فرایند مهندسی پالایش و در نتیجه‌ آن ساخت نیازمندی صورت پذیرد. بدین ترتیب شکل زیر نقشه راه این فعالیت را نشان می‌دهد. برای پردازش نقشه راه ارائه شده با استفاده از مهندسی نیازمندی طی مدل شکل ذیل نیازمندی‌های مستخرجه تحت عنوان آرزو (wish) به نیازمندی قابل اندازه‌گیری در سیستم‌های محاسباتی تبدیل می‌گردند.

این فرایند با یک مجموعه‌ از نیازمندی‌های مورد تقاضای کاربران که در واقع مجموعه‌ای از آرزوهای کاربران در خصوص سیستم تحت توسعه‌ می‌‎باشد، شروع می‌شود. نکته مهم در خصوص همه آروزها این است که قابلیت اجرایی ندارند. بعبارتی تکنولوژی لازم برای اجرای آن‌ها وجود ندارد. در واقع وقتی این لیست آرزوها تحت فرایند مهندسی قرار می‌گیرد و هر یک از آرزوها معیارهای صلاحیت و عدم صلاحیت را برآورده می‌کند به فرم "نیاز" تبدیل می‌شوند. نیازها آن دسته از آرزوهای کاربران هستند که تحت فرایندهای مهندسی نیازمندی در قالب نیاز تهیه شده‌اند. اصولا نیازها در اولویت اجرای نیازمندی‌های سیستم کاربردی (+URPS) قرار نمی‌گیرند. بعبارتی نیازها به خودی خود به صرفه نیستند. برای تبدیل نیازها به نیازمندی‌های کاربر، بایستی تغییراتی بر روی این لیست نیازها در فرایند مهندسی نیازمندی‌ها صورت گیرد تا ساختار نیاز به ساختار نیازمندی تبدیل شود. کلیه موارد فوق در فاز دامنه مساله از فرایند مهندسی نیازمندی‌ها قرار می‌گیرد. سپس در فاز دامنه راه‌حل، ابتدا چگونگی برآورده شدن نیازمند‌ی‌های کاربر توسط سیستم مورد نظر و سپس چگونگی برآورده شدن نیازمندی‌های سیستم توسط یک طراحی خاص مورد توجه قرار می‌گیرد. بدین ترتیب کلیه نیازمندی‌های استخراج شده در طی این فاز به عنوان نیازمندی‌های سیستم در نظر گرفته می‌شوند .

منابع
-----

1. ↑  S.، Pressman, Roger. *Software engineering: a practitioner's approach* (ویراست Eighth edition). New York, NY. OCLC 857664340. شابک ۹۷۸۰۰۷۸۰۲۲۱۲۸.نگهداری یادکرد:متن اضافی (رده)
2. ↑  *Requirements Engineering A good practice guide, Ramos Rowel and Kurts Alfeche, John Wiley and Sons, 1997*.
3. 1 2  «مهندسی نیازمندی‌ها – دانشگاه صنعتی امیرکبیر (پلی تکنیک) – آزمایشگاه سیستم‌های هوشمند – دکتر احمد عبداله‌‌زاده بارفروش». بایگانی‌شده از اصلی در ۶ فوریه ۲۰۱۹. دریافت‌شده در ۲۰ دسامبر ۲۰۱۸.
4. ↑  Hofmann, H. F.; Lehner, F. (2001-7). "Requirements engineering as a success factor in software projects". *IEEE Software*. **18** (4): 58–66. doi:10.1109/MS.2001.936219. ISSN 0740-7459. `{{cite journal}}`: Check date values in: `|date=` (help)
5. 1 2 3  Coulin, Chad; Zowghi, Didar (2005). *Requirements Elicitation: A Survey of Techniques, Approaches, and Tools* (به انگلیسی). Springer, Berlin, Heidelberg. pp. 19–46. doi:10.1007/3-540-28244-0\_2.
6. ↑  Mauger, C.; Schwartz, T.; Dantan, J.-; Harbouche, L. (2010-12). "Improving users satisfaction by using requirements engineering approaches in the conceptual phase of construction projects: The elicitation process". *2010 IEEE International Conference on Industrial Engineering and Engineering Management*: 310–314. doi:10.1109/IEEM.2010.5674471. `{{cite journal}}`: Check date values in: `|date=` (help)
7. ↑  1951-، Sommerville, Ian, (۱۹۹۹). *Requirements engineering : a good practice guide*. Chichester, Eng.: Wiley. OCLC 36510036. شابک ۰۴۷۱۹۷۴۴۴۷.
8. ↑  *Dick, Jeremy; Hull, Elizabeth; Jackson, Ken (2017). Requirements Engineering. springer. doi:10.1007/978-1-84996-405-0*.