IJIEEB Vol. 7, No. 1, 8 Jan. 2015
Cover page and Table of Contents: PDF (size: 661KB)
Full Text (PDF, 661KB), PP.49-58
Views: 0 Downloads: 0
Software engineering, Mining software repositories, experimental software engineering
Software engineering requires modification of code during development and maintenance phase. During modification, a difficult task is to understand rationale of changed code. Present Integrated Development Environments (IDEs) attempt to help this by providing features integrated with different types of repositories. However, these features still consume developer’s time as he has to switch from editor to another window for this purpose. Moreover, these features focus on elements available in present version of code, thus increasing the difficulty of finding rationale of an element removed or modified earlier. Leveraging different sources for providing information through code completion menus has been shown to be valuable, even when compared to standalone counterparts offering similar functionalities in literature. Literature also shows that it is one of the most used features for consuming information within IDE. Based on that, we prepare an Eclipse plug-in and a framework that allows providing reason of code change, at method granularity, across versions through a new code completion menu in IDE. These allow a software engineer to gain insight about rationale of removed or modified methods which are otherwise not available in present version of code. Professional software engineers participated in our empirical evaluation process and we observed that more than 80% participants considered this to be a useful approach for saving time and effort to understand rationale of method change. Later, based on their feedback, the plug-in and framework is modified to incorporate chronological factors. We perform quasi experimental evaluation with professional software engineers. It is found that time required to find rationale of method change is reduced to at least half compared to usual amount of time required for all the software engineers who participated in the quantitative evaluation.
Amit S. Ami, Shariful Islam, "A Content Assist based Approach for Providing Rationale of Method Change for Object Oriented Programming", International Journal of Information Engineering and Electronic Business(IJIEEB), vol.7, no.1, pp.49-58, 2015. DOI:10.5815/ijieeb.2015.01.07
[1]Steve Counsell, Youssef Hassoun, Roger Johnson, Keith Mannock, and Emilia Mendes, "Trends in Java Code Changes: The Key to Identification of Refactorings?," in Proceedings of the 2Nd International Conference on Principles and Practice of Programming in Java, New York, NY, USA, 2003, pp. 45-48. http://dl.acm.org/citation.cfm?id=957289.957305.
[2]Sunghun Kim, E. James Whitehead, and Jennifer Bevan, "Analysis of Signature Change Patterns," SIGSOFT Softw. Eng. Notes, vol. 30, no. 4, pp. 1-5, may 2005. http://doi.acm.org/10.1145/1082983.1083154.
[3]Andrew Begel, Yit Phang Khoo, and Thomas Zimmermann, "Codebook: discovering and exploiting relationships in software repositories," in Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, 2010, pp. 125-134. http://doi.acm.org/10.1145/1806799.1806821.
[4]Thomas D. LaToza, Gina Venolia, and Robert DeLine, "Maintaining mental models: a study of developer work habits," in Proceedings of the 28th international conference on Software engineering, 2006, pp. 492-501. http://doi.acm.org/10.1145/1134285.1134355.
[5]Reid Holmes Olga Baysal and Michael W. Godfrey, "Situational Awareness: Personalizing Issue Tracking Systems," in Proceedings of the 2013 International Conference on Software Engineering, 2013.
[6]Reid Holmes and Andrew Begel, "Deep intellisense: a tool for rehydrating evaporated information," in Proceedings of the 2008 international working conference on Mining software repositories, New York, NY, USA, 2008, pp. 23-26. http://doi.acm.org/10.1145/1370750.1370755.
[7]Miryung Kim and David Notkin, "Discovering and representing systematic code changes," in Proceedings of the 31st International Conference on Software Engineering, Washington, DC, USA, 2009, pp. 309-319. http://dx.doi.org/10.1109/ICSE.2009.5070531.
[8]Gina Venolia, "Textual Allusions to Artifacts in Software-Related Repositories," in Proceedings of the 2006 international workshop on Mining software repositories, 2006, pp. 151-154.. http://doi.acm.org/10.1145/1137983.1138018.
[9]Yun Young Lee, Sam Harwell, Sarfraz Khurshid, and Darko Marinov, "Temporal code completion and navigation," in Proceedings of the 2013 International Conference on Software Engineering, 2013, pp. 1181-1184. http://dl.acm.org/citation.cfm?id=2486788.2486956.
[10]Survey on IDE (Responses), http://goo.gl/78Ye5G.
[11]Sarah Rastkar and Gail C. Murphy, "Why did this code change?," in Proceedings of the 2013 International Conference on Software Engineering, 2013, pp. 1193-1196. http://dl.acm.org/citation.cfm?id=2486788.2486959.
[12]Gail C. Murphy, Mik Kersten, and Leah Findlater, "How Are Java Software Developers Using the Eclipse IDE?," IEEE Softw., vol. 23, no. 4, pp. 76-83, #jul# 2006. http://dx.doi.org/10.1109/MS.2006.105.
[13]Eclipse IDE for Java Developers, http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/keplerr.
[14]Survey on Eclipse Plugin of Issue based Reason of Code Change (Responses), http://goo.gl/9Dq8yr.
[15]Amit Seal Ami and Md. Shafirul Islam, "An Efficient Approach for Providing Rationale of Method Change for Object Oriented Programming," in International Conference on Informatics, Electronics Vision (ICIEV), Dhaka, 2014, pp. 1-6.
[16]Max Goldman and Robert C. Miller, "Codetrail: Connecting source code and web resources," J. Vis. Lang. Comput., vol. 20, no. 4, pp. 223-235, #aug# 2009. http://dx.doi.org/10.1016/j.jvlc.2009.04.003.
[17]Davor ?ubrani? and Gail C. Murphy, "Hipikat: recommending pertinent software development artifacts," in Proceedings of the 25th International Conference on Software Engineering, Washington, DC, USA, 2003, pp. 408-418. http://dl.acm.org/citation.cfm?id=776816. 776866.
[18]Davor Cubranic, Gail C. Murphy, Janice Singer, and Kellogg S. Booth, "Hipikat: A Project Memory for Software Development," IEEE Trans. Softw. Eng., vol. 31, no. 6, pp. 446-465, 2005. http://dx.doi.org/10.1109/TSE.2005.71.
[19]Lucian Voinea, Alex Telea, and Jarke J. van Wijk, "CVSscan: visualization of code evolution," in Proceedings of the 2005 ACM symposium on Software visualization, 2005, pp. 47-56. http://doi.acm.org/10.1145/1056018.1056025.
[20]IntelliJ IDEA : Local History - protect your code from any accidental losses or modifications, even if made by other outside applications.
[21]Andrew Y. Yao, "CVSSearch: Searching through Source Code using CVS Comments," in Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01), Washington, DC, USA, 2001, pp. 364--. http://dx.doi.org/10.1109/ICSM.2001.972749.
[22]David L. Atkins, "Version sensitive editing: Change history as a programming tool," in ECOOP 98, SCM-8, LNCS 1439, 1998, pp. 146-157.
[23]SQLite Home Page, http://www.sqlite.org/.
[24]Miryung Kim and David Notkin, "Program element matching for multi-version program analyses," in Proceedings of the 2006 international workshop on Mining software repositories, New York, NY, USA, 2006, pp. 58-64. http://doi.acm.org/10.1145/1137983.1137999.
[25]PyGitHub 1.18.0: Python Package Index, https://pypi.python.org/pypi/PyGithub/1.18.0.
[26]GitHub, https://github.com/.
[27]antlr/antlr4, http://github.com/antlr/antlr4.
[28]nathanmarz/storm, http://github.com/nathanmarz/storm.
[29]k9mail/k-9, http://github.com/k9mail/k-9.
[30]Kim Herzig and Andreas Zeller, "The Impact of Tangled Code Changes," in Proceedings of the 10th Working Conference on Mining Software Repositories, Piscataway, NJ, USA, 2013, pp. 121-130. http://dl.acm.org/citation.cfm?id=2487085.2487113.