Toward the Automated Generation of Components from Existing Source Code

A major challenge to achieving widespread use of software component technology in scientific computing is an effective migration strategy for existing, or legacy, source code. This paper describes initial work and challenges in automating the identification and generation of components using the ROSE compiler infrastructure and the Babel language interoperability tool. Babel enables calling interfaces expressed in the Scientific Interface Definition Language (SIDL) to be implemented in, and called from, an arbitrary combination of supported languages. ROSE is used to build specialized source-to-source translators that (1) extract a SIDL interface specification from information implicit in existing C++ source code and (2) transform Babel's output to include dispatches to the legacy code.

[1]  James Arthur Kohl,et al.  A Component Architecture for High-Performance Computing , 2003 .

[2]  Scott R. Kohn,et al.  Divorcing Language Dependencies from a Scientific Software Library , 2001, PPSC.

[3]  Scott R. Kohn,et al.  Toward a Common Component Architecture for High-Performance Scientific Computing , 1999, HPDC.

[4]  Rainer Koschke,et al.  A framework for experimental evaluation of clustering techniques , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[5]  Allen D. Malony,et al.  Bridging the language gap in scientific computing: the Chasm approach , 2006, Concurr. Comput. Pract. Exp..

[6]  Markus Schordan,et al.  A Source-to-Source Architecture for User-Defined Optimizations , 2003, JMLC.

[7]  P. Smith Santa Fe, New Mexico , 1969 .

[8]  Bernd Mohr,et al.  CHASM : Static Analysis and Automatic Code Generation for Improved Fortran 90 and C++ Interoperability / , 2001 .

[9]  Dennis Gannon,et al.  Sage++: An Object-Oriented Toolkit and Class Library for Building Fortran and C++ Restructuring Tool , 1994 .

[10]  Spiros Mancoridis,et al.  Modeling the Search Landscape of Metaheuristic Software Clustering Algorithms , 2003, GECCO.

[11]  David Eichmann,et al.  Program and interface slicing for reverse engineering , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[12]  David M. Beazley,et al.  SWIG: An Easy to Use Tool for Integrating Scripting Languages with C and C++ , 1996, Tcl/Tk Workshop.

[13]  Guy Melançon,et al.  Software components capture using graph clustering , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[14]  Markus Schordan,et al.  Parallel object‐oriented framework optimization , 2004, Concurr. Comput. Pract. Exp..

[15]  Grady Booch,et al.  Essential COM , 1998 .