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

۱۳ تیر ۱۳۹۷ | ۰۹:۱۰ ۱۷ تیر ۱۳۹۷

در مقاله ارائه شده ، ما در مورد مهندسی نیازمندی ها در مهندسی نرم افزار صحبت می کنیم ؛ برای این که ما بتوانیم به شناخت درستی از این مبحث برسیم و در آن موفق باشیم ابتدا باید به درک درستی از نیازمندی در مهندسی نرم افزار برسیم تا بتوانیم نیازها را به خوبی بشناسیم و هر چه بهتر و اصولی تر آن ها را مهندسی کنیم .

در این راستا ابتدا باید بدانیم که تعریف نیازمندی چیست :

  • نیازمندی یک شرط یا قابلیتی است که کاربر از طریق آن مسئله اش حل شود و یا به هدفش برسد .
  • در واقع نیازمندی یک دغدغه محسوب می شود که مهندسی نیازمندی ها برای حل کردن همین دغدغه ها به وجود آمده است .
  • پس اگر ما بتوانیم به درک درستی از نیازمندی های مشتریان (ذینفعان) یا کاربرانمان برسیم ، آن وقت دیگر کلید اصلی موفقیت در دستان ماست .
  • در اینجا می توان نمونه های موفقی را در کشور خودمان نام برد که توانسته اند نیازهای اصلی مردم را به خوبی شناسایی کنند و متناسب با آن ها به این نیازها پاسخ دهند و موفق عمل کنند ؛ از جمله این نمونه ها می توان به دیجی کالا ، آپارات ، دیوار ، اسنپ ، تپ سی ، سایت ورزش ۳ و … اشاره کرد .

بعد از این که توانستیم به درک درستی از نیازمندی برسیم ، باید بتوانیم انواع نیازمندی ها را تشخیص دهیم ؛ در این راستا دسته بندی های مختلفی وجود دارد اما در کل نیازمندی ها در مهندسی نرم افزار به دو دسته تقسیم می شوند :

۱) نیازمندی های عملکردی (کاربردی) : نیازمندی هایی که برای راه اندازی یک سیستم باید قابل انجام باشند ؛ مثلا در یک فروشگاه اینترنتی امکان انتخاب یک کالا و یا امکان پرداخت الکترونیکی ، نیازمندی هایی هستند که باید برآورده شوند . این نیازها نیازهای عملکردی یا کاربردی هستند که اصطلاحا به آن رابط کاربری نیز گفته می شود .

۲) نیازمندی های غیر عملکردی (کیفیتی) : کیفیت ، شاخصی حیاتی است ؛ بعد از اینکه کاربر نیازهای اولیه اش برآورده شد به دنبال کیفیت انجام کار می گردد که باعث ایجاد رضایتمندی در او خواهد شد . به نیازهای غیر عملکردی تجربه کاربری نیز گفته می شود .

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

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

 

مهندسی نیازمندی ها دارای اهداف مهمی است که عبارتند از :

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

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

فعالیت مهم واساسی در مهندسی نیازمندی ها :

۱) استخراج نیازمندی ها : در این قسمت با استفاده از تکنیک های مختلف استخراج نیازمندی ها مانند : مصاحبه ، مشاهده ، مهندسی معکوس Reverse engineering ، نمونه سازی Prototyping ، طوفان فکری Brainstorming ، گروه متمرکز  Focus group و … باید از ذینفعان و دیگر منابع ، نیازمندی های اصلی را بدست آوریم.

۲) مستندسازی نیازمندی ها : بعد از استخراج نیازمندی ها ، نیازهای اصلی یا باید تایپ شود و یا باید مدلسازی شود یا از هر دو روش استفاده شود ؛ به عنوان مثال برای مدلسازی نیازمندی ها می توانیم از زبان استاندارد مدلسازی UML استفاده کنیم ؛ Unified Modeling Language) UML) که در فارسی به معنای زبان مدل‌سازی یکپارچه می باشد ، یک زبان مدلسازی همه منظوره استاندارد در زمینه مهندسی نرم‌افزار است که توسط گروه مدیریت شی (OMG (Object Management Group ایجاد شد . UML یک روش برای توصیف ویژگی ‌ها ، نمایش گرافیکی ، ساختن و مستند سازی اجزای یک سیستم نرم ‌افزاری در حال توسعه می ‌باشد . با استفاده از UML می ‌توان تقریبا هر گونه برنامه کاربردی که ممکن است بر روی هر ترکیبی از سخت‌افزار ، سیستم عامل ، زبان برنامه‌نویسی و شبکه ، اجرا شود را مدلسازی نمود.

  • نمودارهای استاندارد UML شامل :

  • نمودار مورد کاربرد  (Use case Diagram)
  • نمودار کلاس  (Class Diagram)
  • نمودار فعالیت  (Activity Diagram)
  • نمودار وضعیت (State Diagram)

نرم افزاری که از زبان مدلسازی UML پشتیبانی می کند و با کمک آن می توان نمودارهای استاندارد UML را پیاده سازی کرد ، Rational Rose است.

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

۴) مدیریت نیازمندی ها : در کل هدف از مدیریت نیازمندی ها ، اطمینان از پیاده سازی نیازها و انتظارات ذینفعان است و این که تمام مراحل فعالیت های مهندسی نیازمندی ها به درستی انجام شده باشد.

بعد از این که فعالیت هایی که در مهندسی نیازمندی ها وجود داشت ، از استخراج نیازها تا تبدیل شدن آن به یک محصول مطابق میل مشتری را بررسی کردیم ، نوبت به بررسی مهمترین ویژگی یک مهندس نیازمندی ها می رسد؛ یکی از مهارت های کلیدی یک مهندس نیازمندی ها ، گوش دادن موثر است ؛ گوش دادن مؤثر کمک می کند بفهمید دقیقاً طرف مقابل چه می خواهد و به‌این ‌ترتیب می توانید بهتر به او کمک کنید.

ویژگی های مهم مهندس نیازمندی ها :

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

موبایل خود را در حالت بی صدا قرار دهید ؛ در جلسات شناخت نیازمندی ها فضایی حاکی از اعتماد ، توجه و بی قضاوتی را خلق کنید ؛ ابزار اصلی شما برای این کار زبان بدن و ارتباط کلامی است.

مسائل را از چارچوب فکری مشتریان (ذینفعان) خود ببینید و تلاش کنید از نگاه او تجربه اش را درک کنید.

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

جایی که مناسب است برای شفافیت بیشتر سوالات مناسب بپرسید ، تعداد سوالات شما بهتر است محدود باشد .

با تکان دادن سر و تماس چشمی او را همراهی کنید ؛ به مشتریان ( ذینفعان) خود حس دیده شدن و به رسمیت شناخته شدن خودش و ایده هایش را بدهید.

چیزی را که شنیده اید با کلمات خود بازگو کنید تا از درک خود مطمئن شوید و ذینفعان را متوجه کنید که سخنان وی را فهمیده اید ؛ مثل گفتن جمله : “پس یعنی شما می‌گویید که ………” ؛ البته زیاد این کار را انجام ندهید زیرا ممکن است آزاردهنده شود.

در صورت نیاز نه ! حتما یادداشت‌ برداری کنید ؛ نوشتن نیازها ، یک برد دوطرفه است.

جمع بندی مطالب

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

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

و در آخر این که مهمترین نتیجه و درسی که می توان از مهندسی نیازمندی ها گرفت این است که به تمام نیازهای مشتری یا کاربرانتان با دل و جان طبق تمام اصول گفته شده در این مقاله گوش دهید ، تا بتوان بهترین محصول مطابق میل مشتری یا کاربرانتان تولید کنید ؛ در این حالت شما به هدف خود رسیده و به یک محصول دو طرف برد خواهید رسید و هم شما به سود و دستمزد خود خواهید رسید و یک نام نیک در محصول تولید شده به جا خواهید گذاشت و هم مشتری یا کاربرانتان مطابق نیاز خودشان از این محصول بهترین بهره را خواهند برد.

0/5 ( 0 نظر )
دیدگاه شما

۰ دیدگاه