Abstract
Refactoring, which is an efficient method to improve the quality of the existing code, has been widely used in practical software development and maintenance activities. The current refactoring researches are more focus on the technical aspect of refactoring but pay little attention to its use in real software development environment. However, software development and maintenance, in their nature, are human-centric activities. The lack of systematic empirical studies has resulted in the gap between current refactoring researches and industrial practices. To bridge this research gap, we conduct this exploratory study to learn more about the actual use of refactoring in the industrial context. Using a series of semi-controlled interviews as our major research method, we gathered first-hand information on how the refactoring is used by practitioners. We built a three-stage framework to describe the overall refactoring process. 19 basic factors are identified and categorized. We also identify the most important ones and the factors that may trigger potential conflicts between developers and the managers. Some related issues such as this study’s implications are also discussed.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Opdyke, W.F.: Refactoring: A Program Restructuring Aid in Designing Object-Oriented Application Frameworks. Ph.D. thesis, University of Illinois at Urbana-Champaign (1992)
Xing, Z., Stroulia, E.: Refactoring Practice: How it is and how it should be supported - An Eclipse Case Study. In: Proceedings of International Conference on Software Maintenance (ICSM 2006), pp. 458–468 (2006)
Fowler, M.: Refactoring: Improving the Design of Existing Programs. Addison-Wesley, Reading (1999)
Beck, K.: Extreme Programming Explained: Embrace Change. Addison Wesley, Reading (2000)
Constantine, L.: Peopleware Papers: The notes on the human side of software. Prentice Hall, Englewood Cliffs (2001)
Counsell, S., Swift, S.: Refactoring Steps, Java Refactorings and Empirical Evidence. In: Proceedings of 32nd Annual IEEE International Computer Software and Applications Conference (COMPSAC 2008), pp. 176–179. IEEE Computer Society, Los Alamitos (2008)
Murphy-Hill, E., Black, A.P.: Refactoring Tools: Fitness for Purpose. IEEE Software 25(5), 38–44 (2008)
Murphy-Hill, E., Black, A.P.: Breaking the Barriers to Successful Refactoring: Observations and Tools for Extract method. In: Proceedings of 30th International Conference on Software Engineering, Leipzig, Germany, May 2008. IEEE Computer Society, Los Alamitos (2008)
Murphy, G.C., Kersten, M., Findlater, L.: How Are Java Software Developers Using the Eclipse IDE? IEEE Software 23(4), 76–83 (2006)
Acuña, S.T., Juristo, N., Moreno, A.M.: Emphasizing Human Capabilities in software development. IEEE Software (9), 94–101 (2006)
Wake, W.C.: Refactoring Workbook. Addison-Wesley, Reading (2003)
Gill, T.: Visual Basic 6: Error Coding and Layering. Prentice-Hall, Englewood Cliffs (2000)
Gill, T.: Creating Blueprint-Quality Software Specifications. Prentice Hall, Englewood Cliffs (2001)
Roberts, D.: Practical Analysis for Refactoring. Ph.D. thesis, University of Illinois at Urbana-Champaign (1999)
Dudziak, T., Wloka, J.: Tool-supported Discovery and Refactoring of Structural Weaknesses in Code. M.S. thesis, Faculty of Computer Science, Technical University of Berlin (2002)
Mens, T., Tourwé, T.: A Survey of Software Refactoring. IEEE Transaction on Software Engineering 30(2), 126–139 (2004)
Demeyer, S., Ducasse, S., Nierstrasz, O.: Finding Refactorings via Change Metrics. In: Proceedings of International Conference on Object Oriented Programming, System, Language & Application (OOPSLA 2000). ACM SIGPLAN Notices, vol. 35(10), pp. 166–177 (2000)
Philipps, J., Rumpe, B.: Root of Refactoring. In: 10th OOPSLA Workshop on Behavioral Semantics (2001)
Cai, Y., Sullivan, K.J.: A Value-oriented Theory of Modularity in Design. In: Proceedings of the Seventh International Workshop on Economics-driven Software Engineering Research (EDSER 2005), pp. 1–4. ACM, New York (2005)
Favaro, J., Favaro, K., Favaro, P.: Value Based Software Reuse Investment. Annals of Software Engineering 5, 5–52 (1998)
Poulin, J.S., Caruso, J.M., Hancock, D.R.: The Business Case for Software Reuse. IBM System Journal 32(4), 567–586 (1993)
Dinh-Trong, T., Geppert, B., Li, J.J., Roessler, F.: Looking for More Confidence in Refactoring? How to Assess Adequacy of Your Refactoring Tests. In: Proceedings of the 8th International Conference on Quality Software. IEEE Computer Society, Los Alamitos (2008)
Meszaros, G.: xUnit Test Patterns: Refactoring Test Code. Addison-Wesley, Reading (2007)
Ducasse, S., Rieger, M., Demeyer, S.: A Language Independent Approach for Detecting Duplicated Code. In: Proceedings of 11th International Conference on Software Maintenance (ICSM 1999), pp. 109–118. IEEE Computer Society, Los Alamitos (1999)
Mens, T., Demeyer, S., Janssens, D.: Formalising behaviour preserving program transformations. In: Corradini, A., Ehrig, H., Kreowski, H.-J., Rozenberg, G. (eds.) ICGT 2002. LNCS, vol. 2505, pp. 286–301. Springer, Heidelberg (2002)
Mens, T.: A Formal Foundation for Object-Oriented Software Evolution. Ph.D. thesis, Department of Computer Science, Vrije Universiteit Brussel, Belgium (September 1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Wang, Y. (2009). An Exploratory Investigation on Refactoring in Industrial Context. In: Bomarius, F., Oivo, M., Jaring, P., Abrahamsson, P. (eds) Product-Focused Software Process Improvement. PROFES 2009. Lecture Notes in Business Information Processing, vol 32. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02152-7_15
Download citation
DOI: https://doi.org/10.1007/978-3-642-02152-7_15
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-02151-0
Online ISBN: 978-3-642-02152-7
eBook Packages: Computer ScienceComputer Science (R0)