[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

Improving modularity by refactoring code clones: a feasibility study on Linux

Published: 01 March 2008 Publication History

Abstract

Modularity is an important principle of software design. It is directly associated with software understandability, maintainability, and reusability. However, as software systems evolve, old code segments are modified / removed and new code segments are added, the original modular design of the program might be distorted. One of the factors that can affect the modularity of the system is the introduction of code clones --- a portion of source code that is identical or similar to another --- in the software evolution process. This paper applies clone detection techniques to study the modularity of Linux. The code clones are first identified using an automatic tool. Then each clone set is analyzed by a domain expert to classify it into one of the three clone concern categories: singular concern, crosscutting concern, and partial concern. Different approaches to dealing with these different categories of code clones are suggested in order to improve modularity.

References

[1]
K.J. Sullivan, W.G. Griswold, Y. Cai, and B. Hallen: The structure and value of modularity in software design, Proceedings of the 8th European Software Engineering Conference, Vienna, Austria, 2001, pp. 99--108.
[2]
W.G. Griswold, K. Sullivan, Y. Song, M. Shonle, N. Tewari, Y. Cai, and H. Rajan: Modular software design with crosscutting interfaces, IEEE Software, 2006, Vol. 23, No. 1, pp. 51--60.
[3]
S. Breu and T. Zimmermann: Mining aspect from version history, Proceedings of the 21st IEEE International Conference on Automated Software Engineering, Tokyo, Japan, September, 2006, pp. 221--230.
[4]
T. Kamiya, S. Kusumoto, and K. Inoue: CCFinder: a multilinguistic token-based code clone detection system for large scale source code, IEEE Transactions on Software Engineering, 2002, Vol. 28, No. 7, pp. 654--670.
[5]
B.S. Baker: On finding duplication and near-duplication in large software systems, Proceedings of the 2nd Working Conference on Reverse Engineering, Toronto, Canada, July 1995, pp. 86--95.
[6]
S. Ducasse, M. Rieger, and S. Demeyer: A language independent approach for detecting duplicated code, Proceedings of the International Conference on Software Maintenance, Oxford, England, September 1999, pp. 109--118.
[7]
C. Kapser and M.W. Godfrey: Toward a taxonomy of clones in source code: a case study, Proceedings of International Workshop on Evolution of Large-Scale Industrial Software Applications, September. 2003.
[8]
A. Chou, J. Yang, B. Chelf, S. Hallem, and D.R. Engler: An empirical study of operating system errors, Proceedings of Symposium on Operating Systems Principles, 2001, pp. 73--88.
[9]
Z. Li, S. Lu, S. Myagmar, and Y. Zhou: CP-Miner: finding copy-paste and related bugs in large-scale software code, IEEE Transactions on Software Engineering, Vol. 32, No. 3, 2006, pp. 176--192.
[10]
M.W. Godfrey and Q. Tu: Evolution in open source software: a case study, Proceedings of the International Conference on Software Maintenance, 2000, pp. 131--142.
[11]
M. Bruntink, A. Deursen, R. Engelen, and T. Tourwe: On the use of clone detection for identifying crosscutting concern code, IEEE Transactions on Software Engineering, Vol. 31, No. 10, 2005, pp. 804--818.
[12]
M. Kim, V. Sazawal, D. Notkin, and G. Murphy: An empirical study of code clone genealogies, Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, Lisbon, Portugal, September 2005, pp. 187--196.
[13]
M. iryung Kim and D. Notkin: Using a clone genealogy extractor for understanding and supporting evolution of code clones, Proceedings of the 2005 international workshop on Mining software repositories, St. Louis, Missouri, May 2005, pp. 1--5.
[14]
M. Bruntink, A. Deursen, T. Tourwe, and R. Engelen: An evaluation of clone detection techniques for crosscutting concerns, Proceedings of 20th IEEE International Conference on software maintenance, Chicago, IL, September, 2004, pp. 200--209.
[15]
D. Mahrenholz, O. Spinczyk, A. Gal, and W. Schröder-Preikschat: An aspect-oriented implementation of interrupt synchronization in the PURE operating system family, Proceedings of the 5th ECOOP Workshop on Object Orientation and Operating Systems, Malaga, Spain, June 2002.
[16]
Y. Coady, G. Kiczales, M. Feeley, and G. Smolyn, "Using aspectC to improve the modularity of path-specific customization in operating system code, Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering, Vienna, Austria, September 2001, pp. 88--98.
[17]
Y. Coady and G. Kiczales: Back to the future: a retroactive study of aspect evolution in operating system code, Proceedings of the 2nd international conference on Aspect-oriented software development, Boston, MA, March 2003, pp. 50--59.
[18]
P. Netinant, T. Elrad, and M.E. Fayad: A layered approach to building open aspect-oriented systems: a framework for the design of on-demand system demodularization, Communications of the ACM, Vol. 44, No. 10, 2001, pp. 83--85.
[19]
CCFinderX, http://www.ccfinder.net/ccfinderx.html
[20]
A. Deursen, M. Marin and L. Moonen: Aspect mining and refactoring, Proceedings of the 1st International Workshop on REFactoring, November 2003, Waterloo, Canada.
[21]
S. Breu and J. Krinke: Aspect mining using event traces, Proceedings of the 19th International Conference on Automated Software Engineering, Linz, Austria, September 2004, pp. 310--315.
[22]
S. Breu and T. Zimmermann: Mining aspects from version history, Proceedings of the 21st International Conference on Automated Software Engineering, Tokyo, Japan, September 2006, pp. 221--230.
[23]
M.P. Robillard and G.C. Murphy: Representing concerns in source code, ACM Transactions on Software Engineering and Methodology, Vol. 16, No. 1, 2007, pp. 1--38.
[24]
AspectC, http://www.cs.ubc.ca/labs/spl/projects/aspectc.html

Cited By

View all
  • (2022)Dynamic Evaluation of Microservice Granularity AdaptationACM Transactions on Autonomous and Adaptive Systems10.1145/350272416:2(1-35)Online publication date: 4-Mar-2022
  • (2019)A Survey on Clone Refactoring and TrackingJournal of Systems and Software10.1016/j.jss.2019.110429(110429)Online publication date: Sep-2019
  • (2018)Stereo: Editing Clones Refactored as Code Generators2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME.2018.00069(595-604)Online publication date: Sep-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGSOFT Software Engineering Notes
ACM SIGSOFT Software Engineering Notes  Volume 33, Issue 2
March 2008
98 pages
ISSN:0163-5948
DOI:10.1145/1350802
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 March 2008
Published in SIGSOFT Volume 33, Issue 2

Check for updates

Author Tags

  1. Linux
  2. code clone
  3. modularity
  4. operating systems
  5. refactoring

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)5
  • Downloads (Last 6 weeks)0
Reflects downloads up to 11 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2022)Dynamic Evaluation of Microservice Granularity AdaptationACM Transactions on Autonomous and Adaptive Systems10.1145/350272416:2(1-35)Online publication date: 4-Mar-2022
  • (2019)A Survey on Clone Refactoring and TrackingJournal of Systems and Software10.1016/j.jss.2019.110429(110429)Online publication date: Sep-2019
  • (2018)Stereo: Editing Clones Refactored as Code Generators2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME.2018.00069(595-604)Online publication date: Sep-2018
  • (2014)Aspectualization of code clones--an algorithmic approachInformation Systems Frontiers10.1007/s10796-013-9428-716:5(835-851)Online publication date: 1-Nov-2014
  • (2012)XIAOProceedings of the 28th Annual Computer Security Applications Conference10.1145/2420950.2421004(369-378)Online publication date: 3-Dec-2012
  • (2012)Understanding the Effects of Code Clones on Modularity in Software SystemsProceedings of the 2012 19th Asia-Pacific Software Engineering Conference - Volume 0210.1109/APSEC.2012.49(105-111)Online publication date: 4-Dec-2012

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media