Assembling simulation software along with the associated tools and utilities
is a challenging endeavor, particularly when the components are distributed
across multiple source code versioning systems. It is problematic for
researchers compiling and running the software across many different
supercomputers, as well as for novices in a field who are often presented with
a bewildering list of software to collect and install. In this paper, we
describe a language (CRL) for specifying software components with the details
needed to obtain them from source code repositories.
Component frameworks are complex systems that rely on many layers of
abstraction to function properly. One essential requirement is a consistent
means of describing each individual component and how it relates to both other
components and the whole framework. As component frameworks are designed to be
flexible by nature, the description method should be simultaneously powerful,
lead to efficient code, and be easy to use, so that new users can quickly adapt
their own code to work with the framework.