Catálogo de refatorações para a evolução de programas em linguagem Fortran - Rissetti, Gustavo (2011)
Evolution is a natural characteristic in software development. During the life cycle of a system, usually there is the need of evolution, mainly to add a new requirement, to change existing functionality, or to evolve the programming language used. The Fortran (FORmula TRANslation) language, despite having more than fifty years of existence, is still widely used in scientific applications. The majority of the existent Fortran applications is composed of legacy code, using obsolete or deprecated constructions of the language and, thus, need to evolve to improve their quality attributes. However, this process is often done manually, without the existence of well-defined rules to be followed, facilitating the introduction of anomalies in these applications. Software evolution can be benefited from refactoring, which provides well-defined mechanisms to be followed, helping to maintain and to improve the quality of existent systems. Refactoring is a software engineering technique that transforms software artefacts in order to improve them, without compromising their functionality. It is a permanent task in the life cycle of an application and is directly associated with the software non-functional requirements, such as modularization, legibility, and performance. This technique is widely used in objectoriented languages, but is still largely unexplored in procedural languages such as Fortran. In this context, this work explores the need for refactorings for the Fortran language, together with the issue of evolving legacy code. This goal is achieved through the proposal of a refactoring catalog to the evolution of Fortran programs, and the automation of some of them in the Photran framework. The proposed refactorings are evaluated and validated in applications written in Fortran.