Abstract:
Software systems are becoming more and more complex. With the increasing size
and complexity of software systems, it is becoming more challenging to assess
their quality. There are several attributes that de ne software quality. One very
important attribute is fault-proneness. This is normally measured at the level of
a module. A module is a class in the object-oriented design or a function in the
procedural design. The fault-proneness of a module is de ned as the probability
of it containing defect and/or resulting in faults. It is very important to assess
fault-proneness of a module as it affects other external software quality attributes
such as maintainability and reliability of the software system where it resides. If
a system encompasses a defective module, correcting the resulting fault can cost
much more than repairing the module before integration. Hence, it is crucial to
be able to assess fault-proneness before the module is actually integrated in the
system and the latter deployed and faults occurring. In this context, we speak of
classifying modules into fault-prone or not. Our work focuses on modules in the
object-oriented design. It is divided into two main tracks. One that focuses on predicting defect in software modules using a hybrid heuristic - a combination of
Particle Swarm Optimization (PSO) and Genetic Algorithms (GA). We compare
our approach to 9 well known machine learning techniques and results show the
advantages of our model over the other techniques. The second track explores
the use of one-class classi ers on the problem of software defect prediction. We
test this approach using well known one-class predictors and we compare their
performance to that of their corresponding two-class techniques. Results prove
that one-class predictors can in fact be used to predict software defect.