scribed by modifications to the generated source code.
The standard for the Action Language for Foun-
dational UML (Alf) (OMG, 2013a), issued by the Ob-
ject Management Group (OMG), provides the defini-
tion of a textual concrete syntax for a foundational
subset of UML models (fUML) (OMG, 2013b). In
the fUML standard, a precise definition of an execu-
tion semantics for a subset of UML is described. The
subset includes UML class diagrams to describe the
structural aspects of a software system.
In this paper, an integration of our Alf editor and
code generator (Buchmann and Rimer, 2016) into the
UML-based CASE tool Valkyrie (Buchmann, 2012)
is presented. The resulting toolchain allows for seam-
less integration of UML modeling and Alf program-
ming (“Prodeling”) by using bidirectional and incre-
mental model transformations which operate on the
abstract syntaxes of both tools. In the integrated en-
vironment, Valkyrie may be used for structural mod-
eling and behavior may be specified using Alf. Fully
executable Java code may then be generated from the
resulting Alf model.
The paper is structured as follows: Related work
is discussed in Section 2. In Section 3, a brief
overview of Alf is presented. The integration of Alf
into our UML-based modeling environment Valkyrie
is described in Section 4. Furthermore, an example
demonstrating the use of the integrated tool is pre-
sented in Section 5. Section 6 concludes the paper.
2 RELATED WORK
Many different tools and approaches have been pub-
lished in the last few years, which address model-
driven development and especially modeling behav-
ior. The resulting tools rely on textual or graphical
syntaxes, or a combination thereof. While some tools
come with code generation capabilities, others only
allow to create models and thus only serve as a visu-
alization tool.
The graphical UML modeling tool Papyrus
(Guermazi et al., 2015) allows to create UML, SysML
and MARTE models using various diagram editors.
Additionally, Papyrus offers dedicated support for
UML profiles, which includes customizing the Pa-
pyrus UI to get a DSL-like look and feel. Papyrus is
equipped with a code generation engine allowing for
producing source code from class diagrams (currently
Java and C++ is supported). Future versions of Pa-
pyrus will also come with an Alf editor. A preliminary
version of the editor is available and allows a glimpse
on its provided features. The textual Alf editor is inte-
grated as a property view and may be used to textually
describe elements of package or class diagrams. Fur-
thermore, it allows to describe the behavior of activi-
ties. The primary goal of the Papyrus Alf integration
is round-tripping between the textual and the graphi-
cal syntax and not executing behavioral specifications
by generating source code. While Papyrus strictly fo-
cuses on a forward engineering process (from model
to source code), the approach presented in this paper
explicitly addresses round-trip engineering.
Xcore
1
recently gained more and more attention
in the modeling community. It provides a textual con-
crete syntax for Ecore models allowing to express the
structure as well as the behavior of the system. In con-
trast to Alf, the textual concrete syntax is not based
on an official standard. Xcore relies on Xbase - a
statically typed expression language built on Java -
to model behavior. Executable Java code may be gen-
erated from Xcore models. Just like the realization
of Alf presented in this paper, Xcore blurs the gap
between Ecore modeling and Java programming. In
contrast to Alf, the behavioral modeling part of Xcore
has a strongly procedural character. As a consequence
an object-oriented way of modeling is only possible to
a limited extent. E.g. there is no way to define object
constructors to describe the instantiation of objects of
a class. Since Xcore reuses the EMF code genera-
tion mechanism (Steinberg et al., 2009), the factory
pattern is used for object creation. Furthermore, Alf
provides more expressive power, since it is based on
fUML, while Xcore only addresses Ecore.
Another textual modeling language, designed for
model-oriented programming is provided by Umple
2
.
The language has been developed independently from
the EMF context and may be used as an Eclipse plu-
gin or via an online service. In its current state, Umple
allows for structural modeling with UML class dia-
grams and describing behavior using state machines.
A code generation engine allows to translate Umple
specifications into Java, Ruby or PHP code. Umple
scripts may also be visualized using a graphical no-
tation. Unfortunately, the Eclipse based editor only
offers basic functions like syntax highlighting and a
simple validation of the parsed Umple model. Umple
offers an interesting approach, which aims at assisting
developers in rasing the level of abstraction (“umpli-
fication”) in their programs (Lethbridge et al., 2010).
Using this approach, a Java program may be stepwise
translated into an Umple script. The level of abstrac-
tion is raised by using Umple syntax for associations.
PlantUML
3
is another tool, which offers a textual
concrete syntax for models. It allows to specify class
1
http://wiki.eclipse.org/Xcore
2
http://cruise.site.uottawa.ca/umple
3
http://plantuml.com
ENASE 2017 - 12th International Conference on Evaluation of Novel Approaches to Software Engineering
264