ABSTRACT
Not since the advent of the integrated development environment has a development tool had the impact on programmer productivity that refactoring tools have had for object-oriented developers. However, at the present time, such tools do not exist for high-performance languages such as C and Fortran; moreover, refactorings specific to high-performance and parallel computing have not yet been adequately examined. We observe that many common refactorings for object-oriented systems have clear analogs in procedural Fortran. The Fortran language itself and the introduction of object orientation in Fortran 2003 give rise to several additional refactorings. Moreover, we conjecture that many hand optimizations common in supercomputer programming can be automated by a refactoring engine but deferred until build time in order to preserve the maintainability of the original code base. Finally, we introduce Photran, an integrated development environment that will be used to implement these transformations, and discuss the impact of such a tool on legacy code reengineering.This work is being funded by IBM under the PERCS project.
- Boehm, B., and Horowitz E. (editors) The High Cost of Software: Practical Strategies for Developing Large Software Systems. Addison-Wesley, 1975.Google Scholar
- Brooks, F. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley, 1995. Google ScholarDigital Library
- C Development Tool http://www.eclipse.org/cdt/Google Scholar
- De, V. A Foundation for Refactoring Fortran 90 in Eclipse. M. S. Thesis, University of Illinois at Urbana-Champaign, 2004.Google Scholar
- Foote, B., Yoder J. Big Ball of Mud. Fourth Conference on Patterns Languages of Programs (PLoP'97/EuroPLoP'97). Monticello, Illinois, September 1997.Google Scholar
- Fowler, M. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. Google ScholarDigital Library
- Garrido, A., and Johnson, R. "Challenges of Refactoring C Programs." Proceedings of IWPSE 2002: International Workshop on Principles of Software Evolution. Orlando, Florida. May 19--20, 2002. Google ScholarDigital Library
- Garrido, A., and Johnson, R. "Refactoring C with Conditional Compilation." Proceedings of the 18th IEEE International Conference on Automated Software Engineering (ASE 2003). Montreal, Canada, October 6--10, 2003. 323--326.Google Scholar
- Java Developement Tools for Eclipse http://www.eclipse.org/jdt/Google Scholar
- Opdyke, W. Refactoring Object-Oriented Frameworks. Ph.D. Thesis, University of Illinois at Urbana-Champaign, 1992. Google ScholarDigital Library
- Photran, an Eclipse plugin for Fortran Developement http://www.photran.org/Google Scholar
- Roberts, D., Brant, J., and Johnson, R. "A Refactoring Tool for Smalltalk." Theory and Practice of Object Systems 3(4), 1997. Google ScholarDigital Library
- Demeyer S., Ducasse S. and Nierstrasz O. Object-Oriented Reengineering Patterns. Morgan Kaufmann, 2003. Google ScholarDigital Library
- Feathers M. Working Effectively with Legacy Code. Prentice Hall, 2004. Google ScholarDigital Library
Index Terms
- Refactorings for Fortran and high-performance computing
Recommendations
Coroutines in FORTRAN
A method is described for using coroutines within the strict confines of ANSI FORTRAN. A FORTRAN preprocessor that has been implemented to transform FORTRAN programs, written as if coroutines were allowed, to standard ANSI FORTRAN programs is also ...
Deriving refactorings for aspectJ
OOPSLA '04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applicationsIn this paper we present aspect-oriented programming laws that are useful for deriving refactorings for AspectJ. The laws help developers to verify if the transformations they define preserve behavior. We illustrate that by deriving several AspectJ ...
Static composition of refactorings
Special issue on program transformationThe number of possible refactorings is unlimited, so no tool vendor will ever be able to provide custom refactorings for all specific user needs. Therefore, we propose a new kind of refactoring tools, which allow users to create, edit and compose ...
Comments