How Software Designs Decay: A Pilot Study of Pattern Evolution

A common belief is that software designs decay as systems evolve. This research examines the extent to which software designs actually decay by studying the aging of design patterns in successful object oriented systems. Aging of design patterns is measured using various types of decay indices developed for this research. Decay indices track the internal structural changes of a design pattern realization and the code that surrounds the realization. Hypotheses for each kind of decay are tested. We found that the original design pattern functionality remains, and pattern decay is due to the "grime ", non-pattern code, that grows around the pattern realization.

[1]  Taghi M. Khoshgoftaar,et al.  The Detection of Fault-Prone Programs , 1992, IEEE Trans. Software Eng..

[2]  Pearl Brereton,et al.  Lessons from applying the systematic literature review process within the software engineering domain , 2007, J. Syst. Softw..

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

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

[5]  Taghi M. Khoshgoftaar,et al.  Predicting Software Development Errors Using Software Complexity Metrics , 1990, IEEE J. Sel. Areas Commun..

[6]  Martin J. Shepperd,et al.  Towards a conceptual framework for object oriented software metrics , 1995, SOEN.

[7]  Taghi M. Khoshgoftaar,et al.  Detection of fault-prone software modules during a spiral life cycle , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[8]  Taghi M. Khoshgoftaar,et al.  Detection of fault-prone program modules in a very large telecommunications system , 1995, Proceedings of Sixth International Symposium on Software Reliability Engineering. ISSRE'95.

[9]  Taghi M. Khoshgoftaar,et al.  Analyzing software measurement data with clustering techniques , 2004, IEEE Intelligent Systems.

[10]  Weiwen Miao,et al.  Robust directed tests of normality against heavy-tailed alternatives , 2007, Comput. Stat. Data Anal..

[11]  Warren Harrison,et al.  A micro/macro measure of software complexity , 1987, J. Syst. Softw..

[12]  Roel Wieringa,et al.  The methodological soundness of requirements engineering papers: a conceptual framework and two case studies , 2006, Requirements Engineering.

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

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

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

[16]  Filippo Lanubile,et al.  Comparing models for identifying fault-prone software components , 1995, SEKE.

[17]  Barbara A. Kitchenham,et al.  An evaluation of some design metrics , 1990, Softw. Eng. J..

[18]  David Lorge Parnas Invited Plenary Talk , 1994 .