Detecting increases in feature coupling using regression tests

Repeated changes to a software system can introduce small weaknesses such as unplanned dependencies between different parts of the system. While such problems usually go undetected, their cumulative effect can result in a noticeable decrease in the quality of a system. We present an approach to warn developers about increased coupling between the (potentially scattered) implementation of different features. Our automated approach can detect sections of the source code contributing to the increased coupling as soon as software changes are tested. Developers can then inspect the results to assess whether the quality of their changes is adequate. We have implemented our approach for C++ and integrated it with the development process of a proprietary 3D graphics software. We report on our evaluation of the approach in the field, and on a study showing that, for files in the target system, causing increases in feature coupling is a significant predictor of future modifications due to bug fixes.

[1]  Edward Yourdon,et al.  Object-oriented analysis , 2012 .

[2]  Rainer Koschke,et al.  Locating Features in Source Code , 2003, IEEE Trans. Software Eng..

[3]  James F. Power,et al.  Using object-level run-time metrics to study coupling between objects , 2005, SAC '05.

[4]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[5]  Chris F. Kemerer,et al.  Towards a metrics suite for object oriented design , 2017, OOPSLA '91.

[6]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[7]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

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

[9]  Thomas Ball,et al.  The concept of dynamic analysis , 1999, ESEC/FSE-7.

[10]  Meir M. Lehman,et al.  A Model of Large Program Development , 1976, IBM Syst. J..

[11]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[12]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[13]  Lionel C. Briand,et al.  Empirical Investigations of Quality Factors in Object- Oriented Software , 1999 .

[14]  Norman Wilde,et al.  Software reconnaissance: Mapping program features to code , 1995, J. Softw. Maintenance Res. Pract..

[15]  J.A. Gomez,et al.  Locating user functionality in old code , 1992, Proceedings Conference on Software Maintenance 1992.

[16]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

[17]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[18]  James F. Power,et al.  A study of the influence of coverage on the relationship between static and dynamic coupling metrics , 2006, Sci. Comput. Program..

[19]  Andrew David Eisenberg,et al.  Dynamic feature traces: finding features in unfamiliar code , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[20]  Shriram Krishnamurthi,et al.  The feature signatures of evolving programs , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[21]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[22]  Gregor Snelting,et al.  Concept analysis—a new framework for program understanding , 1998, PASTE '98.

[23]  Lorrie Faith Cranor,et al.  Internet privacy , 1999, CACM.

[24]  Barbara A. Kitchenham,et al.  Coupling measures and change ripples in C++ application software , 2000, J. Syst. Softw..

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

[26]  Roy H. Campbell,et al.  Monitoring compliance of a software system with its high-level design models , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[27]  Gregg Rothermel,et al.  Whole program path-based dynamic impact analysis , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

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

[29]  Jeffrey K. Hollingsworth,et al.  Efficient instrumentation for code coverage testing , 2002, ISSTA '02.

[30]  David Notkin,et al.  Software Reflexion Models: Bridging the Gap between Design and Implementation , 2001, IEEE Trans. Software Eng..

[31]  Shirley Dex,et al.  JR 旅客販売総合システム(マルス)における運用及び管理について , 1991 .

[32]  Kim Mens,et al.  Towards a framework for testing structural source-code regularities , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[33]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..