مهندسی نیازمندی ها

نیازمندی  چیست؟

نیازمندی یک شرط یا قابلیتی است که کاربر از طریق آن مسئله­ اش حل شود و یا به هدفش برسد. منظور از مسئله می­تواند مشکلی باشد که در وضعیت جاری انجام فرآیند کار وجود دارد و یا فرصتی که برای تحقق ایده­های جدید در جهت بهبود و پیشرفت در کار باشد و یا اینکه ایده­ ای نو که برای اولین بار مطرح می­شود.

چند وقت پیش در مورد چگونگی ایجاد فروشگاه اینترنتی دیجی­ کالا در اینترنت مطلب می­خواندم، خیلی برام جالب بود. برادران دوقلویی که عکاسی دیجیتال انجام می­ دادند، تصمیم گرفتند که یک دوربین تهیه کنند،  در اینترنت جستجو کرده تا شاید اطلاعات فنی بدست آورند ولی موفق نشدند!!! آنها به بازار مراجعه و دوربین را خریداری کردند، بعد از چند روز متوجه شدند که لنز روی دوربین دست دوم و تعمیری است. اینجا بود که ایده تاسیس چنین فروشگاهی به ذهنشان رسید. فروشگاهی اینترنتی که بتواند اطلاعات فنی خوبی در اختیار مردم قرار دهد تا با آگاهی بیشتری کالای خود را خریداری نمایند و به مردم این امکان را بدهد تا بتوانند کالای با کیفیت را به شیوه درست و اصولی امروزی خریداری کنند. در اینجا ما با مسئله یا یک فرصت مواجه هستیم که قرار است فروشگاهی راه­ اندازی شود که نیازهای مشتریان را برآورده کند به این صورت­که علاوه بر داشتن اطلاعات فنی کالا و این اطمینان به مشتری داده شود که کالای با کیفیتی را خریداری می­نماید.

digikala

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

mamanpaz

انواع نیازمندی ها کدامند؟

دسته ­بندی­ های متفاوتی برای نیازمندی ها وجود دارد از جمله:

نیازمندی­های عملکردی : نیازمندی­ هایی که برای راه ­اندازی سیستم باید قابل انجام باشند. به عنوان مثال در یک فروشگاه اینترنتی امکان انتخاب یک کالا و امکان پرداخت الکترونیکی، نیازمندی­هایی هستند که باید برآورده شوند. 

نیازمندی­های کیفیتی یا نیازمندی­های غیرعملکردی: کیفیت، شاخصی حیاتی است بعد از اینکه کاربر نیازهای اولیه­ اش برآورده شد به دنبال کیفیت انجام کار می­گردد که باعث ایجاد رضایتمندی در او خواهد شد.
 به عنوان مثال اینکه کاربر به راحتی و توسط روش­های متفاوتی با سیستم، ارتباط برقرار کند، با ورود به سیستم تمام مراحل انجام کار برایش مشخص باشد، نیازمندی غیرعملکردیِ کاربرپسندی سیستم می­باشد. به عنوان مثال در هنگام خرید یک کالا، یا مشتری باید از قبل در سیستم ثبت نام کرده باشد و یا اینکه بعد از انتخاب کالا از او مشخصات لازم برای ثبت­نام پرسیده شود تا بتواند فرآیند خرید را به آسانی انجام دهد. این نیازمندی­ها در مدل­های مختلفی تعریف شده است که برای دریافت اطلاعات بیشتر می­توانید به فصل دوم کتاب مهندسی کاربردهای متریک­های نرم ­افزاری اینجانب مراجعه نمایید.  

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

مهندسی نیازمندی­ها چیست؟

برای شروع کار مهندسی نیازمندی­ها لازم است که به سئوالاتی پاسخ داده شود. این سوالات بر اساس اصل W5HH ارائه شده، توسط آقای بوهم(Boehm) می­باشد. با مطرح­ نمودن این سئوالات ما می­توانیم اهداف، برنامه­ ها، راه­ حل­ها، مسئولیت­ها و منابع مورد نیاز یک پروژه نرم­ افزاری را بررسی نماییم.

  • Why (چرا به سیستم نیاز دارید؟) شما با دریافت پاسخ این سئوال حتی می­توانید حدو مرز سیستم مورد نظر را تعیین کنید که قرار است با چه سیستم­هایی در ارتباط باشد؟ یا کاربرانش در چه نقاطی قرار دارند؟ مثلا در شعبه­های مختلفی در سراسر ایران هستند که قرار است با هم ارتباط برقرار کنند. در برخی مواقع چرایی برای این پرسیده می­شود که شاید درخواستشان با روش­های ساده­تری قابل انجام است، نیازی به هزینه کردن و ایجاد سیستم نمی­باشد، به عنوان مثال مشتری درخواست این را دارد،
    می­خواهیم یک لیستی از فروشمان داشته باشیم و آنها را فیلتر کنیم و یا اینکه بر روی نمودارهایی برای مقایسه مثلا سال­های فروش ترسیم نماییم، شما با بررسی مواردی که مطرح شد و آشنایی که با سیستم­ها دارید به این نتیجه می­رسید که این کار به راحتی با نرم افزار Excel قابل انجام است. پس دانستن چرایی از اهمیت ویژه­ای برخوردار است.
  • What till when: (چه کاری تا چه زمانی انجام خواهد شد؟) تعیین نقاط عطف و کارهای کلیدی که باید انجام شود. مثلا تعیین اولویتهایی که یک سیستم باید داشته باشد در اولین مرحله برای یک فروشگاه اینترنتی، ایجاد صفحاتی برای مشاهده کالا می­باشد، پس باید در کوتاه­ترین زمان ممکن انجام شود. در مراحل بعدی موارد دیگر اضافه شود، در ابتدای کار ایجاد ویترینی از کالاها از اهمیت خاصی برخوردار است.
  • Who: (چه کسی یا کسانی مسئولیت انجام یک عملکرد را دارند؟) تعریف نقش هر یک از اعضا سیستم.
  • Where: (این مسئولیت­ها هر کدام در کجا انجام می­شود؟) مثلا مشتری یک فروشگاه اینترنتی از هر جای کشور باید بتواند خریدش را انجام دهند و یا اینکه یک کاربر انبار فقط نیاز دارد، با سیستم انبار کار کند.
  • How: (چگونه این کار به صورت سیستمی (فنی) قابل انجام است؟) تک­تک مراحل باید شرح داده شود.
  • How much: چه میزان از هر یک از منابع مورد نیاز است؟

