چکیده
در طی فرآیند توسعه نرم افزار، پیش بینی تعداد خطاها در ماژول های نرم افزاری می تواند بسیار کمک کننده تر از پیش بینی ماژول هایی باشد که دچار خطا شده اند یا بدون خطا هستند. چنین روشی می تواند در فرآیند تست نرم افزار کمک کند و سبب ارتقاء قابلیت اطمینان سیستم نرم افزار شود. بیشتر کارهای اولیه درباره پیش بینی خطای نرم افزار از تکنیک های دسته بندی برای طبقه بندی ماژول های نرم افزاری به گروه های خطادار یا بدون خطا استفاده کرده اند. این تکنیک ها همانند رگرسیون پوآسون، رگرسیون دو جمله ای منفی ، برنامه نویسی ژنتیک، رگرسیون درخت تصمیم و پرسپترون چند لایه در پیش بینی تعداد خطاها قابل استفاده هستند. در این مقاله یک مطالعه تجربی برای ارزیابی و مقایسه ظرفیت شش تکنیک پیش بینی خطا از جمله برنامه نویسی ژنتیک، پرسپترون چند لایه، رگرسیون خطی، رگرسیون درخت تصمیم، رگرسیون پوآسون و رگرسیون دو جمله ای منفی را به منظور پیش بینی تعداد خطاها ارائه می کنیم. این بررسی تجربی برای 18 دیتاست پروژه نرم افزاری انجام شده است که از مخزن داده های PROMISE جمع آوری شده است. نتایج این تحقیق با استفاده از متوسط خطای مطلق، متوسط خطای نسبی، اندازه گیری میزان کامل بودن و پیش بینی در معیارهای سطح 1 مورد ارزیابی قرار گرفته اند. همچنین تست های Kruskal–Wallis و مقایسه چندتایی Dunn را برای مقایسه عملکرد نسبی تکنیک های پیش بینی خطا انجام می دهیم.
1. مقدمه
از دیدگاه توسعه نرم افزار، سر و کار داشتن با خطاهای نرم افزاری کاری بسیار مهم و از اولویت بالایی برخوردار است. وجود خطاها نه تنها سبب افت کیفیت نرم افزار می شود، بلکه همچنین هزینه توسعه و نگهداری نرم افزار را نیز افزایش می دهد (Menzies et al. 2010). بنابراین شناسایی این که کدام ماژول نرم افزار با احتمال زیاد در طی مراحل اولیه توسعه نرم افزار می تواند مستعد خطا باشد، می تواند در بهبود کیفیت سیستم نرم افزار کمک کننده باشد. با پیش بینی تعداد خطاها در ماژول های نرم افزار می توانیم تست کننده های نرم افزار را برای تمرکز بر ماژول های خطادار هدایت کنیم.
7. نتیجه گیری ها و کار آتی
این مقاله عملکرد شش تکنیک پیش بینی خطا را برای پیش بینی تعداد خطاها در ماژول های نرم افزاری داده شده مورد بررسی و مقایسه قرار داده است. ما از چهار تکنیک شناخته شده پیش بینی خطا یعنی LR، MLP، NBR و ZIP برای پیش بینی تعداد خطاها استفاده کرده ایم. علاوه بر این، ما دو تکنیک یعنی GP و DTR را نیز مورد بررسی قرار داده ایم که تا به حال به طور کامل برای پیش بینی تعداد خطاها مورد بررسی قرار نگرفته اند. این آزمایش ها برای 18 دیتاست پروژه نرم افزاری اجرا شده است. معیارهای AAE، ARE، کامل بودن و پیش بینی در سطح 1 برای ارزیابی نتایج حاصل از مدل های پیش بینی خطا مورد استفاده قرار گرفته اند. علاوه بر این، تست Kruskal–Wallis و تست مقایسه چندگانه Dunn نیز برای ارزیابی عملکرد نسبی تکنیک های پیش بینی خطا اجرا شده است. نتایج نشان داده است که در بین تکنیک های مختلف پیش بینی خطا، روش های رگرسیون درخت تصمیم، برنامه نویسی ژنتیک، پرسپترون چند لایه و رگرسیون خطی عملکرد پیش بینی بهتری برای تمامی دیتاست های تحت بررسی نشان داده اند. تحلیل نتایج به دست آمده از تست Kruskal–Wallis و تست مقایسه چندگانه Dunn پیشنهاد داده اند که به استثنای تکنیک های رگرسیون دوجمله ای منفی (NBR) و رگرسیون پوآسون با تورم صفر (ZIP)، تمامی تکنیک های دیگر عملکرد بسیار دقیقی برای پیش بینی تعداد خطاها داشته اند. به طور کلی، تکنیک های NBR و ZIP بدترین دقت پیش بینی را تولید کرده اند. بنابراین، مشاهده می شود که مدل های شمارش (NBR و ZIP) به طور کلی عملکرد ضعیفی نسبت به دیگر تکنیک های پیش بینی خطا داشته اند. در آینده سعی می شود تا اثر کلی این روش ها برای تعداد پیش بینی خطاها به منظور غلبه بر محدودیت های تکنیک های پیش بینی خطا مورد بررسی و ارزیابی قرار گیرد.
Abstract
During the software development process, prediction of the number of faults in software modules can be more helpful instead of predicting the modules being faulty or non-faulty. Such an approach may help in more focused software testing process and may enhance the reliability of the software system. Most of the earlier works on software fault prediction have used classification techniques for classifying software modules into faulty or non-faulty categories. The techniques such as Poisson regression, negative binomial regression, genetic programming, decision tree regression, and multilayer perceptron can be used for the prediction of the number of faults. In this paper, we present an experimental study to evaluate and compare the capability of six fault prediction techniques such as genetic programming, multilayer perceptron, linear regression, decision tree regression, zero-inflated Poisson regression, and negative binomial regression for the prediction of number of faults. The experimental investigation is carried out for eighteen software project datasets collected from the PROMISE data repository. The results of the investigation are evaluated using average absolute error, average relative error, measure of completeness, and prediction at level l measures. We also perform Kruskal–Wallis test and Dunn’s multiple comparison test to compare the relative performance of the considered fault prediction techniques.
1 Introduction
From software development perspective, dealing with software faults is a vital and foremost important task. Presence of faults not only deteriorates the quality of the software, but also increases the development and maintenance cost of the software (Menzies et al. 2010). Therefore, identifying which software module is likely to be fault prone during early phases of software development may help in improving the quality of software system. By predicting number of faults1 in software modules, we can guide software testers to focus on faulty modules first.
7 Conclusions and future work
This paper evaluated and compared the performance of six fault prediction techniques for the prediction of number of faults in given software modules. We have used four known fault prediction techniques, i.e., LR, MLP, NBR, and ZIP for the prediction of number of faults. In addition, we have investigated two techniques, i.e., GP and DTR, which until now have not been fully explored for the prediction of number of faults. The experiments were performed for eighteen software project datasets available publicly. AAE, ARE, measure of completeness, and prediction at level l measures have been used to evaluate the results of fault prediction models. In addition, Kruskal–Wallis test and Dunn’s multiple comparison test were performed to assess the relative performance of the used fault prediction techniques. The results found that among the used different fault prediction techniques, decision tree regression, genetic programming, multilayer perceptron, and linear regression demonstrated better prediction performance for all the datasets under consideration. The analysis of results obtained from Kruskal–Wallis test and Dunn’s multiple comparison test suggested that except negative binomial regression (NBR) and zero-inflated Poisson regression (ZIP) techniques all other techniques have performed significantly accurate for the prediction of number of faults. Generally, NBR and ZIP techniques produced the worst prediction accuracy. Thus, it is observed that the count models (NBR and ZIP) generally underperformed as compared to other considered fault prediction techniques. In the future, it may be tried to investigate and evaluate ensemble of these methods for the number of faults prediction to overcome the limitations of individual techniques.
چکیده
1. مقدمه
2. کار مرتبط
3. تکنیک های پیش بینی خطا
3-1 مدل های شمارش
3-1-1 رگرسیون دو جمله ای منفی
3-1-2 رگرسیون پوآسون با تورم صفر
3-2 دیگر تکنیک های پیش بینی خطا
3-2-2 پرسپترون چند لایه
3-2-3 برنامه نویسی ژنتیک
3-2-4 رگرسیون درخت تصمیم
3-3 معیارهای ارزیابی عملکرد
4. مطالعه موردی تجربی
4-1 توصیف سیستم
4-2 طراحی تجربی
4-3 نتایج و تحلیل
4-3-1 تحلیل AAE و ARE
4-3-2 معیار کامل بودن
4-3-3 پیش بینی در تحلیل سطح 1
4-4 معیارهای مهم برای پیش بینی تعداد خطاها
5. تحلیل مقایسه ای
6. تهدیدات به اعتبار
7. نتیجه گیری ها و کار آتی
منابع
Abstract
1 Introduction
2 Related work
3 Fault prediction techniques
3.1 Count models
3.1.1 Negative binomial regression
3.2 Other fault prediction techniques
3.2.1 Linear regression
3.2.2 Multilayer perceptron
3.2.3 Genetic programming
3.2.4 Decision tree regression
3.3 Performance evaluation measures
4 Empirical case study
4.1 System description
4.2 Experimental design
4.3 Results and analysis
4.3.1 AAE and ARE analysis
4.3.2 Measure of completeness
4.3.3 Prediction at level l analysis
4.4 Significant metrics for the prediction of number of faults
5 Comparative analysis
6 Threats to validity
7 Conclusions and future work
References