Using Fuzzy Threshold Values for Predicting Class Libraries Interface Evolution Houari A. Sahraoui DIRO, Université de Montréal, Canada Sahraouh@iro.umontreal.ca Mounir A. Boukadoum Dép. d’Informatique Université du Québec à Montréal, Canada Mounir.Boukadoum@uqam.ca Hakim Lounis CRIM, Canada hlounis@crim.ca Abstract This work presents a technique to circumvent one of the major problems associated with building and applying techniques to build software quality estimation models, namely the use of precise metric thresholds values; we used a fuzzy binary decision tree to investigate the stability of a reusable class library interface, using structural metrics as stability indicators. To evaluate this new approach, we conducted a study on different versions of a commercial C++ class library. The obtained results are very promising when compared to those of two classical machine learning approaches, Top Down Induction of Decision Trees and Bayesian classifiers. Keywords Software reusability, quality assessment, machine learning, fuzzy logic 1. Introduction Object-oriented software products are becoming more complex and time consuming, so is also the writing of newer versions. Pressman estimated at 60% the part devoted to maintenance in the total effort of the software development industry [19], from which 80% is devoted directly or indirectly to software evolution (adaptive and perfective maintenance) [18]. In spite of the benefits of object-oriented technology, OO class libraries, like the majority of software systems, are not exempt from this rule. Moreover, their evolution must take into account an additional constraint: to preserve, as much as possible, the compatibility among versions. In this respect, it has become important to develop tools that allow the prediction of class evolvability through the symptomatic detection of potential instabilities during the design phase of such libraries. This may help avoid later problems. In our context, we define evolvability as the ease with which a software system or a component can evolve while preserving its design as much as possible. In the case of OO class libraries, we restrict the preservation of the design to the preservation of the library interface. This is important when we consider that the evolution of a system that uses a library is directly influenced by the evolvability of the library. For instance, a system that uses version i of a library can easily be upgraded with version i+1 of the same library if the new version preserves the interface of the older one.