From there to here,
from here to there
funny things are everywhere.
(Dr. Seuss)
The CCM Tools are a set of Java programs and libraries as well as Python scripts
that supports the development of components, based on the CORBA Component
Model (CCM) [10]. As shown in Fig. 1.1, the CCM
Tools form a component development framework that is flexible and extensible.
Using a well defined CCM model, we can separate the component description from
the code generator tools. Therefore, we can add new description methods (e.g.
UML) or code generator tools (e.g. Java Component Generator) without changing
the other tools.
Figure 1.1:
CCM Tools overview
|
Using a well defined CCM model, we can separate the component description from
the code generator tools. Therefore, we can add new description methods (e.g.
UML) or code generator tools (e.g. a Java Component Generator) without changing
the other tools.
Note that the dashed tools are still under construction and therefore not part
of the current release series (CCM Tools release series 0.3.x).
The CCM Tools framework contains the following tools:
- CCM Metamodel Library
- The CCM specification defines an Interface Repository Metamodel for the
IDL3 syntax. We implemented a CCM Metamodel Library that allows creation and
iteration of CCM models. Using this library we can clearly separate the parser
and the code generators. The parser creates a model object for every part of the
source code matching an IDL grammar rule.
- IDL3 Parser
- The IDL3 Parser reads the IDL3 file, checks the syntax of the IDL source code
and creates a CCM model using the CCM Metamodel Library in the memory. This CCM
model is the starting point for all code generator tools in the framework.
- IDL3 Generator
- To test the functionality of the CCM Metamodel Library and the IDL3 Parser we implemented
an IDL3 Generator that writes out the CCM model in a corresponding IDL3 File.
- IDL3 Mirror Generator
- We use a Test-Driven Development (TDD) strategy to develop and to specify
components (as described later in this tutorial). Our component unit test uses a
mirror component to connect all ports of an existing component. The IDL3 Mirror
Generator creates the IDL3 syntax definition of this mirror component.
- Local C++ Component Generator
- The component model is realized by the component logic that implements the
operations for providing, using and connecting components by their facets and
receptacles. We implemented a generator tool that creates the local component
logic from a given CCM model. After generating the component logic, the
component developer only has to write the business logic within the generated
component skeleton.
- Local C++ Mirror Generator
- After building a local C++ component we have to run a functional test on it. To
provide a suitable test environment we create a mirror component as well as a
test client that manages the component unit test.
- Local Python Component Wrapper Generator (under construction)
- For rapid prototyping and the development of glue components we use
heterogeneous local C++/Python components. The component logic, including the
component's interfaces, are implemented in C++ while the business code can be
hacked in Python - without need to compile and redeploy after changes.
- IDL2 Generator
- To implement CORBA components the IDL3 source code is mapped to IDL2 that can be
processed by a classic IDL2 Compiler (currently we use the Mico ORB). The
transformation from IDL3 to IDL2 also adds some operations needed for navigation
between components and their ports (equivalent operations). We support this
transformation by a IDL2 Generator tool that creates IDL2 from an existing CCM
model.
- Remote C++ Component Generator (under construction)
- The local components can only be used in a common address space and must be
implemented in the same programming language. To overcome these limitations we
generate remote component logic that interfaces the local components with CORBA.
The remote component logic is thus a superset of the local component logic. Note
that the external view of such a remote component quite conforms to the CCM
specification.
- Component Descriptor Generator (under construction)
- To describe the component for the deployment and the assembling process the OMG
defined a CORBA Component Descriptor (CCD) file. This is an XML file
containing a short description of a component and its ports. We use the CCM
model and information from a user interface to generate the specified descriptor
file.
2003-11-09