Evolving legacy software with a generic program transformation framework using meta-programming and domain-specific languages

Loading...
Thumbnail Image
Date
2015
Journal Title
Journal ISSN
Volume Title
Publisher
University of Alabama Libraries
Abstract

Advances in the software industry over the past half-century have resulted in a large amount of legacy code implemented across hundreds of different programming languages and paradigms running throughout various application areas. Legacy software requires continuous and rigorous adaptation or modernization in order to avoid progressive decay in quality over time. Modern approaches addressing the needs of modularity and reusability in software engineering have been investigated as effective techniques to assist in software development and maintenance by automating the process of code evolution. The research in this dissertation is focused on applying techniques in software engineering and programming language design to address challenges in software maintenance and evolution. A specific focus area of application is software in the area of High Performance Computing (HPC) with Fortran and C. The research makes a contribution by bringing the power of meta-programming, through Meta-Object Protocols (MOPs), to languages that are widely utilized for solving various problems in HPC. With MOP facilities provided by OpenFortran and OpenC (the two MOPs we built for Fortran and C), developers can build tools to perform arbitrary source-to-source program transformations for legacy software. To simplify the use of MOPs and to reduce the accidental complexities typically associated with the intensive meta-programming paradigm, a textual Domain-Specific Language (DSL) is introduced in our approach, which provides a higher-level abstraction for specifying program transformations, and thus enables direct expression of manipulating program entities. There is a general lack of infrastructure support for language extension in terms of building a MOP for an arbitrary language. In order for our approach to accommodate additional programming languages, an extensible framework has been developed in this dissertation work. The framework is composed of a language-independent MOP prototype, called OpenFoo, and a generic front-end DSL (i.e., SPOT). With the assistance of a set of models that describe the aspects and concerns associated with MOP implementation and code modification, the MOP prototype can be extended to create a MOP instance for a specific general-purpose programming language (GPL); and, similarly, the DSL can be extended to accommodate a newly created backend MOP.

Description
Electronic Thesis or Dissertation
Keywords
Computer science
Citation