【正文】
計算機專業(yè)英文資料匯總作者:日期:Jiang Y, Li M, Zhou ZH. Software defect detection with Rocus. JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY 26(2): 328{342 Mar. 2011. DOI Software Defect Detection with ROCUSYuan Jiang (姜遠), Member, CCF, Ming Li (黎銘)164。, Member, CCF, ACM, IEEEand ZhiHua Zhou (周志華), Senior Member, CCF, IEEE, Member, ACMNational Key Laboratory for Novel Software Technology, Nanjing University, Nanjing 210093, ChinaEmail: fjiangyuan, lim, zhouzhg@Received May 15, 2009。 revised October 26, 2010.Abstract Software defect detection aims to automatically identify defective software modules for e177。cient software testin order to improve the quality of a software system. Although many machine learning methods have been successfullyapplied to the task, most of them fail to consider two practical yet important issues in software defect detection. First,it is rather di177。cult to collect a large amount of labeled training data for learning a wellperforming model。 second, in asoftware system there are usually much fewer defective modules than defectfree modules, so learning would have to beconducted over an imbalanced data set. In this paper, we address these two practical issues simultaneously by proposing anovel semisupervised learning approach named Rocus. This method exploits the abundant unlabeled examples to improvethe detection accuracy, as well as employs undersampling to tackle the classimbalance problem in the learning process.Experimental results of realworld software defect detection tasks show that Rocus is e174。ective for software defect detection.Its performance is better than a semisupervised learning method that ignores the classimbalance nature of the task and aclassimbalance learning method that does not make e174。ective use of unlabeled data.Keywords machine learning, data mining, semisupervised learning, classimbalance, software defect detection1 IntroductionEnabled by technological advances in puterhardware, software systems have bee increasinglypowerful and versatile. However, the attendant increasein software plexity has made the timely development of reliable software systems extremely challenging.To make software systems reliable, it is very importantto identify as many defects as possible before releasing the software. However, due to the plexity ofthe software systems and the tight project schedule, itis almost impossible to extensively test every path ofthe software under all possible runtime environment.Thus, accurately predicting whether a software modulecontains defects can help to allocate the limited testresources e174。ectively, and hence, improve the quality ofsoftware systems. Such a process is usually referred toas software defect detection, which has already drawnmuch attention in software engineering munity.Machine learning techniques have been successfullyapplied to building predictive models for software defectdetection[17]. The static and dynamic code attributesor software metrics are extracted from each softwaremodule to form an example, which is then labeled as\defective or \defectfree. Predictive models whichlearn from a large number of examples are expected toaccurately predict whether a given module is defective.However, most of these studies have not consideredtwo practical yet important issues in software defectdetection. First, although it is relatively easy to automatically generate examples from software modules using some standard tools, determining whether a modulecontains defect through extensive test usually consumestoo much time and resource, since the number of program status grows exponentially as the plexity ofsoftware increases. With limited time and test resource,one can only obtain the labels for a small portion ofmodules. However, the predictive models that learnfrom such a small labeled training set may not performwell. Second, the data in software defect detection areessentially imbalanced. The number of defective modules is usually much less than that of the defectfreemodules. Ignoring the imbalance nature of the problem, a learner that minimizes the prediction error canRegular PaperThis work was supported by the National Natural Science Foundation of China under Grant Nos. 60975043, 60903103, and60721002.164。Corresponding Author169。2011 Springer Science+Business Media, LLC amp。 Science Press, China萬方數(shù)據(jù)Yuan Jiang et al.: Software Defect Detection with Rocus 329often produce a useless predictive model that uniformlypredicts all the modules as defectfree. Without takingthese two issues into consideration, the e174。ectivenessof software defect detection in many realworld taskswould be greatly reduced.Some researchers have noticed the importance ofthese two issues in software defect detection and triedto tackle some of them based on machine learning techniques. For instance, Seliya and Khoshgoftaar[8] employed semisupervised learning to improve the performance achieved on a small amount of labeled databy exploiting the abundant unlabeled data。 contrarily, Pelayo and Dick[9] applied the resampling strategyto balance the skewed class distribution of the datasetbefore learning the predictive model for software defect detection. Although attempting to tackle one issue may gain performance improvement to some extent,both methods su174。er the in176。uence of the other issuethat they have not considered. If conventional semisupervised learning is used, assuming that the learnercan accurately assign labels to the unlabeled data, thelearner may be easily biased by the overwhelming number of newlylabeled defectfree modules, and hence there175。ned model would be less sensitive to the defect modules. The sensitivity drops fast as the iterative semisupervised learning proceeds. On the other hand, resampling methods would bee less e174。ective if provided