Skip to Main Content
The execution environments for scientific applications have evolved significantly over the years. Vector and parallel architectures have provided significantly faster computations. Cluster computers have reduced the cost of high-performance architectures. However, the software development environments have not keep pace. Object-oriented and component-based languages have not been widely adopted. Distributed computing on local area networks and Grids is only being used by a most number of applications. Clearly, there is a need for development environments that support the efficient creation of applications that use modern execution systems. This has been the goal of a continuing research effort over the last several years. The previous focus has been on using component-based ideas to develop a programming model and associated framework to support such a development approach. In this paper, two additional concepts are added to the base approach. Aspect-oriented concepts are applied to support the reduction of intertwined code related to different programming concerns; mixing I/O with a numerical computation is one example. Particularly in large applications, intertwining code can lead to applications that are difficult to modify and to manage. The second concept being added is the use of behavioral metadata. When coupling smaller pieces of code (or components) to make a larger composite application, one needs to determine the suitability of the internal behavior of component as well as the compatibility of its interfaces. The objective is to integrate some of this information into the component and design a framework assist the programmer in making these decisions.