CONTENTS
CONTENTS
CONTENTS
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
COMDEVALCO FRAMEWORK 191<br />
3.1. Modeling language. The modeling language was improved in two different<br />
directions, by (1) including module and execution environment, and (2) extending its<br />
type system with structured types.<br />
In order to ease the process of implementing modular concepts, an adaptable<br />
infrastructure was created, based on a meta-model defining the concepts of module<br />
and execution environment.<br />
The module is considered in the general case, as a deployment unit, including<br />
either (a) several data types, functions, and procedures - as in the traditional modular<br />
programming model, or (b) several data types, including components - as in the case<br />
of component-based programming. There are dependency relations between modules,<br />
which must be specified during module definition phase and must be satisfied before<br />
module execution.<br />
Static execution environments load all modules of an application before starting<br />
its execution. The proposed model loads modules and starts their execution provided<br />
that all dependencies are solved. It also supports dynamic module load/unload facilities.<br />
Some of the existing execution environments have these features - like OSGi [11],<br />
which assembles Java applications from dynamic modules. Our proposal is described<br />
in [5].<br />
The initial modeling language used only primitive data types. Currently, its type<br />
system includes a new ArrayType class, and PAL grammar was changed to allow the<br />
definition of tables (vectors) and structured types, like lists. These achievements are<br />
described in detail in [9], which proposes an extensible data type hierarchy.<br />
3.2. Component repository. The interactions between component repositories, ComDe-<br />
ValCo workbench and client applications are described in [5, 8].<br />
The starting point in the work of providing a correct taxonomy for components<br />
was the establishment of classification criteria. Several concrete approaches were<br />
considered, including information domain and functionality. These criteria may be<br />
used in searching of components stored in the repositories. All these matters are<br />
discussed in great detail in [8].<br />
The root of all objects managed by the component repository is RegistryObject<br />
(see Figure 1), from which all components inherit (thru ExtrinsicObject class). In<br />
order to provide a great degree of flexibility, the hierarchy contains distinct classes<br />
for the two concepts: classification and classification scheme.<br />
In order to describe the representation of components in the repository, an object<br />
model was defined; it includes all component types covered by the modeling language<br />
and allows for adding new ones.<br />
Component representation format complies to OASIS RIM (Registry Information<br />
Model) standard [10]. To achieve this, the class ExtrinsicObject was extended<br />
by subclasses specific to component-based applications: DModule, DComponent,<br />
Capability - functionality, and Requirement - component dependencies .<br />
3.3. The toolset. The functionality of DEFCOMP and VALCOMP tools was extended<br />
to include module and execution environment concepts. Papers [5, 6] describe