Maintainable and reusable scientific software adaptation: democratizing scientific software adaptation

  • Authors:
  • Pilsung Kang;Eli Tilevich;Srinidhi Varadarajan;Naren Ramakrishnan

  • Affiliations:
  • Samsung Electronics, Hwasung, South Korea;Virginia Tech, Blacksburg, VA, USA;Virginia Tech, Blacksburg, VA, USA;Virginia Tech, Blacksburg, VA, USA

  • Venue:
  • Proceedings of the tenth international conference on Aspect-oriented software development
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Scientific software must be adapted for different execution environments, problem sets, and available resources to ensure its efficiency and reliability. Although adaptation patterns can be found in a sizable percentage of recent scientific applications, the traditional scientific software stack lacks the adequate adaptation abstractions and tools. As a result, scientific programmers manually implement ad-hoc solutions that are hard to maintain and reuse. In this paper, we present a novel approach to adapting scientific software written in Fortran. Our approach leverages the binary object code compatibility between stack-based imperative programming languages. This compatibility makes it possible to apply a C++ Aspect-Oriented Programming (AOP) extension to Fortran programs. Our approach expresses the adaptive functionality as abstract aspects that implement known adaptation patterns and can be reused across multiple scientific applications. Application-specific code is systematically expressed through inheritance. The resulting adaptive functionality can be maintained by any programmer familiar with AOP, which has become a staple of modern software development. We validated the expressive power of our approach by refactoring the hand-coded adaptive functionality of a real-world computational fluid dynamics application suite. The refactored code expresses the adaptive functionality in 27% fewer ULOC on average by removing duplication and leveraging aspect inheritance.