generation because the mainTask operation, as well as the
other target class elements, must contain code sections inside
the elements body, as done in [6][12]. These elements body
code sections, like for mainTask operation, can come from
the transformation of many of other source model constraints
and each of code section must be organized to generate the
correct code. Our solution to generate many of elements body
code sections is to add such sections as a comments
associated with the elements. Afterwards such comments can
be arranged into elements body and a M2C transformer can
then generate the correct code.
Lines 21-22 the designer can write the algorithm to
search for messages decorated with «SAtrigger» stereotype.
The algorithm must add a “mof.core.Attribute” instance type
to the target class. The {RTat = (‘periodic’,15,’ms’)} tagged
value from «SAtrigger» stereotype in Figure 7 indicates that
several attributes containing FemtoAPI specific data types
must be generated (e.g. PeriodicParameters, AbsoluteTime,
etc) and initialized, also following the mapping defined by
Becker et al in [6][12].
4.2 Features Selection and System Generation
Every time a new application is designed the application
designer must perform the FM instantiation and use the
workflow to apply transformations into the source model,
since it documents mappings and transformations using
selected features. Nevertheless, this is not a problem because
application designer must apply successive mappings and
transformations guided by several workflows. As more target
platforms are modeled, more M2M transformations becomes
necessary. FOMDA toolkit helps application designer in
configuring target platforms using FM to apply such
transformations and to compose transformation using the
third-level transformation, all using FOMDA workflow
definition. Once such resources are configured, designer can
use it to generate code to the target platforms selected in the
FM.
4.3 Changing the Target Platform
In this case study we presented an example of using
FOMDA to configure transformations for a specific features
combination, related to the FM presented in Figure 3, and to
use it to transform any model that needs such configuration.
Naturally, as more platforms become necessary to a system,
new configurations have to be established. When all
combinations are fulfilled, then designer has a powerful
resource to generate code to many target platforms.
As an example in target platform changes, if a new
system also requires a middleware such as Embedded
CORBA, then “Middleware” and “EmbCORBA” features
must be selected in the FM. This selection defines a new
configuration and a new FOMDA workflow must be
specified. The feature “EmbCORBA” could be used to
transform the output of “FemtoAPI” activity and configure it
to work with embedded CORBA target platform. This
transformation could be of M2M category. Further, the
output of “EmbCORBA” could be mapped to “Java” activity
and then a new code could be generated to supply both
embedded CORBA and FemtoAPI target platforms.
When system non-functional requirements changes,
specially the architectural ones, a re-adaptation of FOMDA
workflow becomes necessary. Transformers, features
parameters, etc, can be reused without changes even if target
platform changes. The low-level transformers can be reused
even in change of the target platforms or in the order that
they are applied. Changes in transformation order for some
target platform affect the high-level FOMDA workflow, but
it is easy to re-adapt it for the new requirements. In the
future, the FOMDA toolkit should be extended to help in
workflow specification and to use it as a wizard to guide
application designer in the mappings and transformations of
source models to target platforms.
5 Related Works
Almeida et al. in [7] proposed a manner to apply
consecutives model-to-model transformations. They do it by
defining transformations tiers as abstract platforms that are
represented as extensions of MOF packages. Nevertheless, it
is not possible to have the notion about the order in which
transformations occurs. Tekinerdogan et al. in [45] have
suggested the usage of FM in mappings and transformations
of models. Almeida and Tekinerdogan proposals are very
interesting as they identify target platforms and use it to map
and transform models. FOMDA approach has a
complementary contribution, proposing to organize
transformation in tiers, with every tier representing a target
platform. Moreover FOMDA innovates by using FM in
conjunction with MDA.
Other tools addressing direct model manipulation
category are UMT [15][19] and Jamda [6]. FOMDA toolkit
also works with direct model manipulation but only in one
from its four levels of transformations. Application designer
can make mappings and transformation over target platforms
in a high-level tier and use, inside platforms, transformers to
apply a transformation direct to some model element in a
low-level tier.
6 Conclusions
This paper described the problem of ever changing
embedded systems non-functional requirements, specially
architectural ones, and proposed a solution based on Features
Model and in MDA standards. We proposed the Features-
Oriented Model-Driven Architecture (FOMDA) approach to
help application designers in defining mappings and
transformations of any model to as many target platforms as
wished, by configuring model-to-model and model-to-code
transformations over tiers. Every tier represents some target
platform that the system must be mapped and transformed to.
We divided the task of configuring mappings and
transformations in four levels to simplify and clarify the
transformations.
Our low-level transformation definition is characterized
as one of direct manipulation approach, and designer must
write transformers algorithms to apply transformations over
source model elements in conjunction with third level
transformation organization. The second-level transformation
is to configure inputs and transformers of target platforms.
Finally the first-level transformation represents a workflow
to guide application designer with mappings and