|
C H A I M S: Compiling High-level Access Interfaces for Multi-site Software
Towards the Science of Component Engineering |
|
The CHAIMS Research Project
This document describes the most current version of the CHAIMS language
and system.
The various versions of CHAIMS
CHAIMS is a research project, and the CHAIMS language and the CHAIMS system
are evolving. As experience grows, the definitions and concepts in CHAIMS
change. We therefore distinguish between various versions in CHAIMS. Version
1.0 - the baby-demo - was the first version where we actually wrapped
a very simple legacy megamodule and ran a megaprogram with this megamodule
and the IO-megamodule. The version of July 1998 is version 1.1.
This version includes ASN.1-datablobs, RMI-wrapper, CORBA-wrapper, compiler
generating code for RMI and CORBA yet not for mixed clients, first version
of a repository, a simple yet not integrated scheduler, and the transportation
demo. The CHAIMS language of version 1.1 has various flaws - these will
be taken out incrementally over various other 1.* versions towards version
2.0. Version 2.0 then should contain a complete basic infrastructure.
Glossary of CHAIMS
Small glossary
describing the most important terms and their synomonyms.
CLAM: the CHAIMS Language
CLAM (Composition Language for Autonomous Megamodules)
is the composition language we use in CHAIMS for writing megaprograms.
CLAM is purely compositional - one goal of having CLAM is to investigate
if it is possible to do higher-level composition with a purely compositional
language, where all arithmetic and many other convenient language features
are pushed down into megamodules. Another characteristic of CLAM is that
it mirrors closely the elements of the CHAIMS protocol. But beside the
9 primitives of the protocol it also contains some simple control structures
and some shortcuts.
Description of the current CHAIMS language: CHAIMS
Language API (CHAIMS 1.1, July '98), new version of the CHAIMS
Language description (CHAIMS 1.0).
Description of the future CHAIMS language: Syntax
of CHAIMS 2.0 specified in EBNF, Semantics
of CHAIMS 2.0
One tricky issue is how to handle control-data
in a purely compositional language.
For older documents about the CHAIMS language, check the following page:
Development
of the CHAIMS Language.
CPAM: the CHAIMS Protocols
The CHAIMS Protocols for Autonomous Megamodules
(CPAM) are the interfaces between the compiled megaprogram (client) and
the megamodules (servers). Because we support several distribution protocols,
this interface is slightly different for the various distribution protocols.
Also the way these interfaces are defined varies. For CORBA, the interface
is defined by a CORBA-idl, for DCE by a DCE-idl, for RMI by a class definition.
There is a diagram
(as ppt)
showing the difference between the CHAIMS language CLAM and the CHAIMS
protocols.
General description of the CHAIMS protocol: The
CHAIMS protocol
CHAIMS protocol for CORBA:
CHAIMS protocol for RMI:
CHAIMS protocol for DCE: DCE-idl
(not
yet implemented)
CHAIMS protocol for CHAIMS protocol foTCP/IP:
implemented in Java
and C++, message
definition in C++, summary
CHAIMS protocol for local Java megamodules: ChaimsCompliantLocal
CHAIMS 2.0
CHAIMS protocol for local C++ megamodules: ChaimsLocalCC
CHAIMS 2.0
Incremental extraction in CLAM, in CPAM, and in other protocols:
whitepaper
The CHAIMS Infrastructure
The main elements of the CHAIMS infrastructure are the CHAIMS-compiler
and the wrappers for the megamodules.
-
Wrappers: The CHAIMS system and protocols require that megamodules
be
CHA
IMS compliant. One way to achieve this is by using wrapper templates.
These templates provide the code necessary for most of the tasks, and only
limited hand-coding is needed for the packaging of the data.
-
Wrapper template for CORBA in C++, CHAIMS 1.1
-
Wrapper template for RMI in Java, CHAIMS 1.1
-
Wrapper template for RMI in Java, CHAIMS 2.0
-
CHAIMS Compiler
-
CHAIMS Repository which stores necessary
information about megamodules (names, hosts, methods, parameters, etc.).
This information is used by the megaprogrammer as well as the compiler.
The repository is provided by the megamodule providers.
-
General I/O-Megamodule providing I/O for cases where a suite of
megamodules does not provide its own specialised I/O-functions.
The CHAIMS Architecture
-
At the heart of the run-time system is the Client Side Run Time (CSRT).
It consists in the compiled megaprogram and the necessary stubs. This CSRT
controls, through the CHAIMS primitives, the execution of the various megamodules
and facilitates the exchange of data among the megamodules.
-
The transfer of CHAIMS messages and megamodules' data between the CSRT
and the megamodules is done via various distribution layer protocols
such
as CORBA, DCE, RMI, etc. (See CPAM)
-
The generation of the stubs for the different protocols is taken care of
by the CHAIMS Compiler when compiling a megaprogram.
-
The Wrapper Templates "wrap" the megamodules which are not CHAIMS
compliant by translating their interfaces to CHAIMS primitives and
vice-versa. Also, data to be transferred between the megamodules and the
megaprogram is encoded/decoded in order to be transported though the distribution
layers.
-
The CHAIMS Repository provides documentation of the functionality
of the various megamodules to the megaprogrammers and enable them to address
the relevant megamodule and call the relevant function in the megaprogram.
For more details about CHAIMS architecture, please refer to the
CHAIMS
publications.
Application Domains for CHAIMS
Examples for application domains:
-
Supply
Chain Management: Description of a supply chain and Supply Chain Management;
CHAIMS as a system to help for Supply Chain Management.
-
Retail-chain-management: Example: customer wants special pair of
blue-jeans, and goes to specialised e-store. This store acts as a megaprogrammer
and finds out how to get this jeans fabricated and orders it.
-
Bio-informatics: composing genomics services.
-
Numerical analysis: using various (and possibly distributed) libraries
for numerical analysis, and comosing them automatically by using the CHAIMS
language.
-
Converting and filtering pictures: composing services for converting
and filtering pictures with the CHAIMS language. When a picture is processed,
it has to go through various processes/tools. This could be automated by
using CHAIMS, maybe with a special dedicated front-end on top of the CHAIMS
language.
-
Simulation: composing various simulation processes.
-
Work Flow Management: Does CHAIMS do workflow management? Presentation
of FlowMark, IBM's WorkFlow Management System and comparison with the CHAIMS
system.
CHAIMS Examples
Related Work
Back to the top of the page
Back
to the CHAIMS homepage