The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.04 - July/August (2010 vol.27)
pp: 52-57
Gustavo Soares , Federal University of Campina Grande, Campina Grande
Rohit Gheyi , Federal University of Campina Grande, Brazil
Dalton Serey , Federal University of Campina Grande, Campina Grande
Tiago Massoni , Federal University of Campina Grande, Campina Grande
ABSTRACT
Developers rely on compilation, test suites, and tools to preserve observable behavior during refactoring. However, most refactoring tools don't implement all the preconditions that guarantee refactoring correctness because formally identifying them is cost-prohibitive. Therefore, these tools could perform nonbehavior-preserving transformations. The authors present a tool for improving safety during refactoring that automatically generates a test suite suited for detecting behavioral changes. They used this tool to evaluate seven real case study refactorings (from 3 to 100 KLOC).
INDEX TERMS
refactoring, behavior preservation, unit testing, software engineering
CITATION
Gustavo Soares, Rohit Gheyi, Dalton Serey, Tiago Massoni, "Making Program Refactoring Safer", IEEE Software, vol.27, no. 4, pp. 52-57, July/August 2010, doi:10.1109/MS.2010.63
REFERENCES
1. M. Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999.
2. T. Mens and T. Tourwé, "A Survey of Software Refactoring," IEEE Trans. Software Eng., vol. 30, no. 2, 2004, pp. 126–139.
3. F. Steimann and A. Thies, "From Public to Private to Absent: Refactoring Java Programs under Constrained Accessibility," Proc. 23rd European Conf. Object-Oriented Programming (ECOOP 09), LNCS 5653, Springer, 2009, pp. 419–443.
4. T. Ekman et al., "Refactoring Bugs in Eclipse, Idea and Visual Studio," Programming Tools Group, 2008; http://progtools.comlab.ox.ac.uk/projects/ refactoringbugreports.
5. C. Pacheco et al., "Feedback-Directed Random Test Generation," Proc. 29th Int'l Conf. Software Eng. (ICSE 07), IEEE CS Press, 2007, pp. 75–84.
6. W.F. Opdyke, Refactoring Object-Oriented Frameworks, tech. report UIUCDCS-R-92-1759, Univ. of Illinois at Urbana-Champaign, 1992.
7. J. Taveira et al., "Assessing Intra-Application Exception Handling Reuse with Aspects," Proc. 23rd Brazilian Symp. Software Eng. (SBES 09), IEEE CS Press, 2009, pp. 22–31.
8. R. Fuhrer et al., "Efficiently Refactoring Java Applications to Use Generic Libraries," Proc. 19th European Conf. Object-Oriented Programming (ECOOP 05), LNCS 3586, Springer, 2005, pp. 71–96.
9. E. Murphy-Hill, C. Parnin, and A. Black, "How We Refactor, and How We Know It," Proc. 31st Int'l Conf. Software Eng. (ICSE 09), IEEE CS Press, 2009, pp. 287–296.
10. M. Schäfer, T. Ekman, and O. Moor, "Sound and Extensible Renaming for Java," Proc. 23rd Conf. Object-Oriented Programming Systems Languages and Applications (OOPSLA 08), ACM Press, 2008, pp. 277–294.
11. B. Cabral and P. Marques, "Exception Handling: A Field Study in Java and .Net," Proc. 21st European Conf. Object-Oriented Programming (ECOOP 07), LNCS 4609, Springer, 2007, pp. 151–175.
12. G. Soares et al, "Generating Unit Tests for Checking Refactoring Safety," Proc. Brazilian Symp. Programming Languages (SBPL 09), Brazilian Computer Society, 2009, pp. 159–172.
13. G. Soares et al., "SafeRefactor—Tool for Checking Refactoring Safety," Proc. Brazilian Symp. Software Engineering (SBES 09), Brazilian Computer Society, 2009, pp. 49–54.
14. B. Daniel et al., "Automated Testing of Refactoring Engines," Proc. ACM SIGSOFT Symp. Foundations of Software Engineering (FSE 07), ACM Press, 2007, pp. 185–194.
41 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool