Package Evolvability and its Relationship with Refactoring

In this paper, we address a set of research questions investigating trends in changes to an open-source system (OSS). An interesting ‘peak and trough’ effect trend was found to exist in the system studied, suggesting that developer activity comprises of a set of high and low periods. Trends in overall changes applied to the system were complemented with empirical evidence in refactoring data for the same system; this showed a similar peak and trough effect but at different versions of the same system. This result suggests a contrasting motivation between regular maintenance practice and that of refactoring. Our analysis of high-level package trends informed some interesting cross-comparisons with refactoring practice, and some insights into why refactoring might be applied after a burst of regular change activity, rather than consistently. We use data extracted from seven Java OSS as a basis for our refactoring analysis.

[1]  Stéphane Ducasse,et al.  Butterflies: a visual approach to characterize packages , 2005, 11th IEEE International Software Metrics Symposium (METRICS'05).

[2]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[3]  Lionel C. Briand,et al.  Predicting fault-prone components in a java legacy system , 2006, ISESE '06.

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

[5]  George Loizou,et al.  The role of constructors in the context of refactoring object-oriented systems , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[6]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[7]  Stéphane Ducasse,et al.  A Top-Down Program Comprehension Strategy for Packages , 2004 .

[8]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

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

[10]  William F. Opdyke,et al.  Lifecycle and refactoring patterns that support evolution and reuse , 1995 .

[11]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[12]  Tom Mens,et al.  Identifying refactoring opportunities using logic meta programming , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[13]  James M. Bieman,et al.  OO design patterns, design structure, and program changes: an industrial case study , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[14]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

[15]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[16]  Steve Counsell,et al.  Extracting refactoring trends from open-source software and a possible solution to the 'related refactoring' conundrum , 2006, SAC '06.

[17]  Arie van Deursen,et al.  Refactoring: Emerging Trends and Open Problems , 2003 .

[18]  James M. Bieman,et al.  Design patterns and change proneness: an examination of five evolving systems , 2003, Proceedings. 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. No.03EX717).