Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
4.2. GOPPRR C++ Abstract Syntax Model<br />
GOPPRR Concrete Syntax Meta Model Similar to the original GOPRR concrete syntax<br />
d<strong>es</strong>cription formalism [56], also a GOPRR meta model was created for the new GOPPRR<br />
concrete syntax formalism. Hence, a concrete syntax in GOPPRR can also be modelled in<br />
MetaEdit+ as instance of this meta model. The concrete syntax of this GOPPRR concrete<br />
syntax meta model is not explicitly documented here, but it is located in Section B.6 together<br />
with a model of the concrete syntax for the case study in Part III.<br />
4.2. GOPPRR C++ Abstract Syntax Model<br />
Additionally to the meta model concrete syntax definition formalism, the generator capabiliti<strong>es</strong><br />
are of high relevance for the creation of dependable software. Typically, generators for models<br />
in a certain meta meta model are tool bounded and are not independently implemented. Due<br />
to the decision to use MetaEdit+ as meta modelling application (reasoned in Chapter 3), the<br />
relevant generator or rather generator language is MERL. Its main advantage is the provided<br />
abstraction for navigating through the bindings between objects in graphs. In contrast to the<br />
abstract GOPRR meta meta model structure in Figure 3.17 and Figure 3.18, the navigation is<br />
simplified in MERL to bindings in Figure 3.19 without ports and Figure 3.20 with ports. The<br />
direct drawback is that a generator is only related to the scope of a graph type but not to a<br />
project. Also, MERL generators for other GOPRR elements can be implemented but can only<br />
be used for graphical repr<strong>es</strong>entation effects and not for output generation, like source code.<br />
Therefore, all elements in a graph are treated only as graph-global, although they are project<br />
global, and might be (re)used in several different graphs.<br />
To obtain the information about the partition of an object, the implementation in MERL<br />
mostly ends in a complex generator. Additionally, MERL suffers in general from a weak syntax.<br />
For example, it lacks of the definition of functions and the specification of the scope of variabl<strong>es</strong>.<br />
This means simple generators can be easily implemented in MERL while complex and project<br />
related generators typically reach an unacceptable level of complexity in their implementation.<br />
To handle this issue, the concrete generation of source code and other components must be<br />
done outside of MetaEdit+ and MERL because the drawbacks cannot be eliminated by custom<br />
extensions and modifications. Furthermore, extensions or modifications of the generation<br />
module are not possible since MetaEdit+ is proprietary, closed source software.<br />
For this reason, an external generator application that us<strong>es</strong> an abstract syntax model should<br />
be implemented. The term model refers here to a software class model specified in UML.<br />
Neverthel<strong>es</strong>s, from the DSM view the, GOPPRR C++ abstract syntax model is a meta<br />
meta model while concrete instantiations corr<strong>es</strong>ponds to a model instanc<strong>es</strong> within that meta<br />
meta model. This abstract model must be provided in a project-oriented manner while the<br />
implementation in C++ eliminat<strong>es</strong> the syntactical weakn<strong>es</strong>s<strong>es</strong> of MERL. The transformation<br />
from the internal, concrete syntax model in MetaEdit+ to the C++ GOPPRR model should<br />
be done via XML 1 , which is explained in Section 4.3 in detail.<br />
In the following, the C++ abstract syntax model is explained in detail. For the initial<br />
development, the already existing GOPRR meta meta model abstract structure in Figure 3.17<br />
and Figure 3.18 was taken and then transferred to an UML class structure to be extended as<br />
1 as intermediate model<br />
43