<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Model-Based Technology of Software Development in Large</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jaan Penjam</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Enn Tyugu</string-name>
          <email>tyugug@cs.ioc.ee</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Cybernetics at Tallinn University of Technology Akadeemia tee 21</institution>
          ,
          <addr-line>12618 Tallinn</addr-line>
          ,
          <country country="EE">Estonia</country>
        </aff>
      </contrib-group>
      <fpage>149</fpage>
      <lpage>163</lpage>
      <abstract>
        <p>The present work describes a technology for developing software in unique and large projects. The present model-based technology supports the projects where a single software product is developed. This is di erent from the block languages and model-based software tools on the market, which provide a set of components where the reusability of the components is an important requirement. A distinguished feature of the technology is a support that it gives to the software design at an early stage of the design process. The design process begins on the architectural level where implementation details can be ignored. Components are introduced considering their functionality, but the implementability of a component is taken into account at the early stage of the design process only based on an experience of a designer.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>The present paper describes a technology for developing software in unique and
large projects. Contrary to the model-based software tools on the market, which
support the development of a set of components where the reusability of the
components is an important requirement, the present tool and technology support
the projects where a single software product is developed. The reusability is a
bene cial, but not necessary property of the components designed and developed
with this technology.</p>
      <p>A distinguished feature of the technology is a support that it gives to the
knowledge-based design of software at an early stage of the design process. One
can say that the design process begins on the architectural level where
implementation details can be ignored. Instead of classes, components are introduced.
The implementability of a components can be taken into account only based on
an experience of a designer. This design technology is intended to be analogous
to the architectural design in other engineering areas like civil engineering or
mechanical engineering.</p>
      <p>Implementation of a component results in a class, but an implemented
