Software architecture
An overall architecture for the project's software infrastructure has been designed as the basis of current development work.
A simple overview of the different levels of infrastructure in the project is shown below:

The diagram below represents the architecture at a more detailed level in terms of its individual functional components.

The 5 main components of this architecture are:
- the user interface which runs within a normal web browser on the user's machine as a minimum requirement or via a desktop application such as Matlab;
- a set of infrastructure components providing user-accessible services including job preparation, submission and monitoring, computational steering, managed access to data and control of visualisation;
- the simulation subsystem which provides a range of solvers for user-supplied model codes, possibly running in coupled mode;
- the data management subsystem which stores the user's data files along with associated metadata and provides facilities for data retrieval and curation; and
- the visualisation subsystem which offers the user a range of visualisation techniques for examining simulation and experimental results, possibly working collaboratively with remote colleagues.
Simulations are being carried out on a range of machines accessible to the project partners including local workstations, the commodity clusters available on the National Grid Service and the UK's high performance supercomputing facilities at HPCx and CSAR. The Storage Resource Broker , originally developed at the San Diego Supercomputing Centre, is being used to manage the wide variety of datasets which will be generated at several locations in the project. Visualisation tasks can be carried out either locally or using Grid-based resources depending on the complexity of the visualisation functions requested by the user.
In simple terms, the main user tasks which need to be supported by the project infrastructure are:
- incorporating computable models of biological systems into executable simulation codes and installing them on a range of systems;
- specifying the input parameters of a simulation problem to be solved;
- selecting the resources to be used and running the simulation;
- monitoring and controlling the simulation during execution;
- securely managing and curating both input and output datasets;
- creating appropriate metadata information for future reference;
- analysing and visualising simulation results and experimental data;
- working collaboratively with colleagues wherever they may be.
The process of developing this infrastructure is being guided by three overarching considerations:
- working within established standards frameworks and helping to develop these where necessary;
- ensuring the software developed is scalable to address the need for increasing spatial and temporal resolution; and
- building a secure framework that will protect the integrity and confidentiality of all the project's assets.
