مهندسی نیازمندی های نرم افزار چیست؟
برای شروع کار مهندسی نیازمندیهای نرم افزار لازم است که به سئوالاتی پاسخ داده شود.
این سوالات بر اساس اصل 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 را رسم کنیم.
اعتبارسنجی
برای اطمینان از درستی نیازمندیهای مستندشده نیاز است، اعتبارسنجی صورت گیرد، یعنی توسط ذینفعان درستی درک نیازمندی، تایید شود.
به دلیل تفاوت فکری ما با افرادی که شاید اطلاعات فنی زیادی نداشته باشند، باعث میشود که ما یک ذهنیت و آنها هم ذهنیت دیگری داشته باشند.
با این کار میتوانیم قبل از اینکه وقت و هزینه ای گذاشته شود، به ذهنیت مشترک دست پیدا کنیم.
مدیریت نیازمندیهای نرم افزار
مدیریت نیازمندیهای نرم افزار فرآیندی مستمر در طول پروژه است که شامل هر گونه اندازه گیری پیشرفت پیاده سازی نیازمندیهایِ ضروری پروژه، کنترل انسجام و پیوستگی بعد از تغییرات نیازمندیها میباشد، یعنی بررسی اینکه تغییر این نیازمندی چه تاثیری بر سایر نیازمندیها دارد.
در کل هدف از مدیریت نیازمندیهای نرم افزار، اطمینان از پیاده سازی نیازها و انتظارات ذینفعان است. که خود مبحث مفصلی میباشد.
شاد و پیروز باشید
زهرا غلامی