component has also a formal speci cation used in composition of the software system
{ the metainterface. Beside that, a component may support (local) protocols for
communicating with other components. A component can be considered as a
knowledge module, or even an agent, operating in a coordinated way with other
components.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Visual description of software architecture</title>
      <p>
        We present here a de nition and a notation of knowledge module that can be
used for describing software architecture on the knowledge level. A knowledge
module is considered as a pair of sets: a set S of notations (objects) and a set M of
denotations (meanings of notations) together with a notation-denotation relation
between these sets. (This gives interpretation of the notations.) Also means to
perform operations on the set S must be given, although we do not specify these
means here, see details in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. They are speci c to every knowledge module, and
can be abstractly represented as inference rules. An abstract representation of a
knowledge module is a deductive system with interpretation, see S. Maslov [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
(a)
notations
denotations
intuitionistic logic
      </p>
      <p>Hierarchical connection. We say that knowledge modules K1 and K2 are
hierarchically connected, i there is a relation R between the set of meanings
M1 and the set of objects S2, and strongly hierarchically connected, i there is a
one-to-one mapping between the elements of a subset of M1 and of a subset of S2,
see Fig. 2. A hierarchical connection of knowledge modules can be observed quite
often in real life. An example is deductive program synthesis. The knowledge
system of logic and the calculus of computable functions (CCF) are strongly
hierarchically connected, because there exists a Curry-Howard isomorphism of
proofs and formulae as types, see Fig. 2b.</p>
      <p>Semantic connection. Knowledge modules that have one and the same set of
meanings are semantically connected. This is the case, for instance, with classical</p>
      <p>K1
M1
K2</p>
      <p>S2
(a)</p>
      <p>R</p>
      <p>Intuitionistic logic
logic systems that have di erent sets of inference rules, or even with natural
languages that belong to closely related cultures (i.e. that have the same set of
meanings). Graphical notation of semantic connection is shown in Fig. 3a.</p>
      <p>K1</p>
      <p>K2</p>
      <p>K1</p>
      <p>K2</p>
      <p>K1</p>
      <p>K2
(a)
(b)
(c)
Operational dependence and operational connection. Knowledge module
K1 is operationally dependent on a knowledge module K2, if some of its derivation
rules use K2 in deriving a new object, i.e. the result of derivation in K1 depends
on knowledge processing in K2, Fig. 3b.</p>
      <p>Knowledge modules K1, K2 are operationally connected, if K1 is operationally
dependent on K2, and K2 is operationally dependent on K1. Graphical notation
of this connection is shown in Fig. 3c. The notations presented here are used for
the architectural design of software at the rst stage of a software project.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Architectural design of software</title>
      <p>The rst stage of design of a software system is its architectural design. At this
stage, only the most general structure of the system is developed and speci ed by
the knowledge architectural means. It is important to decide, which knowledge
modules are needed, and how they will be connected. The input for this stage is
a speci cation of functional requirements.</p>
      <p>graphics
texts
logic
CCF
(a)
user interface
(b)
texts
logic
CCF</p>
      <p>Java</p>
      <p>
        We present our technology on an example of design and development of a
model-based software tool CoCoSynth that includes also a program synthesis
functionality. For a speci cation of functional requirements, we refer to [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and
the documentation of an existing tool CoCoViLa in web1. This means that we
are applying our technology to the development of a new version of CoCoViLa.
      </p>
      <p>It follows from the documentation of CoCoViLa that there must be two
hierarchically connected knowledge modules logic and CCF that support the
deductive program synthesis as it has been shown in Fig. 2b. This is the core
of the software tool. We see also from the documentation that the input of the
tool is not in a logical language, but in a textual domain-oriented speci cation</p>
      <sec id="sec-3-1">
        <title>1 http://cocovila.github.io/</title>
        <p>language and/or in a visual language. This adds two more knowledge modules:
texts and graphics to the architecture of the tool. These knowledge modules are
hierarchically connected with the logical module, Fig. 4a. Operation of the tool
is controlled by a user through a visual user interface that is also a knowledge
module. We can describe this connection by operational dependence of this
module on other modules. If we wish to show also the functionality that re ects the
usage of Java at runtime, then we have to add a Java knowledge module tool as
shown in Fig. 4b.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Design of components</title>
      <p>This stage includes a conceptual analysis of the domain, and can be called also
domain engineering, although the domain is presented by a single new
software product in this case. Having an architectural description of software, one
can take the knowledge modules of this description as components in the rst
place. However, these components may be too large or too small. The knowledge
modules can be sometimes divided into smaller components, or collected into
a single component, considering their functionality and realisability. A separate
component may be required for representing a hierarchical relation between the
knowledge modules. This will be demonstrated on the example below.</p>
      <p>In the present example, we keep the user interface knowledge module as a
separate component controller. The knowledge modules graphics and texts will
be joined into a single component editor, in order to facilitate their usage by
controller, because the latter will produce the text in parallel with the graphics.
We keep the knowledge module of logic as a separate component planner. This
name re ects the purpose of the logic component that synthesises an algorithm
of the software product. The hierarchical connection between editor and planner
will be represented by a separate component parser which transforms a text into
logical formulae. The computational knowledge module CCF gives a component
called exe. Also a hierarchical relation between planner and exe will be
represented by a separate component generator which generates a Java program that
has to be run. We introduce an additional component algorithmVisualiser for
the visualisation of synthesised algorithms.
5</p>
    </sec>
    <sec id="sec-5">
      <title>The CoCOViLa system overview</title>
      <p>
        The tool used in our technology must support convenient implementation of
components, preferably visual speci cation of software models and automatic
code generation from a model. The tool CoCoViLa [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] used in our technology
consists of two almost independent programs: Component Editor and Speci
cation Editor. The rst is a relatively small program for developing visual images of
components, specifying their general properties and collecting them in
domainoriented packages.
      </p>
      <p>The speci cation editor, referred further as CoCoViLa itself, uses a package
of components for specifying tasks in respective domain or, in the present case,
specifying a software model, and it supports code generation from the model.
Essential working principles of this tool are the following:
{ besides a visual representation, each software component has two parts: 1)
logical speci cation of the component (LO), called metainterface, 2)
objectoriented (OO) realisation of the component { a Java class;
{ a component is called metaclass, because after program synthesis it may be
transformed into several di erent classes;
{ object-oriented and logical parts have separate namespaces, except for names
of methods from OO used in LO { this enables one to write speci cations of
components almost independently of their Java realisations;
{ OO and LO have a common type system.</p>
      <p>
        Metainterface has a precise logical semantics given as a set of formulas { axioms
with realisations given by methods of its Java class. These formulas constitute
a theory in intiutuonistic logic that is used by structural synthesis of programs
[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] for automatic construction of programs in CoCoViLa.
      </p>
      <p>Components can be de ned hierarchically, i.e. a metainterface of a component
may contain components whose types are given by metaclasses, i.e. by other
components. Also equations, as well as some other language constructs can be
used in the metainterface. A metaclass may consist of a metainterface only, e.g.
in a case when computations are speci ed by equations. Metainterface is written
in a speci cation language, and it is included as a comment in the Java class of
the component between /*@ ... @*/. We give an example of a metaclass now.
The metaclass And represents a logical element (and-gate) for signals represented
by 0 and 1. It includes a Java method calc as a realisation of the axiom in1,
in2 -&gt; out.
s p e c i f i c a t i o n And f
i n t i n 1 , i n 2 , out ;
i n 1 , i n 2 &gt; out f c a l c g ;</p>
      <p>Lines 02 to 06 of the example are a metainterface. Line 04 is a variable
speci cation of integer variables, and line 05 is an axiom. All Java classes and
metaclasses can be used as type speci cations. Lines 07 and 08 are in Java,
and describe the method calc referred to in the axiom. An axiom is a formula
of a conjunctive-implicative fragment of intuitionistic propositional logic, where
commas represent conjunction symbols.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Implementation of components</title>
      <p>Each implemented component has graphics, metainterface and Java class. It is
reasonable to start with writing a metainterface, although the development of
all three components can occur in parallel.</p>
      <p>Writing metainterfaces. A metainterface is written in the speci cation
language and included in the class of a component as a comment. Lines 6 to 15
of Fig. 5 show a metainterface for the component PARSER as an example. The
metainterface shows that problem can be computed in three steps speci ed by
the axioms in lines 12, 13 and 14.</p>
      <p>Developing graphics. For developing graphics of a component one uses the
Class Editor program of CoCoViLa that supports the development of visual
representation of the component, de nition of ports for binding components, as well
as description of properties of component as it is described in the documentation
of the Class Editor.</p>
      <p>Implementing methods. Class of a component is created already when a
metainterface is written. This class must be completed by writing all methods
referred to in axioms of the metainterface. In the case of the component PARSER
in our example, the methods are
getMainClassName ,
m a k e C l a s s L i s t ,
makeProblem .</p>
      <p>It is obvious that in these methods, other methods may be used that need
to be implemented as well. This is a usual program development in Java. For
instance, we see that he method getClassName of a class SpecParser is used in
addition in the method getMainClassName.</p>
      <p>As our example is in essence redeveloping CoCoViLa, it is reasonable to use
its classes as much as possible for the implementation of methods. We have used
the source code of CoCoViLa, that consists of 240 Java classes, totally about
30K lines of code. These classes were developed without any restrictions on
programming in Java. Our experiment has shown that most classes could be used
as is, or with only minor changes, depending on the developed metainterfaces.
Static model of software. When components are implemented, a high-level
structural model of software can be written immediately in CoCoViLa
specication language or drawn as a diagram. This is called static model. For the
synthesis, the static model is automatically translated into a metainterface of a
new Java class.</p>
      <p>The static model is a speci cation for the tasks that the system has to
perform. Programs for the tasks are synthesized automatically. When translated
into logic, the static model describes a theory representing all possible
computations on the model. Let us denote by G the set of the goals that describe the
tasks solvable on the model. Each goal is written in the form</p>
      <p>x1; x2; : : : ; xm ! y1; y2; : : : ; ym;
where x1; x2; : : : ; xm; y1; y2; : : : ; ym are variables of the static model, e.g.
specication, problem, algorithm etc. in our example. These variables are considered
in logic as propositional variables of the theory, and commas as conjunction
symbols. Fig. 6 shows the static model where all components described in the
previous section are present.</p>
      <p>Dynamic model. The static model describes only tasks that the software can
perform, but not a user interface to invoke these tasks. In order to describe the
interaction between a user and the system, a dynamic model of GUI is
introduced. This model is speci ed as a statechart. This statechart may be explicitly
given as a part of a requirements speci cation, or it may be implicitly described
by other requirements. In the latter case, the development of the statechart
is performed in a conventional way, e.g. as recommended by some UML-based
technolgy.</p>
      <p>Each transition t in the dynamic model is marked by an event e(t) and a
goal g(t). The event is either a user action (e.g. pushing a button) or an event
created by the system that triggers some transition. The goal describes a task
to be performed on the static model when the transition t occurs. The tasks for
all transitions must be solvable on the static model, i.e. for every task t must
be g(t) 2 G. Fig. 7 shows abstractly a fragment of the dynamic model, and the
connection between the static and dynamic models with the tasks u ! v, x ! y
and events denoted by a and b.</p>
      <p>The dynamic model must be implemented as a component that becomes a
superclass for the class of the static model. In our example, this is the component
controller. Fig. 8 shows a part of the dynamic GUI model for our example with
events created by user commands Run, Compute goal, Compute all, Scheme. One
can nd meaning of these commands from the documentation on CoCoViLa. The
respective tasks for the commands are
c ! speci cation
c; speci cation ! algorithm
c; algorithm ! code
c; speci cation; goal ! algorithm
c; speci cation ! results
c; speci cation ! schemeMenuOpen;
where c is a control and context variable.
The user interface is implemented as a component as described above. Its
functionality is described by the dynamic model that is in the form of a statechart.
Java technology can be used in full in this implementation. However,
implementation of a connection between of the dynamic and the static model by means of
events and tasks deserves a special attention, and here are some hints for this.
1. The user interface component (controller in our case) can be implemented
as a superclass for the static model. This enables one to use the names of
variables of the static model for representing the tasks to be solved on it.
2. A task is always invoked by a respective event (see the dynamic model). The
event is handled by an event handler in Java. Hence a call of program for a
task must be included in the event handler.
3. As a program for a task is synthesised automatically using SSP, each task
must be described by an implication in an axiom whose implementation
creates event handlers. In our example, the event handlers are created by
the method initGUI. Its axiom, included in the metainterface of controller,
is as follows:
[ c &gt; s p e c i f i c a t i n ] , [ c , s p e c i f i c a t i o n &gt; algorithm ] ,
[ c , algorithm &gt; code ] , [ c , s p e c i f i c a t i o n , g o a l &gt; algorithm ] ,
[ c , s p e c i f i c a t i o n &gt; r e s u l t s ] ,
[ c , s p e c i f i c a t i o n &gt; schemeMenuOpen ] ,
c &gt; doneinitGUI f initGUI g ;
8</p>
    </sec>
    <sec id="sec-7">
      <title>Synthesising the software</title>
      <p>When the static model is implemented including the dynamic model as a
superclass, a new program can be synthesised automatically by giving command Run
from Scheme menu of the CoCoViLas main window. This means bootstrapping
CoCoViLa in our CoCoSynt example.</p>
      <p>The bootstrapping process and its results can be explained in Fig. 9. It
shows the windows that open during the bootstrapping and running the
bootstrapped tool. The two upper windows belong to CoCoViLa, they are a diagram
of the static model of the new CoCoViLa (CoCoSynth) and the Java code of
CoCoSynth synthesized in CoCoViLa. This completes the development of the
new tool CoCoSynth.</p>
      <p>The static model di ers from the model in Fig. 6 by more compact
presentation, where ports of the components are directly connected with each other
without intermediate data components. Also an extra component GUIactions
has been added to the model. It includes additional action listeners for the
controller. When command Run is given from Scheme menu in this window,
CoCoSynth is synthesized and started as well. The lower windows belong to the
synthesized CoCoSynth. The leftmost window is the main window of CoCoSynth,
it opens automatically after Run command given from CoCoViLa. It can be used
for loading packages, drawing diagrams and performing computations. We see
a package Gearbox loaded, and a diagram with several wheels, a motor and
two visualizer components in it. After invoking Speci cation... command from
Scheme menu of CoCoSynth, a new speci cation window opens according to the
dynamic model.</p>
      <p>This window can be used for textual editing of speci cation, for synthesizing
application programs, for running these programs and for some other actions.
After the command ComputeAll from the speci cation window, this window
will show the synthesized Java program (partially visible in the second window
from left). After the command Compile &amp;Run from this window, the synthesized
program is compiled and executed and, in our example, a table of results is
calculated and visualized (visible in the lower right window). Also a small part of
algorithm for calculations on gearbox is visible from behind the result window.
As the structural synthesis of programs used in CoCoViLa is fast, the whole
process of bootstrapping and creating these windows takes less than 30 seconds
(including interaction with a user, e.g. opening windows from GUI, etc) in the
case when the diagrams are ready and loaded from some repository.
9</p>
    </sec>
    <sec id="sec-8">
      <title>Related work and discussion</title>
      <p>
        Model-based software development (MBSD) has been increasingly popular
during several decades and a number of tools supporting implementation of
modeldriven principles have developed. The comprehensive study of achievements in
the eld can be found, for example, in the book [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Its most successful
applications are in simulation software for automotive engineering, space technology and
others, there are well known specialized products, mainly in simulation domain
like Simulink [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and more recently several systems like MetaEdit+[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], Modelica
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] etc.
      </p>
      <p>UML2 is de facto standard not to be ignored in model-based software
development. Our technology uses two kinds of UML diagrams: statecharts and
component diagrams. However, we have implemented the semantics of these
diagrams in a way that guarantees automatic code generation from them for large
2 www.uml.org</p>
      <p>
        Java software including more than two hundred classes. This is a di erence from
the existing examples of code generation from UML models, e.g. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], where only
relatively small examples have been implemented.
      </p>
      <p>
        Considerable amount of work is being done in improving the existing
UMLbased approaches with the aim of providing automated support to the software
development[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and language development [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. One of the most successful
approaches in this direction has been made by the Eclipse community. Eclipse
Modelling Project (EMP) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] that includes Eclipse Modelling Framework (EMF),
Graphical Modelling Framework (GMF) and the Generative Modelling Tools
(GMT) is a relatively new collection of technologies for building domain speci c
languages (DSLs). Generally speaking, EMP is a powerful set of tools, but it
requires a lot of e ort to develop a working DSL from scratch.
      </p>
      <p>
        The system CoCoVILa used in this papaer belongs to the another research
direction in the MBSD { Model-Integrated Computing (MIC) that addresses
the problems of designing, creating, and evolving information systems by
providing rich, domain-speci c modelling environments including model analysis
and model-based program synthesis tools [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. CoCoViLa, integrates tools for
speci cation and implementation of visual DSMLs (both for abstract and
concrete syntax together with some well-formedness constraints) and translators
that implement mappings from syntactic form of modes into formal theories in
the semantic domain. The latter is a domain-independent framework for
representing semantics (components and relations) of domain-speci c models as sets
of axioms in intuitionistic logic calculus equipped with speci c inference rules
(rules for structural synthesis of programs (SSP)) for generating of algorithms
in a formal theory corresponding to the domain-speci c model [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        CoCoViLa has been applied mainly as a model-based simulation tool [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]3.
The novelty of this paper is to apply this approach for design and development
of software product, including its static and dynamic aspects as well as user
interface.
      </p>
      <p>
        A technology with automatic code generation from models has been
developed by Steven Kelly and Juha-Pekka Tolvanen. Their technology and tool
MetaEdit+ have been well described in literature [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Our software technology
is similar to that. However, we use deductive program synthesis for code
generation. This makes the implementation of components much faster, because no
generator development is needed.
      </p>
      <p>Bootstrapping of software tools has been popular since early days of
computing. It was helpful in developing compilers for new hardware, when there was
no tool support on hardware. It is a non-trivial test of the language compiled. A
list of languages having self-hosting compilres today includes 41 names 4. From
this perspective, bootstrapping of CoCoViLa can also be considered a good test
of our technology.</p>
      <sec id="sec-8-1">
        <title>3 see also http://cocovila.github.io/ 4 https://en.wikipedia.org/wiki/Bootstrapping (compilers)</title>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>Summary</title>
      <p>The presented technology is summarised in Fig. 10. It shows the roles of
different experts: domain expert, system engineer, graphic expert and code
developer in a project developed in accordance with this technology. We see that
after the requirements speci cation, developing the knowledge architecture and
components speci cation, one can proceed by developing in parallel components
metainterfaces and graphics as well as a dynamic model. Components code could
be developed in parallel with graphics and metainterfaces as well, but one will
need the dynamic model for writing the user interface component. The most
important role has a system engineer, who performs six steps of the project. Also
coordination of the project as a whole belongs to his role.</p>
      <p>Debugging and testing are not shown in Fig. 10. After developing the static
model, its completeness can be tested on tasks prescribed by the dynamic model
even before the code of components has been developed. After developing the
code of user interface, one can test the interaction of dynamic and static model
even without of other components codes. As usual, repetitions of some steps of
the technology will be needed when errors are detected.</p>
      <p>Acknowledgements
This research was supported by Estonian Research Council institutional research
grant no. IUT33-13, and by the ERDF through the ITC project MBJSDT and
Estonian national CoE project EXCS.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Brambilla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Model-Driven Software</surname>
          </string-name>
          Engineering in Practice.
          <source>Synthesis Lectures on Software Engineering</source>
          , Morgan &amp; Claypool Publishers (
          <year>2012</year>
          ), http://dx.doi.org/10.2200/S00441ED1V01Y201208SWE001
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Engels</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Soltenborn</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wehrheim</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          :
          <article-title>Analysis of UML activities using dynamic meta modeling</article-title>
          . In: Bonsangue,
          <string-name>
            <given-names>M.M.</given-names>
            ,
            <surname>Johnsen</surname>
          </string-name>
          , E.B. (eds.)
          <article-title>Formal Methods for Open Object-Based Distributed Systems</article-title>
          ,
          <source>9th IFIP WG 6</source>
          .1 International Conference, FMOODS 2007, Paphos, Cyprus, June 6-8,
          <year>2007</year>
          ,
          <source>Proceedings. Lecture Notes in Computer Science</source>
          , vol.
          <volume>4468</volume>
          , pp.
          <volume>76</volume>
          {
          <fpage>90</fpage>
          . Springer (
          <year>2007</year>
          ), http://dx.doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -72952-
          <issue>5</issue>
          _
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Fritzson</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Introduction to Modeling and Simulation of Technical and Physical Systems with Modelica</article-title>
          .
          <source>Wiley</source>
          (
          <year>2011</year>
          ), https://books.google.ee/books?id= 413e_
          <fpage>S4DI</fpage>
          -IC
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Grigorenko</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Saabas</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tyugu</surname>
          </string-name>
          , E.:
          <article-title>Cocovila { compiler-compiler for visual languages</article-title>
          .
          <source>Electron. Notes Theor. Comput. Sci</source>
          .
          <volume>141</volume>
          (
          <issue>4</issue>
          ),
          <volume>137</volume>
          {142 (Dec
          <year>2005</year>
          ), http: //dx.doi.org/10.1016/j.entcs.
          <year>2005</year>
          .
          <volume>05</volume>
          .009
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Gronback</surname>
          </string-name>
          , R.C.:
          <article-title>Eclipse Modeling Project: A Domain-Speci c Language (DSL) Toolkit</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          ,
          <volume>1</volume>
          <fpage>edn</fpage>
          . (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Jain</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Modeling &amp;
          <article-title>Simulation Using MATLAB Simulink (With CD )</article-title>
          .
          <source>Wiley India Pvt. Limited</source>
          (
          <year>2011</year>
          ), https://books.google.ee/books?id=qpv9ygAACAAJ
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Karsai</surname>
          </string-name>
          , G.:
          <article-title>Lessons learned from building a graph transformation system</article-title>
          . In: Engels,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Lewerentz</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          , Schafer, W., Schurr,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Westfechtel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B</given-names>
            . (eds.) Graph Transformations and
            <surname>Model-Driven</surname>
          </string-name>
          Engineering - Essays Dedicated to Manfred
          <source>Nagl on the Occasion of his 65th Birthday. Lecture Notes in Computer Science</source>
          , vol.
          <volume>5765</volume>
          , pp.
          <volume>202</volume>
          {
          <fpage>223</fpage>
          . Springer (
          <year>2010</year>
          ), http://dx.doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -17322-6_
          <fpage>10</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lyytinen</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rossi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tolvanen</surname>
          </string-name>
          , J.:
          <article-title>Metaedit+ at the age of 20</article-title>
          . In: Jr.,
          <string-name>
            <given-names>J.A.B.</given-names>
            ,
            <surname>Krogstie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Pastor</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Pernici</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Rolland</surname>
          </string-name>
          , C., S lvberg, A. (eds.) Seminal Contributions to Information Systems Engineering, 25 Years of CAiSE, pp.
          <volume>131</volume>
          {
          <fpage>137</fpage>
          . Springer (
          <year>2013</year>
          ), http://dx.doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -36926-1_
          <fpage>10</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tolvanen</surname>
          </string-name>
          , J.:
          <string-name>
            <surname>Domain-Speci c Modeling - Enabling Full</surname>
          </string-name>
          Code Generation. Wiley (
          <year>2008</year>
          ), http://eu.wiley.com/WileyCDA/WileyTitle/ productCd-0470036664.html
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kotkas</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ojamaa</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grigorenko</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maigre</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harf</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tyugu</surname>
          </string-name>
          , E.:
          <article-title>Cocovila as a multifunctional simulation platform</article-title>
          . In: Liu,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Quaglia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Eidenbenz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Gilmore</surname>
          </string-name>
          , S. (eds.) 4th
          <source>International ICST Conference on Simulation Tools and Techniques</source>
          , SIMUTools '11,
          <string-name>
            <surname>Barcelona</surname>
          </string-name>
          , Spain, March
          <volume>22</volume>
          - 24,
          <year>2011</year>
          . pp.
          <volume>198</volume>
          {
          <fpage>205</fpage>
          . ICST/ACM (
          <year>2011</year>
          ), http://dx.doi.org/10.4108/icst.simutools.
          <year>2011</year>
          .245553
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Maslov</surname>
          </string-name>
          , S.Y.:
          <article-title>Theory of Deductive Systems and Its Applications (Foundations of Computing)</article-title>
          . MIT Press (
          <year>1987</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Mints</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tyugu</surname>
          </string-name>
          , E.:
          <article-title>Propositional logic programming and priz system</article-title>
          .
          <source>J. Log. Program</source>
          .
          <volume>9</volume>
          (
          <issue>2</issue>
          &amp;3),
          <volume>179</volume>
          {
          <fpage>193</fpage>
          (
          <year>1990</year>
          ), http://dx.doi.org/10.1016/
          <fpage>0743</fpage>
          -
          <lpage>1066</lpage>
          (
          <issue>90</issue>
          )
          <fpage>90039</fpage>
          -
          <lpage>8</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Selic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>A systematic approach to domain-speci c language design using UML</article-title>
          .
          <source>In: Tenth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC</source>
          <year>2007</year>
          ),
          <fpage>7</fpage>
          -9
          <source>May</source>
          <year>2007</year>
          ,
          <string-name>
            <given-names>Santorini</given-names>
            <surname>Island</surname>
          </string-name>
          , Greece. pp.
          <volume>2</volume>
          {
          <issue>9</issue>
          .
          <string-name>
            <given-names>IEEE</given-names>
            <surname>Computer</surname>
          </string-name>
          <article-title>Society (</article-title>
          <year>2007</year>
          ), http://dx.doi.org/10.1109/ISORC.
          <year>2007</year>
          .10
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Tyugu</surname>
          </string-name>
          , E.:
          <article-title>Understanding knowledge architectures</article-title>
          .
          <source>Knowledge-Based Systems 19(1)</source>
          ,
          <volume>50</volume>
          {
          <fpage>56</fpage>
          (
          <year>2006</year>
          ), http://www.sciencedirect.com/science/article/pii/ S0950705105000936
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>