Automated support for program refactoring using invariants

作者: Y. Kataoka , M.D. Ernst , W.G. Griswold , D. Notkin

DOI: 10.1109/ICSM.2001.972794

关键词: Code refactoringStructure (mathematical logic)Computer scienceAbstraction (linguistics)MaintainabilitySoftware maintenanceStatic analysisProgramming languageInvariant (mathematics)Code (cryptography)

摘要: Program refactoring-transforming a program to improve readability, structure, performance, abstraction, maintainability, or other features-is not applied in practice as much might be desired. One deterrent is the cost of detecting candidates for refactoring and choosing appropriate transformation. This paper demonstrates feasibility automatically finding places that are specific refactorings. The approach uses invariants: when particular pattern invariant relationships appears at point, applicable. Since most programs lack explicit invariants, an detection tool called Daikon used infer required invariants. We developed matcher several common refactorings it existing Java code base. Numerous were detected, one developers base assessed their efficacy.

参考文章(18)
William F. Opdyke, Refactoring object-oriented frameworks PhD thesis, University of Illinois at Urbana-Champaign. ,(1992)
Ralph Johnson, Donald Bradley Roberts, Practical analysis for refactoring University of Illinois at Urbana-Champaign. ,(1999)
William G. Griswold, Program restructuring as an aid to software maintenance University of Washington. ,(1992)
David Notkin, Michael Dean Ernst, Dynamically discovering likely program invariants University of Washington. ,(2000)
K. A. Kontogiannis, R. Demori, E. Merlo, M. Galler, M. Bernstein, Pattern matching for clone and concept detection automated software engineering. ,vol. 3, pp. 77- 108 ,(1996) , 10.1007/BF00126960
William G. Griswold, David Notkin, Automated assistance for program restructuring ACM Transactions on Software Engineering and Methodology. ,vol. 2, pp. 228- 269 ,(1993) , 10.1145/152388.152389
Michael D. Enst, Adam Czeisler, William G. Griswold, David Notkin, Quickly detecting relevant program invariants Proceedings of the 22nd international conference on Software engineering - ICSE '00. pp. 449- 458 ,(2000) , 10.1145/337180.337240
Ivan Moore, Automatic inheritance hierarchy restructuring and method refactoring Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications - OOPSLA '96. ,vol. 31, pp. 235- 250 ,(1996) , 10.1145/236337.236361
David Ungar, Randall B. Smith, Self: The power of simplicity Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '87. ,vol. 22, pp. 227- 242 ,(1987) , 10.1145/38765.38828