Summary form only given. The efficient development of composite applications is discussed with the focus being on the use of software components to package the user code that is used to build the composite applications. Because of the complex nature of scientific applications, using software components in a plug-and-play style is not so simple. The design of the software components (or user tasks) and the frameworks used to integrate them into a composite application need to support a great deal of flexibility. This is needed to allow efficient experimentation in the development of the application. Additionally, frameworks need to assist the application developer beyond just ensuring interface compatibility. Matching the internal behavior of two user tasks that are coupled in a composite application is equally important. While a completely automatic behavioral analysis may never be a reality, frameworks can include sub-systems that provide the user with insight as to the compatibility of the integration of a task into a composite application. The goal of the research program is to address the above issues by applying several relatively new techniques to explore the design of components, frameworks, and the associated programming styles. Metadata is being used extensively to describe various elements of an application and a framework and software tools are being developed that use this metadata to augment the execution of the user tasks. Aspect-oriented programming concepts are being used to support better modularity and portability in the design of components and composite applications. Behavioral analysis techniques are being used to further enhance portability by including knowledge about the use of an task in its metadata.
['Thomas Eidson', 'Victor Eijkhout', 'Jack Dongarra']
Improvements in the efficient composition of applications built using a component-based programming environment