Change Prediction in Object-Oriented Software Systems: A Probabilistic Approach

An estimation of change-proneness of parts of a software system is an active topic in the area of software engineering. Such estimates can be used to predict changes to different classes of a system from one release to the next. They can also be used to estimate and possibly reduce the effort required during the development and maintenance phase by balancing the amount of developers’ time assigned to each part of a software system. This research work proposes a novel approach to predict changes in an object-oriented software system. The rationale behind this approach is that in a well-designed software system, feature enhancement or corrective maintenance should affect a limited amount of existing code. Our goal is to quantify this aspect of quality by assessing the probability that each class will change in a future generation. Our proposed probabilistic approach uses the dependencies obtained from the UML diagrams, as well as other code metrics extracted from source code of several releases of a software system using reverse engineering techniques. These measures, combined with the change log of the software system and the expected time of next release, are used in an automated manner to predict whether a class will change in the next release of the software system. The proposed systematic approach has been evaluated on a multiversion medium sized open source project namely JFlex, the Fast Scanner Generator for Java. The obtained results indicate the simplicity and accuracy of our approach in the comparison with existing methods referred in the literature.

[1]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[2]  Gail C. Murphy,et al.  Predicting source code changes by mining change history , 2004, IEEE Transactions on Software Engineering.

[3]  Lionel C. Briand,et al.  Using coupling measurement for impact analysis in object-oriented systems , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[4]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[5]  Shawn A. Bohner,et al.  Impact analysis-Towards a framework for comparison , 1993, 1993 Conference on Software Maintenance.

[6]  Stéphane Ducasse,et al.  Yesterday's Weather: guiding early reverse engineering efforts by summarizing the evolution of changes , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[7]  Li Li,et al.  Algorithmic analysis of the impact of changes to object-oriented software , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[8]  Andreas Zeller,et al.  Predicting faults from cached history , 2008, ISEC '08.

[9]  Sallie M. Henry,et al.  Object-oriented metrics that predict maintainability , 1993, J. Syst. Softw..

[10]  Harvey P. Siy,et al.  Predicting Fault Incidence Using Software Change History , 2000, IEEE Trans. Software Eng..

[11]  William H. Press,et al.  The Art of Scientific Computing Second Edition , 1998 .

[12]  Ladan Tahvildari,et al.  Journal of Software Maintenance and Evolution: Research and Practice Improving Design Quality Using Meta-pattern Transformations: a Metric-based Approach , 2022 .

[13]  Audris Mockus,et al.  Predicting risk of software changes , 2000, Bell Labs Technical Journal.

[14]  H. Kagdi,et al.  Software-Change Prediction: Estimated+Actual , 2006, 2006 Second International IEEE Workshop on Software Evolvability (SE'06).

[15]  Richard C. Holt,et al.  Predicting change propagation in software systems , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[16]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[17]  F. A. Seiler,et al.  Numerical Recipes in C: The Art of Scientific Computing , 1989 .

[18]  Lionel C. Briand,et al.  Dynamic coupling measurement for object-oriented software , 2004, IEEE Transactions on Software Engineering.

[19]  François Lustman,et al.  A change impact model for changeability assessment in object-oriented software systems , 2002, Sci. Comput. Program..

[20]  Alexander Chatzigeorgiou,et al.  Predicting the probability of change in object-oriented systems , 2005, IEEE Transactions on Software Engineering.

[21]  David Lorge Parnas,et al.  Some software engineering principles , 2001 .

[22]  Arthur J. Riel,et al.  Object-Oriented Design Heuristics , 1996 .

[23]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .