API-Evolution Support with Diff-CatchUp
|
Refactoring is an important activity in the evolutionary development of object-oriented software systems. Several IDEs today support the automated application of some refactorings; at the same time, there is substantial on-going research aimed at developing support for deciding when and how software should be refactored and for estimating the effect of the refactoring on the quality requirements of the software. On the other hand, understanding the refac-torings in the evolutionary history of a software system is essential in understanding its design rationale, which might be very helpful in assisting future maintenance and evolution tasks. The JDEvAn tool supports a comprehen-sive refactoring-analysis process, including the extraction of logical-design elements and relations from the system's code, the recovery of design-level changes from one version to the next, the identification of refactorings as compo-sitions of such changes, and the interactive visualization and analysis of the recovered changes. In this paper, we discuss JDEvAn' method and argue for its effectiveness with two case studies on realistic open-source object-oriented software, in the context of which we show how the recovered refactoring knowledge may be used to guide future development.
[1] 818 K. Chow and D. Notkin, “Semi-Automatic Update of Applications in Response to Library Changes,” Proc. 12th Int'l Conf. Software Maintenance, pp. 359-368, 1996.
[2] D. Cubranic and G.C. Murphy, “Hipikat: Recommending Pertinent Software Development Artifacts,” Proc. 25th Int'l Conf. Software Eng., pp. 408-418, May 2003.
[3] M. Fowler, Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
[4] J. Henkel and A. Diwan, “CatchUp! Capturing and Replaying Refactorings to Support API Evolution,” Proc. 27th Int'l Conf. Software Eng., pp. 274-283, May 2005.
[5] R. Holmes and G. Murphy, “Using Structural Context to Recommend Source Code Examples,” Proc. 27th Int'l Conf. Software Eng., pp. 117-125, May 2005.
[6] C. Kemper and C. Overbeck, “What's New with JBuilder,” JavaOne Conf., 2005.
[7] D.W. McDonald and M.S. Acherman, “Expertise Recommender: A Flexible Recommendation System and Architecture,” Proc. ACM Conf. Computer Supported Cooperative Work, pp. 231-240, 2000.
[8] W.F. Opdyke, “Refactoring Object-Oriented Frameworks,” PhD dissertation, Univ. of Illinois, Urbana-Champaign, 1992.
[9] E. Ostertag, J. Hendler, R. Prieto-Daz, and C. Braun, “Computing Similarity in a Reuse Library System: An AI-Based Approach,” ACM Trans. Software Eng. and Methodology, vol. 1, no. 3, pp. 205-228, 1992.
[10] J.H. Perkins, “Automatically Generating Refactorings to Support API Evolution,” ACM SIGSOFT Software Eng. Notes, vol. 31, no. 1, pp. 111-114, 2006.
[11] B.J. Rhodes and T. Starner, “Remembrance Agent,” Proc. First Int'l Conf. and Exhibition on the Practical Applications of Intelligent Agents and Multi-Agent Technology, pp. 487-495, 1996.
[12] D. Roberts, J. Brant, and R.E. Johnson, “A Refactoring Tool for Smalltalk,” Theory and Practice of Object System, vol. 3, no. 4, pp.253-263, 1997.
[13] Z. Xing and E. Stroulia, “Towards Mentoring Object-Oriented Evolutionary Development,” Proc. 21st Int'l Conf. Software Maintenance, pp. 621-624, Sept. 2005.
[14] Z. Xing and E. Stroulia, “UMLDiff: An Algorithm for Object-oriented Design Differencing,” Proc. 20th Int'l Conf. Automated Software Eng., pp. 54-65, 2005.
[15] Z. Xing and E. Stroulia, “Refactoring Practice: How It Is and How It Should Be Supported—An Eclipse Case Study,” Proc. 22nd Int'l Conf. Software Maintenance, pp. 458-468, Sept. 2006.
[16] Z. Xing and E. Stroulia, “Differencing Logical UML Models,” J.Automated Software Eng., vol. 14, no. 2, pp. 215-259, June 2007.
[17] Z. Xing and E. Stroulia, “Bottom-Up Design Evolution Concern Discovery and Analysis,” Technical Report TR07-13, Univ. of Alberta, July 2007.
[18] Y. Ye and G. Fischer, “Supporting Reuse by Delivering Task-Relevant and Personalized Information,” Proc. 24th Int'l Conf. Software Eng., pp. 513-523, 2002.
[19] A.M. Zaremski and J.M. Wing, “Signature Matching: A Key to Reuse,” Proc. First ACM SIGSOFT Symp. Foundations of Software Eng., pp. 182-190, 1993.
[20] OMG Unified Modeling Language Specification, formal/03-03-01, Version 1.5, http:/www.omg.org, 2003.
[21] CMEclipse, http://www.lucas.lth.se/cmcmeclipse.shtml , 2007.
[22] Eclipse, http:/www.eclipse.org, 2007.
[23] Help—Eclipse SDK, http:/help.eclipse.org, 2007.
[24] MSDN—Microsoft Visual C++, http://msdn2.microsoft.com/ en-us/visualc aa336429.aspx, 2007.
[25] JFreeChart, http://www.jfree.orgjfreechart/, 2007.
[26] HTMLUnit, http:/htmlunit.sourceforge.net/, 2007.
[27] JDEvAn, http://www.cs.ualberta.ca/~xingjdevan.html , 2007.
Index Terms:
D.2.2.eProgrammer workbench, D.2.3Coding Tools and Techniques, D.2.3.aObject-oriented programming, D.2.10.g Object-oriented design methods
Citation:
Zhenchang Xing, Eleni Stroulia, "API-Evolution Support with Diff-CatchUp," IEEE Transactions on Software Engineering, vol. 33, no. 12, pp. 818-836, Sept. 2007, doi:10.1109/TSE.2007.70747