به عنوان مثال: چرایی؟ شما نیاز به استراحت دارید؟ می­خواهید به یک مسافرت به مدت یک هفته بروید؟ با چه کسی یا کسانی می­خواهید به مسافرت بروید؟ هر یک چه مسئولیت­هایی دارند؟ مقصد کجاست؟ چگونگی رفتن باید مشخص شود به فرض اگر قرار است به شمال بروید از چه مسیری بروید، بهتر است. با ماشین شخصی یا هواپیما یا اتوبوس یا پیاده؟ اگر بخواهیم با ماشین شخصی برویم،  به چه مقدار بنزین نیازمندیم؟ چه مقدار بودجه نیاز است؟ پاسخ به این سئوالات باعث می­شود که مقصدها (راه ­حل­ها) محدودتر شود. مثلا اگر هیچ امکاناتی وجود ندارد، بهترین مکان برای استراحت پارک است.

مهندسی نیازمندی ها

مهندسی نیازمندی ها رویکردی نظام مند، برای تعیین و مدیریت نیازمندی ها می باشد. اهداف آن عبارتند از:

  • شناخت نیازمندیهای واقعی ذینفعان و رسیدن به توافق بر سر نیازمندیها با ذینفعان، مستند سازی نیازمندیها بر اساس استانداردها و مدیریت آنها به صورت مداوم
  • درک و مستندسازی خواسته ها و نیازمندی های ذینفعان- تعیین و مدیریت نیازمندیها با به حداقل رساندن ریسک ناشی از عدم تطابق سیستم با نیازمندیهای ذیفعان

چهار فعالیت اصلی در مهندسی نیازمندی­ها

استخراج نیازمندی­ها: با استفاده از تکنیک­های مختلف استخراج­ نیازمندی­ها باید از ذینفعان و دیگر منابع، نیازمندی­های اصلی را بدست آوریم. یعنی همه تکنیک­های موجود را بدانیم و هر جا متناسب با شرایط، از یک یا چند تکنیک استفاده کنیم.

تکنیک­های استخراج ­نیازمندی­ها عبارتند از مصاحبه، مشاهده، مهندسی معکوسReverse engineering، نمونه سازی Prototyping، توفان فکری Brainstorming، گروه متمرکز Focus group و …..

مستندسازی نیازمندی­ها: بعد از استخراج ­نیازمندی­ها، نیازهای­ اصلی یا باید تایپ شود و یا باید مدلسازی شود یا از هر دو روش استفاده شود. به عنوان مثال برای مدلسازی نیازمندی­ها می­توانیم از زبان استاندارد مدلسازی UML استفاده کنیم. نمودارهای­اصلی آن مانند نمودار مورد کاربردUse case Diagram، نمودار کلاس Class Diagram، نمودار فعالیت Activity Diagram، نمودار وضعیت State Diagram را رسم کنیم.

اعتبارسنجی: برای اطمینان از درستی نیازمندی­های مستند­شده نیاز است، اعتبارسنجی صورت گیرد، یعنی توسط ذینفعان درستی درک نیازمندی، تایید شود. به دلیل تفاوت فکری ما با افرادی که شاید اطلاعات فنی زیادی نداشته باشند، باعث می­شود که ما یک ذهنیت و آنها هم ذهنیت دیگری داشته باشند. با این کار می­توانیم قبل از اینکه وقت و هزینه ­ای گذاشته شود، به ذهنیت مشترک دست پیدا کنیم.

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

 

 

                                                                                                       شاد و پیروز باشید

                                                                                                               زهرا غلامی

 

درباره نویسنده

زهرا غلامی فارغ التحصیل فوق لیسانس مهندسی کامپیوتر - نرم افزار و نویسنده کتابهای مهندسی کاربردهای متریک های نرم افزاری و جعبه ابزار مهندس نیازمندیهای نرم افزار هستم. علاقه زیادی به مباحث خود شناسی و بهبود فردی دارم.

مطالب مرتبط

1 نظر

  1. fariba

    سلام
    یکی از موارد نیازمندیها تحلیل دامنه است که اینجا توی مقاله هیچ توضیحی در موردش داده نشده. میشه خواهش کنم شفاف در موردش توضیح بدید؟

    پاسخ

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *