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

واژگان کلیدی: پیش بینی نقص نرم افزار، متوازن سازی کلاس ها

-۱ مقدمه

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

برای کم کردن خطای سیستم های نرم افزاری به تست نرم افزار نیاز است اما حدود ۵۰ تا ۶۰ درصد هزینه توسعه نرم افزار به تست مربوط می شود.[۲] به دلیل هزینه بر بودن تست کلیه ماژولهای یک سیستم نرم افزاری بزرگ، لازم است فقط ماژولهایی که احتمال خطای بیشتری دارند تست شوند. بنابراین احتیاج به تشخیص ماژولهای مستعد خطا پیدا شد. با تشخیص ماژول های مستعد خطا در ابتدای یک پروژه نرم افزاری، مدیران پروژه های نرم افزاری می توانند زمان، هزینه و تلاش تیم توسعه را بیشتر صرف تست ماژولهای مستعد خطا کنند و دیگر نیاز به تست کل سیستم نرم افزاری نیست.[۳]

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

گفت مجموعه داده های تشخیص خطای نرم افزار نامتوازن هستند. این بدین معناست که تعداد نمونه های کلاس خطادار بسیار کمتر از کلاس دیگر است.[۳]

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

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

-۲ مروری بر روش های انجام شده در این زمینه

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

۱

هال و همکارانش با هدف ایجاد یک مرور اصـولی روی ۲۰۸ مطالعه پـیش بینـی خطـا کـه از سـال ۲۰۰۰ تـا ۲۰۱۰ منتشـر شده اند به بررسی مفهوم مدل هـا، متغیرهـای مسـتقل اسـتفاده شده و همچنین کارایی مدل های پیش بینی خطـا مـی پردازنـد. آنها ابتدا به انتقاد از سایر مرورها پرداخته و مشکلات آنها را بیـان می کنند. آنها عقیده داشتند که پـیش بینـی خطـا از موضـوعات مهم در مهندسی نرم افزار است. مدل های پیش بینی خطا تـأثیر بالقوه ای روی بهبود کیفیت سیسـتم هـا و کـاهش هزینـه هـای مرتبط با این سیستم هـا دارد. ایـن مقالـه نشـان مـی دهـد کـه اکثریت مطالعات در این زمینـه کمتـر مفیـد هسـتند. همچنـین بیشتر مطالعات، گزارش متنی و اطلاعات روش شـناختی نارسـا و ناکافی دارند که باعث می شود درک کاملی از مدل دریافت نشـود و کار کاربران را برای انتخاب مدل مناسب دشـوار مـی سـازد. در این مقاله پس از مرور ۲۰۸ مقالـه تنهـا ۳۵ مقالـه دارای شـرایط فهم متنی و روش شناسی خـوب تشـخیص داده شـده اسـت. بـا بررسی آنها یکسری نتایج بدست آمده است از جملـه: پایگـاه داده هایی که بیشتر مورد استفاده قرار می گیرنـد شـامل ایکلیـپس و پرامیس هستند و همچنین تعداد خط کـد بیشـترین اسـتفاده را بعنوان متغیرهای مستقل داشته است. تکنیک های مـدل سـازی که در این موضوع کاربرد زیادی داشـته انـد شـامل نـایوی بیـز و ماشین بردار پشتیبان و رگرسیون لجستیک مـی باشـند. برطبـق این مقاله مدل هایی که کارایی بالایی از خود نشان می دهند سه موضوع را رعایت می کنند: -۱ انتخـاب داده هـای بهینـه سـازی شده. به طور خاص مدل های موفق تمایل به استفاده از مجموعـه داده های بزرگ و دارای سهم نسبتاً بـالایی از واحـدهای معیـوب دارند. – ۲ انتخاب متغیرهای مسـتقل بهینـه سـازی شـده. طیـف وسیعی از معیارهایی که در انتخاب ویژگی استفاده می شود مورد استفاده قرار می گیرد. -۳ انتخـاب تکنیـک مـدل سـازی بهینـه سازی شده