بخشی از مقاله
پیش بینی نقص نرم افزار : اصول، مبانی و روش ها
چکیده: تشخیص خطاهای نرم افزار یکی از بزرگترین چالش های توسعه نرم افزار است و بیشترین بودجه را در فرآیند توسعه نرم افزار به خود اختصاص می دهد. با تشخیص ماژول های مستعد خطا در مراحل ابتدایی فرآیند توسعه نرم افزار، مدیران پروژه های نرم افزاری می توانند هزینه، زمان و تلاش تیم توسعه را بیشتر صرف تست ماژول های مستعد خطا کنند. در این مقاله اصول ومبانی پیش بینی نقص تشریح گردیده و مدل های پیش بینی نقص نرم افزار مورد تحلیل و بررسی قرار می گیرند. با توجه به کمبود منابع فارسی در این زمینه، این مقاله مروری می تواند به عنوان یک مرجع اولیه مورد استفاده قرار گیرد.
واژگان کلیدی: پیش بینی نقص نرم افزار، متوازن سازی کلاس ها
-1 مقدمه
با افزایش اندازه و پیچیدگی سیستم های نرم افزاری صنعت نرم افزار با چالش تحویل سیستم باکیفیت ، قابل اعتماد، در زمان مشخص و با بودجه تعیین شده مواجه شد. برای کیفیت تعاریف زیادی وجود دارد اما یکی از تعاریف قابل قبول برای کیفیت بالا، خطای کم است.[1] خطاهای نرم افزاری به طور معمول به عنوان انحراف از خصوصیات مورد انتظار است که منجر به شکست هایی در عمل در زمان آینده می شود.
برای کم کردن خطای سیستم های نرم افزاری به تست نرم افزار نیاز است اما حدود 50 تا 60 درصد هزینه توسعه نرم افزار به تست مربوط می شود.[2] به دلیل هزینه بر بودن تست کلیه ماژولهای یک سیستم نرم افزاری بزرگ، لازم است فقط ماژولهایی که احتمال خطای بیشتری دارند تست شوند. بنابراین احتیاج به تشخیص ماژولهای مستعد خطا پیدا شد. با تشخیص ماژول های مستعد خطا در ابتدای یک پروژه نرم افزاری، مدیران پروژه های نرم افزاری می توانند زمان، هزینه و تلاش تیم توسعه را بیشتر صرف تست ماژولهای مستعد خطا کنند و دیگر نیاز به تست کل سیستم نرم افزاری نیست.[3]
ماژول های مستعد خطا بخش کوچکی از کل سیستم نرم افزار را تشکیل می دهند. به عبارت دیگر، به دلیل ماهیت مسأله تشخیص خطای نرم افزار، یک نمونه خطا نسبت به یک نمونه بدون خطا، به احتمال کمتری اتفاق می افتد. می توان
گفت مجموعه داده های تشخیص خطای نرم افزار نامتوازن هستند. این بدین معناست که تعداد نمونه های کلاس خطادار بسیار کمتر از کلاس دیگر است.[3]
مدل های تشخیص خطای نرم افزار می توانند ماژول های نرم افزاری را به دو کلاس ماژول های خطادار و بدون خطا اختصاص دهند. اما استفاده از طبقه بندهای استاندارد برای مسائل نامتوازن مناسب نمی باشد زیرا اغلب الگوریتم های یادگیری ماشین فرض می کنند که تعداد نمونه های آموزشی در کلاس های متفاوت برابر می باشد. در نتیجه طبقه بند یادگرفته شده غالباً از کلاس اکثریت منتج می شود که این موضوع به پیش بینی بسیار ضعیف از کلاس اقلیت منجر می شود. بنابراین کنترل و حل مسأله داده نامتوازن برای بهبود کارایی پیش بینی کننده های خطای نرم افزاری امری ضروری است.
در صورتی که یک نمونه، خطادار باشد ولی به اشتباه آن بدون خطا طبقه بندی شود، کیفیت نرم افزار به شدت پایین می آید. توجه به این مسأله بسیار مهم است که کلاس خطادار یا همان کلاس اقلیت به درستی پیش بینی شود.
-2 مروری بر روش های انجام شده در این زمینه
در حوزه تشخیص خطای نرم افزار نیز تحقیقات زیادی با استفاده از روش های مختلف یادگیری انجام شده است. در این زمینه چند مورد از جدیدترین کارهای صورت گرفته بیان می شود.
1
هال و همکارانش با هدف ایجاد یک مرور اصـولی روی 208 مطالعه پـیش بینـی خطـا کـه از سـال 2000 تـا 2010 منتشـر شده اند به بررسی مفهوم مدل هـا، متغیرهـای مسـتقل اسـتفاده شده و همچنین کارایی مدل های پیش بینی خطـا مـی پردازنـد. آنها ابتدا به انتقاد از سایر مرورها پرداخته و مشکلات آنها را بیـان می کنند. آنها عقیده داشتند که پـیش بینـی خطـا از موضـوعات مهم در مهندسی نرم افزار است. مدل های پیش بینی خطا تـأثیر بالقوه ای روی بهبود کیفیت سیسـتم هـا و کـاهش هزینـه هـای مرتبط با این سیستم هـا دارد. ایـن مقالـه نشـان مـی دهـد کـه اکثریت مطالعات در این زمینـه کمتـر مفیـد هسـتند. همچنـین بیشتر مطالعات، گزارش متنی و اطلاعات روش شـناختی نارسـا و ناکافی دارند که باعث می شود درک کاملی از مدل دریافت نشـود و کار کاربران را برای انتخاب مدل مناسب دشـوار مـی سـازد. در این مقاله پس از مرور 208 مقالـه تنهـا 35 مقالـه دارای شـرایط فهم متنی و روش شناسی خـوب تشـخیص داده شـده اسـت. بـا بررسی آنها یکسری نتایج بدست آمده است از جملـه: پایگـاه داده هایی که بیشتر مورد استفاده قرار می گیرنـد شـامل ایکلیـپس و پرامیس هستند و همچنین تعداد خط کـد بیشـترین اسـتفاده را بعنوان متغیرهای مستقل داشته است. تکنیک های مـدل سـازی که در این موضوع کاربرد زیادی داشـته انـد شـامل نـایوی بیـز و ماشین بردار پشتیبان و رگرسیون لجستیک مـی باشـند. برطبـق این مقاله مدل هایی که کارایی بالایی از خود نشان می دهند سه موضوع را رعایت می کنند: -1 انتخـاب داده هـای بهینـه سـازی شده. به طور خاص مدل های موفق تمایل به استفاده از مجموعـه داده های بزرگ و دارای سهم نسبتاً بـالایی از واحـدهای معیـوب دارند. - 2 انتخاب متغیرهای مسـتقل بهینـه سـازی شـده. طیـف وسیعی از معیارهایی که در انتخاب ویژگی استفاده می شود مورد استفاده قرار می گیرد. -3 انتخـاب تکنیـک مـدل سـازی بهینـه سازی شده.[4]
چن و همکارانش در سال 2010 از مزایای داده کاوی بـرای تجزیه و تحلیل و پیش بینی تعداد زیـادی از نقـص صـفحه هـای جمع آوری شده در توسعه نرم افزار استفاده کرده اند. ایـن مقالـه وضعیت فعلی مدیریت نقص نرم افزار را مرور کـرده و مـدل هـای پیش بینی نقص نرم افزار و تکنولوژی داده کاوی را مختصراً بیـان
کرده است. سـپس یـک سیسـتم پـیش بینـی و مـدیریت نقـص نرم افزاری ایده آل را مبتنی بر دو الگوریتم شبکه بیـزین و مـدل رابطه ای احتمالات پیشـنهاد کـرده اسـت. توصـیه شـده قبـل از تجزیه و تحلیل نقص باید صحت و درستی و کامل بـودن پایگـاه
2
داده نقص را بررسی کرد. داده ورودی باید صحیح باشد تا نتیجـه صحیح شود. پیش بینی نقص مبتنی بر تکنیک هـای داده کـاوی می تواند به صورت کلاس بندی، خوشـه بنـدی و قوائـد انجمنـی انجام شود. شبکه های بیزین یـک گـروه از متغیرهـای احتمـالی مبتنی بر تئوری گراف است که آیتم های داده و روابط وابسـتگی بین آنها را توصیف می کند. در فرآیند توسـعه نـرم افـزار عوامـل بسیاری که ممکن است نقص نرم افزاری را تولید کنند وجود دارد و ارتباط آنهـا بسـیار پیچیـده اسـت. همچنـین تعـدادی عوامـل نامشخص وجود دارد که می تواند منجر به نقص شود. می توان از شبکه بیزین برای پیش بینی نقص نرم افزار اسـتفاده کـرد. مـدل رابطه ای احتمالات یک مدل یادگیری رابطه ای آماری مبتنی بـر شبکه بیزین است که یک گسترش از آن محسوب مـی شـود و از نمودار ارتباط-موجودیت بـه عنـوان سـاختار اصـلی آن اسـتفاده می کند. با ترکیب این دو تکنیک کارایی خـوبی بـه دسـت آمـده است. اما متاسفانه هـیچ توضـیحی در خصـوص چگـونگی انجـام آزمایشات و نتایج بدست آمده در این مقاله ارائه نشده است.[5]
جیانچون و همکارانش یک مدل پیش بینی نقص نرم افزار با استفاده از بهینه سازی ازدحام ذرات و ماشین بردار پشتیبان که P_SVM نامیده شده پیشنهاد کردند. این روش از قابلیت محاسبات غیرخطی ماشین بردار پشتیبان و قابلیت پارامترهای بهینه سازی ازدحام ذرات سود می برد. مراجع نشان می دهند که تنظیم اولیه پارامترهای مدل ماشین بردار پشتیبان تأثیر زیادی بر دقت پیش بینی آن دارد. ماشین بردار پشتیبانمعمولاً از روش آزمون و خطا برای تعیین پارامترها استفاده می کند که فاقد راهنمایی در تئوری است. به منظور حل این مشکل یک مدل جدید با ترکیب بهینه سازی ازدحام ذرات و ماشین بردار پشتیبان ارائه شده است. ماشین بردار پشتیبان یک الگوریتم یادگیری ماشین مبتنی بر تئوری یادگیری آماری و اصل حداقل سازی خطر ساختاری است. ایده اصلی آن تبدیل یک مسئله محاسبه تابع کلاس بندی به یک مسئله برنامه نویسی درجه 2 با محدودیت است. الگوریتم بهینه سازی ازدحام ذرات نیز از شبیه سازی رفتار جستجوگرانه پرندگان استفاده می کند و راه حل یک مسئله را همانند یک ذره در فضای جستجو در نظر می گیرد. در ابتدا این مدل با استفاده از بهینه سازی ازدحام ذرات پارامترهای ماشین بردار پشتیبان را بهینه می کند و سپس با استفاده از ماشین بردار پشتیبان بهینه شده پیش بینی نقص نرم افزار را انجام می دهد. ایده اصلی الگوریتم بهینه سازی این است که یک جفت پارامتر ماشین بردار پشتیبان را یک ذره
در بهینه سازی ازدحام ذرات در نظر می گیرد. ذره، بروزسانی های خودش را انجام می دهد مگر اینکه الگوریتم به شرایط پایانی خود برسد. در این مقاله از مجموعه داده JM1 ناسا و از روش ارزیابی متقاطع 10 تایی استفاده شده است. P- SVM با سه مدل پیش بینی دیگر از نظر دقت و صحت مورد بررسی قرار گرفته است که این مدل نسبت به بقیه از صحت و دقت بالاتری برخوردار می باشد.[6]
-3 مجموعه داده برای مسئله تشخیص خطا
بــه منظــور ارزیــابی کــارایی روش هــای بکارگرفتــه شــده بــرای پیش بینی نقص نرم افزار یکسری منبع وجود دارد که معروفترین آن ها پرامیس است. در سال 2005 که منبع داده پرامیس تولیـد شد، این امکـان بـه محققـان داده شـد کـه بتواننـد آزمایشـات و مطالعات خود را با هم مقایسه کنند. در این منبع داده، مجموعـه داده های خطای نرم افزار به صورت رایگان در دسـترس همگـان قراردارد و حاوی اطلاعات مختلف نرم افزارهای مـورد تحقیـق در پایگاه ناسا است که خطاهای نرم افزار را در دسـته هـای مختلـف دسته بندی می کنند.[7]
مشخصــات مشــهورترین مجموعــه داده هــایی کــه در ســاخت مدل های پیش بینی خطا استفاده می شوند در جـدول1 لیسـت شده اند. این مجموعه داده ها از پروژه های عملی نرم افـزاری بـه دست آمده اند.
در ستون اول این جدول نام مجموعه داده ها آورده شده و در ستون های بعدی به ترتیب زبان برنامه نویسی، تعداد ویژگی ها، تعداد ماژول ها و درصد خطای موجود در هر مجموعه داده که نمایانگر درصد ماژول های خطادار است نشان داده شده است. در میان این مجموعه داده ها JM1 بیشترین تعداد ماژول و Kc3 دارای کمترین تعداد ماژول می باشد . همچنین Kc3 با 39 ویژگی بالاترین تعداد ویژگی را دارا و پنج مجموعه داده Cm1,Jm1,Kc1,Kc2 وPc1 کمترین تعداد ویژگی را دارند. بیشترین درصد نمونه های خطادار 21 درصد و متعلق به مجموعه داده Kc2 و کمترین درصد نمونه های خطادار مربوط به Pc2 و با میزان 0.5 درصد است.
هریـــک از ایـــن مجموعـــه داده هـــا حـــاوی اطلاعـــات و ویژگی هایی می باشـند کـه وضـعیت ماژولهـای خطـادار و فاقـد خطــارا توصــیف مــی کننــد. تعــدادی از مهــم تــرین معیارهــای اندازه گیری که برای مدل کردن نرم افزار هـای موجـود در ایـن پایگاه به کار گرفته شده اند در جدول 2 ذکر شده است.
پزشکی به وفـور مشـاهده شـده اسـت. در ایـن مـوارد الگـوریتم استاندارد طبقه بنـدی کننـده تمایـل بیشـتری بـه کـلاس هـای اکثریت دارد. زیرا قوانینی که این نمونهها را به درستی پیشبینی می کنند به درستی وزن دهی شده اند در حالی که قوانین خاصـی که نمونه های کلاس اقلیت را پیش بینی می کننـد عمومـاً نادیـده گرفته می شوند. در واقع به صورت نویز با آنها برخورد میشود و در نتیجه نمونه های کلاس اقلیت به اشتباه طبقه بنـدی خواهنـد شد.
به منظور رسیدگی به مسائل مربوط به مجموعـه داده هـای نامتوازن تکنیک های متعددی معرفی شده اند کـهعمـدتاً بـه دو دسته زیر طبقه بندی میشوند:
الف. نمونه گیری از داده ها ب . راه حل در سطح الگوریتم
متغیرهای آزمایشی به دونوع متغیر وابسته و مستقل تقسیم می شوند. هر مجموعه داده شامل تعدادی متغیر مسـتقل و یـک متغیر وابسته می باشد. متغیر وابسته که متغیری دودویـی اسـت نمایانگر معیوب بودن یا نبودن ماژول است. از جمله ویژگی هـای ماژول ها می توان به معیار مک کیب و هالستد که بـه پیچیـدگی ماژول ها مربوط می شود و معیار تعداد خط کد که بیانگر انـدازه ماژول است اشاره کرد.
از ایــن مجموعــه داده هــا در بیشــتر تحقیقــات مربــوط بــه مهندسی نرم افزار در طی چند سال اخیر استفاده شده است.
-4 مسأله کلاس های نامتوازن
وجود کلاس های نامتوازن در داده کاوی و طبقـه بنـدی بـه یکی از چالش های بزرگ در این زمینه تبدیل شـده اسـت. بـرای رفع این چالش روش های گوناگونی وجود دارد که در ادامه بـه دو نوع از مهمترین آنها اشاره خواهد شـد. اصـطلاح "مجموعـه داده نامتوازن" عموما به مجموعـه داده ای گفتـه مـی شـود کـه در آن تعداد نمونه هایی که نمایانگر یـک کـلاس هسـتند از نمونـههـای دیگر در کلاس های متفاوت کمتر است. این حالت در طبقه بندی زمانی مشکل ساز می شود که یک کلاس که عموماً کـلاس مطلـق یا اقلیت میباشد در مجموعه دادهها نشان داده نمی شود. به بیان دیگر تعداد مشاهدات اشتباه از مشاهدات درست در یـک کـلاس بیشتر می شـود. ایـن مشـکل در مسـائل واقعـی از قبیـل کشـف آلودگی، مدیریت ریسک، کشف تقلب و مخصوصاً تشـخیص هـای
4