Multiplatform Overview
The picture above shows Multiplatform as a complete system providing tools for all phases of the life cycle of the project software. It also shows the supported operating systems and programming languages and how the various components interact with each other.
The color of the boxes indicates how specific a certain component must be for a specific project. Most components are completely independent from a specific project (green). Some semi-standard components must be adapted to some degree (yellow). Finally there are components which are fully specific for the project they should work in (red). This applies only to the modules and the interface description given by the M3L Schemas while everything else can be used in any project.
During build time Multiplatform provides namely the so-called Make Includes which control the process of building programs, libraries, and other data from sources provided by the project partners as well as the installation of the built items into the system tree. This approach has the advantage that the know-how of building and installing software is concentrated in the Make Includes. Therefore the project partners can focus on building high quality modules which by the help of the Make Includes can be easily installed in their own system tree. At the same time the integration group gets modules which can be treated in a simple and uniform way (namely by make all install) and therefore can focus on the real problems.
During run time Multiplatform provides all the components described in the sections before. Note that the system tree can be visible on any number of hosts and each module may run on each of them. This allows for an arbitrary distribution of processes so in many cases performance of the overall system may be raised by distributing the processes on more hosts. As an important debugging aid the so-called pools.log file is generated. It contains the complete message log of all messages transferred in this run of the system. On a technical level this is realized by a process which simply subscribes to all known pools in the system.
pools.log is the basic structure which is used during debug time. There are a number of tools which allow different perspectives on the data gathered there. Thus an in-depth analysis of what happened during a run is possible at any time to any level of detail. There are also tools which generate standard XML files from the M3L data as well as tools which allow the re-insertion of (possibly processed) data into a running complete or partial system. This allows for comfortable debugging of single modules, closely related module groups or even the complete system.
Finally Multiplatform provides tools for bundling the system tree or diffs of it to provide them to the project partners at distribution time. This way the integration group integrating the whole system into a common reference tree can provide updates to the partners very easily. Then the project partners may install these updates into their system tree where all local configurations are merged with new versions in the updates in an intelligent way. In some projects based on Multiplatform this has been further automated so the project partners are provided with updates two times a day allowing for a maximum coherence of the system trees at various sites.