[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/1141277.1141685acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
Article

Extracting refactoring trends from open-source software and a possible solution to the 'related refactoring' conundrum

Published: 23 April 2006 Publication History

Abstract

Refactoring, as a software engineering discipline has emerged over recent years to become an important aspect of maintaining software. Refactoring refers to the restructuring of software according to specific mechanics and principles. In this paper, we describe a tool that allows refactoring data across multiple versions of seven open-source software systems to be collected. The tool automates the identification of refactorings as program transformations between consecutive software releases. The same tool thus allowed an empirical analysis of software development across versions from the perspective of those transformations. We describe results for the systems analysed and point to key conclusions from our analysis. In particular, we investigate a problematic empirical question as to whether certain refactorings are related, i.e., they cannot be undertaken in isolation without other refactorings being undertaken in parallel. In this context, we focus specifically on the four most common refactorings identified by the tool from three of the open-source systems and use a dependency graph to inform conclusions about the empirical data extracted by the tool. An interesting result relating to some common refactorings is described.

References

[1]
D. Advani, Y. Hassoun and S. Counsell. Refactoring trends across N versions of N Java open source systems: an empirical study. SCSIS-Birkbeck, University of London Technical Report, BBKCS-05-03-02, 2005.
[2]
D. Arsenovski. Refactoring- elixir of youth for legacy VB code. Available at: www.codeproject.com/vb/net/Refactoring_elixir.asp.
[3]
L. Briand, C. Bunse and J. Daly. A controlled experiment for evaluating quality guidelines on the maintainability of object-oriented designs. IEEE Trans. on Software Engineering, 27(6), 2001, pages 513--530.
[4]
S. Counsell, G. Loizou, R. Najjar, and K. Mannock. On the relationship between encapsulation, inheritance and friends in C++ software. Proceedings of Intnl. Conf. on Software System Eng. and its Applications (ICSSEA'02), Paris, France, 2002.
[5]
S. Counsell, Y. Hassoun, R. Johnson, K. Mannock and E. Mendes. Trends in Java code changes: the key identification of refactorings, ACM 2nd Intnl. Conf. on the Principles and Practice of Programming in Java, Kilkenny, Ireland, June 2003.
[6]
S. Demeyer, S. Ducasse and O. Nierstrasz, Finding refactorings via change metrics, ACM Conference on Object Oriented Prog. Systems Languages and Applns (OOPSLA), Minneapolis, USA. pages 166--177, 2000.
[7]
R. Ferenc, I. Siket, T. Gyimothy. Extracting Facts from Open Source Software. Proceedings of 20th International Conference on Software Maintenance (ICSM 2004), Chicago, USA, pages 60--69.
[8]
B. Foote and W. Opdyke, Life Cycle and Refactoring Patterns that Support Evolution and Reuse. Pattern Languages of Programs (James O. Coplien and Douglas C. Schmidt, editors), Addison-Wesley, May, 1995.
[9]
M. Fowler. Refactoring (Improving The Design of Existing Code). Addison Wesley, May, 1995.
[10]
R. Harrison, S. Counsell and R. Nithi. Experimental assessment of the effect of inheritance on the maintainability of object-oriented systems, Journal of Systems and Software, 52, 2000, pages 173--179.
[11]
JavaCC, JavaCC Parser, Available {ONLINE} from {https://javacc.dev.java.net/}, Last Accessed 22nd August 2004.
[12]
JDOM, JDOM API, Available {ONLINE} from {http://www.jdom.org}, Last Accessed on 23rd August 2004.
[13]
R. Johnson and B. Foote. Designing Reusable Classes, Journal of Object-Oriented Programming 1(2), pages 22--35. June/July 1988.
[14]
J. Kerievsky, Refactoring to Patterns, Addison Wesley, 2004.
[15]
T. Mens and T. Tourwe, A Survey of Software Refactoring, IEEE Transactions on Software Engineering 30(2):126--139 (2004).
[16]
R. Najjar, S. Counsell, G. Loizou and K. Mannock. The role of constructors in the context of refactoring object-oriented software. Seventh European Conference on Software Maintenance and Reengineering (CSMR '03). Benevento, Italy, March 26-28, 2003. pages 111 -- 120.
[17]
R. Najjar, S. Counsell and G. Loizou. Encapsulation and the vagaries of a simple refactoring: an empirical study. SCSIS-Birkbeck, University of London Technical Report, BBKCS-05-03-02, 2005.
[18]
M. O'Cinneide and P. Nixon. Composite Refactorings for Java Programs. Proceedings of the Workshop on Formal Techniques for Java Programs. ECOOP Workshops 1998.
[19]
W. Opdyke. Refactoring object-oriented frameworks, Ph.D. Thesis, University of Illinois. 1992.
[20]
T. J Ostrand, E J. Weyuker and R. M. Bell. Where the bugs are. Proceedings of ACM SIGSOFT Intnl. Symp. on Software Testing and Analysis, Boston, USA. Pages: 86 -- 96, 2004.
[21]
D. Perry. Laws and Principles of Evolution, Panel Paper, International Conference on Software Maintenance, Montreal, Canada, pages 70--71, 2002.
[22]
Recoder, Recoder API, Available {ONLINE} from {http://recoder.sourceforge.net/}, Last Accessed on 23rd August 2004.
[23]
L. Tokuda and D. Batory. Evolving object-oriented designs with refactorings. Automated Software Engineering, 8:89--120, 2001.

Cited By

View all
  • (2017)Modularizing application and database evolution - an aspect-oriented framework for orthogonal persistenceSoftware—Practice & Experience10.1002/spe.241547:2(193-221)Online publication date: 1-Feb-2017
  • (2015)The Relationship between Depth of Inheritance and RefactoringProceedings of the 2015 41st Euromicro Conference on Software Engineering and Advanced Applications10.1109/SEAA.2015.42(88-91)Online publication date: 26-Aug-2015
  • (2014)Are refactoring practices related to clusters in java software?Agile Processes in Software Engineering and Extreme Programming10.5555/2813544.2813564(269-276)Online publication date: 26-May-2014
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SAC '06: Proceedings of the 2006 ACM symposium on Applied computing
April 2006
1967 pages
ISBN:1595931082
DOI:10.1145/1141277
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 23 April 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. dependencies
  2. empirical analysis
  3. object-oriented
  4. refactoring
  5. tool

Qualifiers

  • Article

Conference

SAC06
Sponsor:

Acceptance Rates

Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

Upcoming Conference

SAC '25
The 40th ACM/SIGAPP Symposium on Applied Computing
March 31 - April 4, 2025
Catania , Italy

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)0
Reflects downloads up to 09 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2017)Modularizing application and database evolution - an aspect-oriented framework for orthogonal persistenceSoftware—Practice & Experience10.1002/spe.241547:2(193-221)Online publication date: 1-Feb-2017
  • (2015)The Relationship between Depth of Inheritance and RefactoringProceedings of the 2015 41st Euromicro Conference on Software Engineering and Advanced Applications10.1109/SEAA.2015.42(88-91)Online publication date: 26-Aug-2015
  • (2014)Are refactoring practices related to clusters in java software?Agile Processes in Software Engineering and Extreme Programming10.5555/2813544.2813564(269-276)Online publication date: 26-May-2014
  • (2014)Are Refactoring Practices Related to Clusters in Java Software?Agile Processes in Software Engineering and Extreme Programming10.1007/978-3-319-06862-6_20(269-276)Online publication date: 2014
  • (2013)A Longitudinal Study of Fan-In and Fan-Out Coupling in Open-Source SystemsFrameworks for Developing Efficient Information Systems10.4018/978-1-4666-4161-7.ch009(199-224)Online publication date: 2013
  • (2013)Class Schema Evolution for Persistent Object-Oriented SoftwareIEEE Transactions on Software Engineering10.1109/TSE.2011.12339:2(184-196)Online publication date: 1-Feb-2013
  • (2013)Conditional-Based Refactorings and Fault-PronenessProceedings of the 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation Workshops10.1109/ICSTW.2013.81(80-85)Online publication date: 18-Mar-2013
  • (2012)Issues arising from refactoring studiesACM SIGSOFT Software Engineering Notes10.1145/2180921.218092237:3(1-5)Online publication date: 16-May-2012
  • (2012)On the effect of aspect-oriented refactoring on testability of classes: A case study2012 International Conference on Computer Systems and Industrial Informatics10.1109/ICCSII.2012.6454577(1-7)Online publication date: Dec-2012
  • (2012)Refactoring and its Relationship with Fan-in and Fan-outProceedings of the 2012 16th European Conference on Software Maintenance and Reengineering10.1109/CSMR.2012.17(63-72)Online publication date: 27-Mar-2012
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media