Automação de Refatorações para Programas Fortran de Alto Desempenho

  • Bruno Batista Boniati UFSM
  • Andrea Schwertner Charão UFSM
  • Benhur de Oliveira Stein UFSM

Resumo


Refatoração é uma técnica de engenharia de software que objetiva aplicar melhorias internas no código-fonte de aplicações, sem que isso influencie no seu comportamento. É uma técnica amplamente empregada em código orientado a objetos e utilizada por algumas metodologias de desenvolvimento. Na computação de alto desempenho, a refatoração é uma técnica pouco explorada, sendo que grande parte código legado de programas de alto desempenho está escrita em linguagens não orientadas a objetos. Neste trabalho, explora-se a automatização de técnicas de refatoração e sua aplicação em códigos de alto desempenho escritos em linguagem imperativa Fortran. São identificadas oportunidades de melhorar a legibilidade e o design do código sem afetar o desempenho, além de reestruturações de código quem podem representar ganho de desempenho. As técnicas estudadas e automatizadas são utilizadas em aplicações reais, como meio de validar a abordagem. A automatização das técnicas é feita estendendo as funcionalidades do IDE Photran, um plugin para Eclipse, cujo funcionamento também será abortado neste texto.

Referências

Refactoring Home Page, 2008. http://www.refactoring.com.

Brazilian Regional Atmospheric Modeling System Home Page, 2009. http://brams.cptec.inpe.br.

J. C. Adams, W. S. Brainerd, R. A. Hendrickson, R. E. Maine, J. T. Martin, and B. T. Smith. The Fortran 2003 Handbook: The Complete Syntax, Features and Procedures. Springer Publishing Company, Incorporated, 2008.

A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison Wesley, 2 edition, 2006.

A. M. Boehm, D. Seipel, A. Sickmann, and M. Wetzka. Squash: A Tool for Analyzing, Tuning and Refactoring Relational Database Applications. In 17th International Conference on Applications of Declarative Programming and Knowledge Management, pages 82–98, Berlin, Alemanha, 2007. Springer-Verlag.

N. Chen and J. Overbey. Photran 4.0 Developer’s Guide, 2008.

M. L. Cornelio. Refactorings as Formal Refinements. Tese de doutorado, Universidade Federal de Pernambuco, Recife, Brasil, 2004.

V. De. A Foundation for Refactorin Fortran 90 in Eclipse. Dissertação de mestrado, University of Illinois, Urbana-Champaign, EUA, 2004.

L. Dobrzánski and L. Kúzniarz. An Approach to Refactoring of Executable UML Models. In ACM Symposium on Applied Computing, pages 1273–1279, Dijon, Franca, 2006. ACM.

A. L. Fazenda, E. H. Enari, L. F. Rodrigues, and J. Panetta. Towards Production Code Effective Portability among Vector Machines and Microprocessor-Based Architectures. In 18th International Symposium on Computer Architecture and High Performance Computing, pages 11–20, Ouro Preto, Brasil, 2006. IEEE Computer Society.

M. Fowler. Refactoring: Improving the Design of Existing Code. Addison Wesley, 1999.

E. Graf, G. Zgraggen, and P. Sommerlad. Refactoring Support for the C++ Development Tooling. In 22nd ACM SIGPLAN Conference on Object-Oriented Programming Systems and Applications Companion, pages 781–782, Montreal, Canada, 2007. ACM.

S. Hosseini and M. A. Azgomi. UML Model Refactoring with Emphasis on Behavior Preservation. In 2nd International Symposium on Theoretical Aspects of Software Engineering, pages 125–128, Nanjing, China, 2008. IEEE Computer Society.

S. McConnell. Code Complete: a Practical Handbook of Software Construction. Microsoft Press, 1993.

T. Mens, S. Demeyer, B. D. Bois, H. Stenten, and P. V. Gorp. Refactoring: Current Research and Future Trends. Language descriptions, Tools and Applications, 82(3):483-499, 2003.

W. Opdyke. Refactoring Object-Oriented Frameworks. Tese de doutorado, University of Illinois, Urbana-Champaign, EUA, 1992.

J. Overbey and R. Johnson. Generating Rewritable Abstract Syntax Trees. In First International Conference on Software Language Engineering, pages 114–133, Toulouse, Franca, 2009. Springer-Verlag.

J. Overbey, S. Negara, and R. Johnson. Refactoring and the Evolution of Fortran. In Second International Workshop on Software Engineering for Computational Science and Engineering, pages 28–34, Vancouver, Canada, 2009. IEEE Computer Society.

J. Overbey, S. Xanthos, R. Johnson, and B. Foote. Refactorings for Fortran and High-Performance Computing. In Second International Workshop on Software Engineering for High Performance Computing System Applications, pages 37–39, St. Louis, EUA, 2005. ACM.

M. Rieger, B. V. Rompaey, B. D. Bois, K. Meijfroidt, and P. Olievier. Refactoring for Performance: An Experience Report. In Third International ERCIM Symposium on Software Evolution, pages 206–214, Paris, Franca, 2007.
Publicado
28/10/2009
BONIATI, Bruno Batista; CHARÃO, Andrea Schwertner; STEIN, Benhur de Oliveira. Automação de Refatorações para Programas Fortran de Alto Desempenho. In: SIMPÓSIO EM SISTEMAS COMPUTACIONAIS DE ALTO DESEMPENHO (SSCAD), 10. , 2009, São Paulo. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2009 . p. 71-78. DOI: https://doi.org/10.5753/wscad.2009.17394.