Investigating Developers Prevalent Copy and Paste Activities and validating associated Cloning Patterns

##plugins.themes.academic_pro.article.main##

Sarveshwar Bharti
Hardeep Singh

Abstract

To reuse available functionality, software developers usually accomplish copy and pasting of the source code. Empirical evaluations have established this activity as a prevalent cloning activity that acts as the main cause of the presence of clones into the software system. Analysis of these software systems has revealed various frequent cloning patterns, mainly classified into four categories viz. templating, forking, customization, and exact match. There are various tools that deal with clones proactively within the Integrated Development Environments. For a tool to be effective, requires the capturing of developers intentions. In this paper, we attempt to identify the hidden intentions of the software developers behind cloning practices via an online industrial survey involving professional software developers. This work will shed a light on what computer programmers are doing while reusing code and why. This study uncovers various intentions, extent, source etc. of the copy and paste activity done by the software developer. The observational determinations from this survey were then employed to validate different cloning patterns based on the developers perspective. Finally, based on the survey results, the solution to these cloning practices is discussed. Results depicted in this paper suggest an incorporation of these developers behavioural inference into the existing IDE based clone management systems.

##plugins.themes.academic_pro.article.details##

How to Cite
Sarveshwar Bharti, & Hardeep Singh. (2019). Investigating Developers Prevalent Copy and Paste Activities and validating associated Cloning Patterns. International Journal of Next-Generation Computing, 10(2), 103–121. https://doi.org/10.47164/ijngc.v10i2.159

References

  1. Baker, B. S. 1995. On finding duplication and near-duplication in large software systems. In
  2. Proceedings of 2nd Working Conference on Reverse Engineering. IEEE, 86-95.
  3. Baxter, I. D., Yahin, A., Moura, L., Sant'Anna, M., and Bier, L. 1998. Clone de- tection using abstract syntax trees. In Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272). IEEE, 368-377.
  4. Bellon, S., Koschke, R., Antoniol, G., Krinke, J., and Merlo, E. 2007. Comparison and evaluation of clone detection tools. IEEE Transactions on software engineering 33, 9, 577-591.
  5. Bharti, S. and Singh, H. 2017. An industrial study on developers' prevalent copy and paste ac- tivities. In 2017 International Conference on Next Generation Computing and Information Systems (ICNGCIS). IEEE, 137-141.
  6. Bharti, S. and Singh, H. 2018. Investigating developers sentiments associated with software cloning practices. In International Conference on Advanced Informatics for Computing Research. Springer, 397-406.
  7. Chatterji, D., Carver, J. C., and Kraft, N. A. 2013. Cloning: The need to understand developer intent. In Proceedings of the 7th International Workshop on Software Clones. IEEE Press, 14-15.
  8. Cory, K. 2006. †cloning considered harmful†considered harmful. In Proc. 13th Working Conference on Reverse Engineering, 2006. IEEE Computer Society.
  9. Duala-Ekoko, E. and Robillard, M. P. 2008. Clonetracker: tool support for code clone management. In Proceedings of the 30th international conference on Software engineering. ACM, 843-846.
  10. Geiger, R., Fluri, B., Gall, H. C., and Pinzger, M. 2006. Relation of code clones and change couplings. In International Conference on Fundamental Approaches to Software Engineering. Springer, 411-425.
  11. Johnson, J. H. 1994. Substring matching for clone detection and change tracking. In ICSM. Vol. 94. 120-126.
  12. Juergens, E., Deissenboeck, F., Hummel, B., and Wagner, S. 2009. Do code clones matter? In 2009 IEEE 31st International Conference on Software Engineering. IEEE, 485-495.
  13. Kamiya, T., Kusumoto, S., and Inoue, K. 2002. Ccfinder: a multilinguistic token-based code clone detection system for large scale source code. IEEE Transactions on Software Engineering 28, 7, 654-670.
  14. Kapser, C. J. and Godfrey, M. W. 2008. cloning considered harmful considered harmful: patterns of cloning in software. Empirical Software Engineering 13, 6, 645.
  15. Kawaguchi, S., Yamashina, T., Uwano, H., Fushida, K., Kamei, Y., Nagura, M., and Iida, H. 2009. Shinobi: A tool for automatic code clone detection in the ide. In 2009 16th Working Conference on Reverse Engineering. IEEE, 313-314.
  16. Kim, M., Bergman, L., Lau, T., and Notkin, D. 2004. An ethnographic study of copy and paste programming practices in oopl. In Proceedings. 2004 International Symposium on Empirical Software Engineering, 2004. ISESE'04. IEEE, 83-92.
  17. Rattan, D., Bhatia, R., and Singh, M. 2013. Software clone detection: A systematic review.
  18. Information and Software Technology 55, 7, 1165-1199.
  19. Roy, C. K. and Cordy, J. R. 2007. A survey on software clone detection research. Queens School of Computing TR 541, 115, 64-68.
  20. Roy, C. K., Cordy, J. R., and Koschke, R. 2009. Comparison and evaluation of code clone detection techniques and tools: A qualitative approach. Science of computer pro- gramming 74, 7, 470-495.
  21. Smith, D. D. 2012. Designing maintainable software. Springer Science & Business Media.
  22. Thummalapenta, S., Cerulo, L., Aversano, L., and Di Penta, M. 2010. An empirical study on the maintenance of source code clones. Empirical Software Engineering 15, 1, 1-34.
  23. Uddin, M. S., Roy, C. K., and Schneider, K. A. 2015. Towards convenient management of software clone codes in practice: An integrated approach. In Proceedings of the 25th Annual International Conference on Computer Science and Software Engineering. IBM Corp., 211-220.
  24. Wani, S. A. and Dang, S. 2015. Survey based analysis of effect of code clones on software quality. International Journal of Engineering Research & Technology 4, 3, 371-379