Components for Scientific Computing: An Introduction to the Common Component Architecture

By: David E. Bernholdt, Computer Science and Mathematics Division, Oak Ridge National Laboratory

Abstract: Component-based software engineering (CBSE) is an emerging approach to help manage the complexity of large-scale software systems and increase the productivity of software developers and users. The Common Component Architecture (CCA, http://www.cca-forum.org) is an effort to bring the benefits of component-based software engineering to high-performance scientific computing. It is specifically designed to provide a multi-language environment which preserves performance, supports both tightly-coupled parallel and distributed computing, and minimizes the barrier to incorporating existing code into the CCA environment. The CCA began as a grass-roots efforts to increase the interoperability of scientific software and libraries, and more recently is the subject of one of the DOE Scientific Discovery through Advanced Computing (SciDAC) program's Integrated Software Infrastructure Centers (ISICs). Early users include members of the combustion, global climate modeling, and computational chemistry communities, and the user base is growing in both depth and breadth. In this talk I will introduce the basic concepts behind CBSE and the CCA in particular and discuss the advantages of components for scientific computing. I will discuss some of the applications already being developed using the CCA environment, and look forward to what we can expect in the future from both the CCA itself and from CCA-based applications.