Software Architecture of MPSE

We are not trying to build a system that is capable of solving every composite heterogeneous problem. Instead we build a software system that allows users to reuse and combine legacy software to solve the specific problem at hand, the users build a different MPSE for each composite problem they solve. We can group the software components of an MPSE into five layers. At the bottom (closest layer to the hardware) is the communication and the OS layer software which provides component integration services. It provides a common communication medium for agents and is responsible for facilitating agent migration and distribution, and parallel execution of PSEs. The second layer of MPSE software consists of the intelligent agent controller and coordinator which offers higher-level communication services which are used directly by the agents. The third layer includes all computing agents and the MPSE constructor. A solver agent usually consists of a PSE with a number of libraries and supporting routines. The MPSE constructor instantiates the agents when the users build the MPSE to solve a given model. It maintains databases of available solver (PSE) and mediator templates and presents them to the users. The fourth layer consists of user interfaces for each computing agent, as well as for the MPSE constructor. These are grouped in the local user interfaces layer. It is the first layer to which the users have direct access. The top layer consists of the global user interface. It has several tasks: presenting a global view of the MPSE, facilitating user collaboration, obtaining and changing the global parameters for control over the global solution, presenting independent user interfaces to different users, using the same (consistent) global data, and displaying the current global and partial solutions to the users.

One of the major goals of the MPSE concept is to allow low-cost and less time-consuming methods of building the software to simulate a complex mathematical model of physical processes. This goal requires that existing problem solving software (well-tested, powerful, and popular PSEs) for scientific computing be reused. It is natural to use such PSEs as solver agents. However, our architecture requires the solvers to behave like agents ( e.g., understand agent languages, use them to communicate data to other agents), something none of the PSEs in scientific computing are able to do to the best of our knowledge. Our approach is to provide an agent wrapper for PSEs and other software modules, which takes care of the interaction with the other agents and with the other aspects of agent behavior. The wrapper encapsulates the original PSE and is responsible for running it and for the necessary interpretation of parameters and results. This is not simply a ``preprocessor'' that prepares the PSE's input and a ``postprocessor'' that interprets the results, since the type of mediation between the subproblems may require communicating some intermediate results and/or accepting some additional data. The wrapper, once written, enables the reuse of this PSE as a solver agent in different MPSEs, thus amortizing the cost of wrapping.