=Paper= {{Paper |id=Vol-1354/paper12 |storemode=property |title=Languages, Models and Megamodels |pdfUrl=https://ceur-ws.org/Vol-1354/paper-12.pdf |volume=Vol-1354 |dblpUrl=https://dblp.org/rec/conf/sattose/BaggeZ14 }} ==Languages, Models and Megamodels== https://ceur-ws.org/Vol-1354/paper-12.pdf
             Languages, Models and Megamodels
                                   A Tutorial

                      Anya Helene Bagge1 and Vadim Zaytsev2
                1
                   BLDL, University of Bergen, Norway, anya@ii.uib.no
        2
            University of Amsterdam, The Netherlands, vadim@grammarware.net



       Abstract. We all use software modelling in some sense, often without
       using this term. We also tend to use increasingly sophisticated software
       languages to express our design and implementation intentions towards
       the machine and towards our peers. We also occasionally engage in meta-
       modelling as a process of shaping the language of interest, and in meg-
       amodelling as an activity of positioning models of various kinds with
       respect to one another.
       This paper is an attempt to provide an gentle introduction to modelling
       the linguistic side of software evolution; some advanced users of model-
       ware will find most of it rather pedestrian. Here we provide a summary
       of the interactive tutorial, explain the basic terminology and provide
       enough references to get one started as a software linguist and/or a meg-
       amodeller.


1     Introduction
This paper is intended to serve as very introductory material into models, lan-
guages and their part in software evolution — in short, it has the same role as
the tutorial itself. However, the tutorial was interactive, yet the paper is not:
readers familiar with certain subtopics would have to go faster through certain
sections or skip them over.
    In §2, we talk about languages in general and languages in software engineer-
ing. In §3, we move towards models as simplifications of software systems. The
subsections of §4 slowly explain megamodelling and different flavours of it. The
tutorial paper is concluded by §5.


2     Software Linguistics
Let us start by examining what a language is in a software context.
   In Wikipedia, the concept is described3 as follows:
        Language is the human ability to acquire and use complex systems of
     communication, and a language is any specific example of such a system.
     The scientific study of language is called linguistics.
3
    http://en.wikipedia.org/wiki/Language.
    Even leaving aside the anthropocentricity of this definition, we see that lan-
guages are communication systems — spoken, written, symbol, diagrammatic.
As communication systems, languages have several properties, including struc-
ture, meaning and abstraction.
    Structure, often also referred to as syntax [7], is about how sentences (pro-
grams) of a language are constructed or deconstructed, and in general what
components of sentences (programs) can be identified and how the language al-
lows us to put them together. In natural and software languages, the structure is
often recursive, allowing to create an infinite number of statements of arbitrary
complexity.
    Meaning, also called semantics [12], assigns sense and value to language
constructs — for the sake of simplicity, we mostly assume they are syntacti-
cally correct before being concerned with their meaning; in some rare cases like
automated error correction we could also contemplate the meaning of incorrect
programs. There is usually a tight interplay between structure and meaning, so
that by changing the structure of a sentence, you change its meaning — the
activity commonly referred to as “programming”.
    Abstraction is what allows discussion of arbitrary ideas and concepts, that
may be displaced in time and space. Abstractions allow engineers to reason about
physical systems by focusing on relevant details and ignoring extraneous ones [5].
Of course, the most interesting results are the ones that could not be obtained
from the real system — so, predictions are preferred to measurements [20]. A
crucial feature of natural languages as well as many software languages is the
ability to define and refine abstractions — for instance, in the way this intro-
duction defines English language abstractions for discussing software languages.
    Early written communication (cave paintings) had symbols, but their mean-
ing (if any) remains unknown. Early writing systems used pictures with gram-
matical structure. Such picture is, in fact, a model of a concrete object: a picture
of a bull can confer the idea of doing something with it, but cannot feed you;
one does not simply smoke an image of a pipe. Once used for abstraction, the
symbols can be composed in nontrivial ways. For instance, in hieroglyphics, the
word “Pharaoh” is written as a combination of a duck and a circle, because the
Pharaoh is the son of Ra, since “son” is pronounced similarly to “duck” and Ra
is a god of sun, which is modelled by a circle for its shape [14]. In a similarly
nontrivial way, “a butcher’s” means “a look” in Cockney rhyming slang, since
“look” rhymes with “a butcher’s hook” and “butcher’s” is a shortened version
thereof [19]. Such combinations and combining ways are the main reason new
software languages are difficult to learn, if they are paradigmatically far from
the already familiar languages: the idioms of C are too different from the idioms
of English; and the idioms of Haskell are too different from the idioms of C.
    Languages in software engineering as used in multiple ways. There are natural
languages, which are reused and extended (by jargon) by developers. There are
also formal languages which are also largely reused after their underlying theo-
ries being proposed and developed in fundamental research — essentially they
are the same as natural languages, but much easier for automated processing and
reasoning. Finally, there are also artificial languages which are specifically made
by humans — such as C or Esperanto. Usually all kinds of automation-enabling
languages that are used in construction and maintenance of software, are referred
to as software languages: these are programming languages, markup notations,
application programming interfaces, modelling languages, query languages, but
also ontologies, visual notations with known semantics, convention-bound sub-
sets of natural languages, etc.
    For instance, any API (application programming interface) is a software lan-
guage [1], because it clearly possesses linguistic properties such as:

     API has structure (described in the documentation)
     API has meaning (defined by implementation)
     API has abstractions (contained in its architecture)

    However, API does not typically allow definition of new abstractions. For
classical programming languages, we would have a similar list, but in domain-
specific languages we would have abstractions limited by a particular domain,
not by the system design (which means possibly infinite number of them, even if
the abstraction mechanism is still lacking), while general purpose programming
languages usually leave it to the programmer to define arbitrary abstractions
(though not necessarily abstract over arbitrary parts of the language).


3      Moving to models
A model is a simplification of a system built with an intended goal in mind:
a list of names is a model of a party useful for planning sitting arrangements;
“CamelCase” is a model of naming that compresses multiple words into one. Any
model should be able to answer some questions in place of the actual system [2].
Models are abstractions that can provide information about the consequences of
choosing a specific solution before investing into implementation of the actual
software system [29].

     Typically, a model represents a system.
     Some models represent real systems (programs, configurations, interfaces)
     Some models represent abstract systems (languages, technologies, mappings)
     Some models are descriptive/illustrative (used for comprehension)
     Some models are prescriptive/normative (used for conformance)

   A model may be written (communicated) as a diagram or a text or some other
representation — possibly even as a piece of software that allows to simulate
behaviour. One might draw a model as an ad hoc illustration — similar to a
crude cave painting — but for clarity and ease of communication across time
and space, one may want to use a modelling language such as UML, BNF, XSD,
CMOF, Z, ASN.1, etc.
   Systematically discussing, researching and dissecting software languages has
inevitably led to a special kind of models — called metamodels — that define
software languages. For example, a grammar [36] as a definition of a program-
ming language, is a metamodel, and programs written in such a language, are be-
havioural models conforming to that metamodel. Similarly, a database schema,
an protocol description or an algebraic data type definition are examples of
metamodels, since they all encapsulate knowledge about allowable (grammat-
ical) structures of a software language, each in their corresponding technical
spaces.
    Formally speaking, a metamodel models a modelling language [25], in which
models are written, and such models are told to conform to this metamodel: an
XML file conforms to an XML Schema definition; a Haskell program conforms
to the metamodel of Haskell; a program depending on a library uses function
calls according to its API.


4      Megamodels explain relations between models

A model of a system of models is called a megamodel. For example, the last
paragraph of the previous section is a megamodel (in a natural language), since
it models the relations between software artefacts (model, metamodel, language).
Megamodels are crucial for big-picture understanding of complex systems [4]. In
literature they can be called megamodels [4,16,17], macromodels [28], linguistic
architecture models [15,34] or technology models [22]. Megamodels can be partial
in the sense of not being complete deterministic specifications of underlying
systems [13], and they can also be presented in a way that gradually exposes the
system in an increasingly detailed way [34,23,35].
    A cave painting of a bison may be useful to understand the concept of hunting
by abstracting from the personalities of the hunters and the measurements of
the animal. However, to surface and understand its implications such as the
near extinction and recovery of the species, one must also have models of bison
populations, ecology, human society, USA politics, Native American politics,
and so on — and be able to see how they relate to each other. In the same way,
megamodels can aid in understanding software technologies, comparing them
and assessing the implications of design choices in software construction.


4.1     Informal megamodelling

A cave-painting approach to megamodelling could be as minimalistic as follows:

     draw a diagram with models as nodes
     add relations between them
     describe relations in a natural language

    The focus of this approach is on understanding and communication [30,4]. For
example, many papers, books and specifications in MDE contain an explanation
of the stack of M1, M2 and M3 models (models, metamodels and metameta-
models correspondingly) which positions them with respect to one another by
postulating that models conform to a metamodel and both M2 and M3 conform
to a metametamodel. Such an explanation, as well as its visual representation,
is a megamodel. We have to draw your attention here to the fact that such a
megamodel leaves many questions open and on a certain level of understanding
it is incorrect: many models conform to one metamodel, and many metamodels
can conform to one metametamodel, and the fact that the metametamodel con-
forms to itself, is no more than an implementation detail from MDA. That is the
reason for various more formal attempts to exist to express the same situation
in UML or another universal notation.
     There is a big subset of informal megamodelling techniques referred to as
“natural” [30] — it happens all the time in unstructured environments, whenever
we use conveniently available salt and pepper dispensers as proxies for entities
at a conference banquet discussion, or in general whenever we use throwaway
abstractions to get to the point in a quick and dirty (volatile) way.


4.2     Ad hoc megamodelling

A slightly more detailed and yet still concrete approach is to explain relations
between models and languages by showing mappings between them, without
trying to generalise them to relations. Such mappings are easier to define and
formalise and may be enough to understand the system. Thus, instead of saying
“this model belongs to this language”, we show that there is a tool which processes
that model and that this tool is a software language processor. Usually such
models mix architectural and implementational elements and when it comes to
comprehension, almost impenetrable without extensive study of the system at
hand. Here is an example [32]:




   After some frustration we are free to observe here how S(N ), whatever it is4 ,
becomes GBGF (N ) after a process called “grammar extraction” [33], and that
4
    In fact, S(N ) is a specification of a syntactic notation such as “an Extended Backus-
    Naur Form dialect that uses dots to separate production rules, same level indentation
    to list alternatives, ...” [31].
GBGF (N ) is linked either bijectively or bidirectionally to G0BGF (N ), and all
these boxes titled with symbols, subscripts, dashes and parentheses, are linked
to their counterparts from a similarly looking chain of transformations that seem
to be related to N 0 rather than to N .
    Even with a fair share of guesswork, this megamodel does not immediately be-
stow its observer with any piece of freshly granted knowledge. This megamodel
basically encapsulates everything one could learn from the corresponding pa-
per [32], condensing 17 pages into one diagram. It is more of a visualisation
tactic than a comprehension strategy.
    Many methods of ad hoc megamodelling are transformational: they use a
newly introduced notation, different for each of them, to demonstrate how some
software artefacts get turned into other artefacts. Unlike natural megamodelling,
some ad hoc megamodelling approaches have very clearly defined semantics for
their components instead of a natural language description. Unlike formal meg-
amodelling that we will introduce below, they are typically fairly idiosyncratic
and are not expressive enough to unambiguously model a situation sufficiently
different from the study showcasing their application.

4.3   Instrumental megamodelling
One of the alternative approaches is to rely on some instrumental support: a tool
or a language, perhaps both, that can do what a megamodel should — express
relations between models, model transformations and languages. Hence, by us-
ing such a tool we can focus on providing such descriptions for a given system,
perfecting them, reflecting on their evolution, etc. Committing to a framework
means sacrificing at least some of the flexibility that natural and ad hoc meg-
amodelling provide, in exchange of a much more precise understanding and def-
inition of each component. An instrumental megamodel is not a cave painting
anymore — it is a Latin text. Latin is a language everyone kinda understands,
thus enabling its dissemination to a broader public. It might not be the best
language to deliver you particular ideas, but once you get a hold on its cases,
declensions and conjugations, you can use it again and again for many other
tasks.
    Here is an example megamodel by Favre, Lämmel and Varanovich [15]:
    For a software engineer using such a megamodel “in Latin” means that each
of these components is clickable and resolvable to a (fragment of a) real soft-
ware artefact. In this particular case, the megamodelling language is MegaL5 ,
it supports entities such as “language”, “function”, “technology”, “program”, etc,
and relations such as “subsetOf”, “dependsOn”, “conformsTo”, “definitionOf” and
many others. There are other megamodelling languages: AMMA6 , MEGAF7 ,
SPEM8 , MCAST9 , etc, some people use categorical diagrams, which are closer
to the next kind of megamodelling.

    The process of navigating a megamodel and assigning a story to it, is called
renarration [34]. This technique is needed quite often, since detailed megamodels
can get bulky and rather intimidating — yet the same megamodels are supposed
to be used to simplify the process of understanding a software system or commu-
nicating such an understanding, not to obfuscate it. Indeed, when a megamodel is
drawn step by step with increasing level of detail (or vice verse, in increasing level
of abstraction), it lets the user treat and comprehend one element at a time while
slowly uncovering the intentions behind them. For MegaL, renarration operators
include addition/removal of declarations, type restriction/generalisation, zoom-
ing in/out, instantiation/parametrisation, connection/disconnection and back-
tracking [23].




4.4   Formal megamodelling




Relying on tool support can be nice, but it is even better to be backed up by a
theory that allows you to prove certain properties and verify your megamodels
through solid analysis. Such approaches have rich mathematical foundations and
vary greatly in form and taste. The choice is wide, but let us consider two
different examples a little closer.




5
  MegaL: Megamodelling Language [15].
6
  AMMA: Atlas Model Management Architecture [3].
7
  MEGAF: Megamodelling Framework [18].
8
  SPEM: Software & Systems Process Engineering Metamodel [27].
9
  MCAST: Macromodel Creation and Solving Tool [28].
                                              J.-M. Favre, T. NGuyen / Electronic Notes in Theoretical Computer Science 127 (2005) 59–74       71


                                    example (τ µτ ).
                                       The sequence of greek letters used here above are ambiguous, in particular
                                    because there is no formal rule for the ordering of letters. This is because the
                                    concepts described above corresponds to graph patterns, not simply sequences.
                                    We have identified a lot of interesting patterns that corresponds to known
                                    concepts. Some examples are provided in the next figure.

                                                                                                       τ                           τ
                                          µ τ                        µ τ                       µ                           χ
                                                                                                       τ                           τ
                                         Forward                     Reverse                           Model                     Metamodel
                                        engineering                 engineering                      / System                     / Model
                                      transformation              transformation                   co-evolution                 co-evolution
                                                                        τ                                              τ
                                       µ τ                     µ τ           µ τ               µ τ             µ τ
                                         τ                                                                 τ
                                       System-driven              Model-driven                        Round-trip evolution
                                         evolution                 evolution

                                          µ                                                                         χ
                                                                  µ ε                          µ τ                   µ τ                χ τ
                                                  ε
                                      χ           µ                                        χ
                                                                             χ
                                                                                                                  Metamodel            Metamodel
                                                                                           Metamodel
                                         Metamodel/              Reflexive                                          reverse            inference
                                                                                           engineering
                                      conformantModel            metamodel                                        engineering

                                                        Fig. 8. MegaModel: Examples of interesting mega-patterns (τ )
                        Suppose that instead of trying to come up with all kinds of relations that
                   system fragments can have among themselves, we limit the relations to the most
                   essential ones.  5 SuchConclusion
                                                  relations can be well-understood and defined with relative
                   ease for any Inparticular
                                       this paper wetechnological          space.
                                                        introduced a megamodel        We can
                                                                                  to describe MDE refer  to Jean-Marie
                                                                                                     concepts and their     Favre’s
                   relations [16,14]:       µ — This
                                    relationships.   representationOf,            —inelementOf,
                                                           megamodel is summarized                       δ —presented
                                                                                         Figure 9. The view     decomposedIn, χ
                                    here corresponds has been simplified for the purpose of this paper. A more
                   — conformsTo,          τ transformedTo.
                                    complete   view making explicitThen,       we can between
                                                                       the relationships  on onethe  hand   affordthe
                                                                                                       megamodel,    to define each
                   of them for our        particular
                                    set theory             domaintheory
                                                 and the language      (e.g.,
                                                                            cangrammarware,
                                                                                 be found in [8].     XML, Cobol, EMF); and
                   on the other hand           see
                                        In fact,     megapatterns
                                                 by using   the megamodelin wethem     [16]:
                                                                               discovered  that it was much more pow-
                                    erful than expected. It really helped us to connect concepts and technologies
                        For instance,
                                    that were apparently disconnected. Surprisingly an
                                             in   the    top   left  corner     we   see        entity (say,
                                                                                           we discovered         X)of that models
                                                                                                          that a lot
                   another entity   known(say,
                                            issues   ), while
                                                  Y could        X as
                                                            be model  is graph
                                                                         also patterns.
                                                                                being transformed           to Y . This is classi-
                                                                                          And we are still discovering
                   cal forward engineering, as opposed to reverse engineering where X models Y
                   while the system Y is being transformed into the model X [6]. By now you can
                   recognise
D.3 Complex heterogeneous        the diagram
                                           model of        the original taxonomy by Chikofsky and Cross as an
                                                      mappings
                   ad hoc megamodel, which also contains much more details than such a pattern,
Simple heterogeneous model mappings defined above give rise to a functor
                   which is why
µ : Modmap ! MModmap.              Thethegoaltext
                                               of thisof section
                                                          the paper      is an important
                                                                  is to outline,  semi-formally,   renarration of it. A similar
how this description can be extended for complex mappings involving derived X is being transformed
                   pattern    is  displayed        in  the    right   bottom      corner     where
elements.          into Y while also conforming to it — this could be grammatical inference, or
     Let QL be a constructing
                   query language,and  thatXML         schema of
                                              is, a signature     from    a selection
                                                                     diagram              of documents,
                                                                                 operations    over             or deriving a par-
                                                  QL
graphs. It defines tiala graph   MModmap
                         metamodel                      of metamodels
                                          from a modelbase,              orand    their complex
                                                                             anything       of  that   kind.    All  megapatterns
mappings described in Sect. C. Similarly, we have graph ModmapQL of models
                   are   simplifications       of   real   scenarios     and
and their complex mappings like, e.g., pairs mappings (f, v ) and (g, w ) shown
                                                                               as  such,    they    are  in  some    sense “wrong”
                   —    as are  all  models.
in Fig. 41(b). (Recall that we actually deal with commutative square diagrams:
f ; tA = tm ; v and g; tAs
                         B =another
                             tM ; w .) example of formal megamodelling, here is Diskin’s definition of
                   complex
     By encapsulating          heterogeneous
                          typing   mappings in- model mappings [9]:
side nodes, and metamodel mappings inside
arrows, we may rewrite the upper half of                     v            w
                                                      A (====== O ======) B
diagram Fig. 42(a) as shown in Fig. 43.                6            6             6
    A warning about arrow notation is in          :µQL         :µQL         :µQL
order. Graph mappings in Fig. 38(c) are                •    f  v
                                                              :v    •      w
                                                                         g:w     •
                                                     A:AA h⌘⌘⌘⌘ M :O O ⌘⌘⌘⌘i B:B  B
denoted by double arrows to distinguish
them from links (single-line arrows), and di- Fig. 43: Encapsulation of complex
                      Single-line
agrams of graph mappings            arrows
                            are triple      are heterogeneous
                                       arrows.   links, double mappings
                                                                 arrows are graph mappings, triple arrows
Complex mappings areadd
                      diagrams
                         one moreof    graph mappings that encapsulate type mappings inside nodes
                                    dimension
of encapsulation — derived elements, and hence mappings v , w should be de-
noted by triple arrows while mappings-diagrams f :vv , g:w w by quadruple arrows.
To avoid this monstrous notation, we sacrifice consistency. It is partially restored
by using bullet-end arrows for links: the latter may be thought of as arrows with
“zero-line” bodies.
    Thus, similarly to simple heterogeneous model mappings, complex ones con-
tain complex metamodel mappings and hence there is a graph morphism

                         µQL : ModmapQL ! MModmapQL

(vertical links in Fig. 43 are its instances). We want to turn the two graphs above
into categories (and µQL into a functor), i.e., we need to define composition of
complex mappings.
and metamodel mappings inside arrows. Even this extremely condensed tile di-
agram is a simplification — since v and w are complex mappings, they should
be drawn as triple arrows, while f : v and g : w become quadruple arrows.
Still, the diagram itself remains structurally simple while still being unshakably
formal. If we provide an accurate definition of our language’s syntax, composi-
tionality of metamodel mappings (a routine categorical process of defining Kleisli
triples [24]), this graph turns into a (Kleisli) category. By going through some
trouble or by limiting ourselves to monotonic queries, we can do the same for
model mappings (not just metamodel mappings) [9].
    Within this approach, each megapattern — divergence, convergence, revi-
sion of match, revision of update, improvement of match, conflict resolution
— forms a tile of four involved software artefacts and labelled arrows between
some of them. Then, tile algebra provides uniform rules to compose such tiles
together [10].


4.5    Space megamodelling

Recall that a metamodel is a model of a language. (The previous sentence is a
megamodel). Then, a megamodel is a model of a technology, since it shows how all
involved fragments fit together to facilitate the process. In the previous section
we have also made acquaintance with megapatterns — models of processes within
a technology. Just one more step brings us to a abstract megamodel of an entire
technological space [21]. For example [38]:
                                                                                                                                       m
                                                                                                                                            2m
                                                                       structural editing                                                        tra
                                                                                                                                                       ns
                                                                                                                                                            fo
                                                                                                                                                              rm
                     ct




                                                                                                              visualise
                                      Lex                                           Ast                                             Dia                            at
                   ra




                                                                                                                                                                        io
                                                                                                                                                                             n
                   st




                                  (lexical model)                      (abstract syntax tree)                                   (diagram)
                                                                                                               serialise
               Ab




                                                                              implode

                                                                                             explode
                                    extract

                                               flatten




                                                                                                                                            m2m
                                                                                                              ation
                      ss




                                                              parse
                    le




                                     TTk                                             Cst                                            Gra
                                                                                                           form
                   ut




                                  (typed tokens)                       (concrete syntax tree)                                (graph model)
                                                             unparse
                 yo




                                                                                                        tra n s
               La




                                               format




                                                                                             format




                                                                                                                                             format
                                    strip




                                                                              strip




                                                                                                                                strip
                                                                                                       code




                                                              parse
                    ut




                                                                                                                                                                     ing




                                      Tok                                            Ptr                                            Dra
                                                                                                              g
                  yo




                                                                                                           torin




                                                                                                                                                               l edit




                                     (tokens)                                (parse tree)                                   (vector drawing)
                                                             unparse
                La




                                                                              disambiguate



                                                                                                        refac




                                                                                                                                recognise



                                                                                                                                                             visua
                                    tokenise
                                               concat




                                                                                                                                             render




                                                         scannerless parse
                                       Str                                           For                                             Pic
                     w




                                                                                                                                                                  ing
                                                                                                               ing
                   Ra




                                     (string)                                (parse forest)                                (rasterised picture)
                                                             unparse
                                                                                                                                                              draw
                                                                                                         filter




                         te x t
                                  editin
                                               g
                                  Textual                                Structured                                         Graphical

               Fig. 1. Bidirectional megamodel of parsing. Dotted lines denote mappings that rely on
   This megamodel         models
           either lexical or           definitions; solid that
                             syntactic everything                 can universally
                                                          lines denote possiblydefined
                                                                                  happen     when you are
                                                                                       mappings.
           The loops are examples of transformations.
doing parsing,  unparsing, pretty-printing, formatting, templating, stropping, etc.

               4     Artefacts and Mappings
               Let us first introduce the kinds of artefacts we will use for the remainder of the
               paper:
                • Str — a string.
                • Tok — a finite sequence of strings (called tokens) which, when concatenated,
                   yields Str. Includes spaces, line breaks, comments, etc — collectively, layout.
                • TTk — a finite sequence of typed tokens, with layout removed, some classified
                   as numbers of strings, etc.
                • Lex — a lexical source model [28,29] that addes grouping to typing; in fact a
                   possibly incomplete tree connecting most tokens together in one structure.
                • For — a forest of parse trees, a parse graph or an ambiguous parse tree
                   with sharing; a tree-like structure that models Str according to a syntactic
Each element here is not resolvable to a concrete artefact, but rather to a sub-
space with its own stack of models and metamodels. For example, a concrete
syntax tree (Cst) element found near the centre of the megamodel, represents
concrete syntax trees, their definition as a concrete grammar, and all the tech-
niques and tools that create, transform and validate them. A vector drawing
(Dra, think SVG or GraphML), on the other hand, implies having a metamodel
defining graphical elements, their coordinates and other attributes, as well as
transformations such as a change of colour or realignment.
    When renarrated, such a megamodel commits to becoming a representation
of one particular technology, hence removing some of the elements that do not
exist there and detailing the others so that they become resolvable [35]. We can
also use the megamodel as a classificatory tool to look at existing techniques and
positioning them with respect to others [37]. For example, what is “model-to-
text transformation” commonly used in modelware frameworks and papers and
deliberately omitted from being explicitly mentioned on the megamodel? In fact,
it is a very particular path through this megamodel starting at Ast or Dia and
going to Lex (commonly referred to as a “template” in this particular scenario)
and then dropping straight to Str.
    One can reasonably claim that such megamodels are in fact ontologies [8].



5      Conclusion


The tutorial was highly interactive and its biggest contribution to SATToSE
was the discussion. This paper is a humble attempt to summarise (some of the)
issues raised during both lecturing10 and the hands-on parts, and provide bibli-
ographical pointers for the most interested participants. There are many issues
in megamodelling that we did not sufficiently cover — in particular, modelling
the very nature of modelling [25,26] and taking both ontological and linguistical
aspects into account [20,11,8].
    Language is an important instrument of structured and meaningful com-
munication, whether we use natural languages to convey information or create
artificial ones tailored to the domain. We model languages with metamodels,
since they are models of how software models can be put together. In practice,
metamodels take many different forms such as programming language grammars,
UML domain models, XML schemata and document types, library API defini-
tions. Megamodels are used to model software technologies as systems of models,
aimed first and foremost at understanding software systems, languages, tools and
relations between them. Megamodelling makes relations explicit, identifies roles
that software artefacts play and thus helps to understand technologies, compare
them, validate, debug and deploy in a broad sense.

10
     Slides: http://grammarware.github.io/sattose/slides/Bagge.pdf.
References
 1. T. Bartolomei, K. Czarnecki, R. Lämmel, and T. van der Storm. Study of an
    API Migration for Two XML APIs. In SLE, volume 5969 of LNCS, pages 42–61.
    Springer, 2010.
 2. J. Bézivin and O. Gerbé. Towards a Precise Definition of the OMG/MDA Frame-
    work. In ASE, page 273. IEEE CS, 2001.
 3. J. Bézivin, F. Jouault, P. Rosenthal, and P. Valduriez. Modeling in the Large and
    Modeling in the Small. In MDAFA, volume 3599 of LNCS, pages 33–46. Springer,
    2004.
 4. J. Bézivin, F. Jouault, and P. Valduriez. On the Need for Megamodels. OOPSLA
    & GPCE, Workshop on best MDSD practices, 2004.
 5. A. W. Brown. Model Driven Architecture: Principles and Practice. SoSyM,
    3(3):314–327, 2004.
 6. E. J. Chikofsky and J. H. C. II. Reverse Engineering and Design Recovery: A
    Taxonomy. IEEE Software, 7(1):13–17, 1990.
 7. N. Chomsky. Syntactic Structures. Mouton, 1957.
 8. C. Coral, R. Francisco, and P. Mario. Ontologies for Software Engineering and
    Software Technology. Springer, 2006.
 9. Z. Diskin. Model Synchronization: Mappings, Tiles and Categories. In GTTSE,
    volume 6491 of LNCS. Springer, 2011.
10. Z. Diskin, K. Czarnecki, and M. Antkiewicz. Model-versioning-in-the-large: Alge-
    braic Foundations and the Tile Notation. In ICSE CVSM, pages 7–12. IEEE CS,
    2009.
11. D. Djurić, D. Gašević, and V. Devedžić. The Tao of Modeling Spaces. JOT,
    5(8):125–147, 2006.
12. M. Erwig and E. Walkingshaw. Semantics First! In SLE’11, pages 243–262.
    Springer, 2012.
13. M. Famelis, R. Salay, and M. Chechik. Partial Models: Towards Modeling and
    Reasoning with Uncertainty. In ICSE, pages 573–583. IEEE, 2012.
14. J.-M. Favre. Megamodelling and Etymology. A story of Words: from MED to MDE
    via MODEL in five millenniums. In GTTSE, number 05161 in Dagstuhl, 2006.
15. J.-M. Favre, R. Lämmel, and A. Varanovich. Modeling the Linguistic Architecture
    of Software Products. In R. B. France, J. Kazmeier, R. Breu, and C. Atkinson,
    editors, MoDELS, LNCS, pages 151–167, 2012.
16. J.-M. Favre and T. NGuyen. Towards a Megamodel to Model Software Evolution
    through Transformations. ENTCS, 127(3), 2004.
17. R. Hebig, A. Seibel, and H. Giese. On the Unification of Megamodels. EC-EASST,
    42, 2011.
18. R. Hilliard, I. Malavolta, H. Muccini, and P. Pelliccione. Realizing Architecture
    Frameworks through Megamodelling Techniques. In ASE, pages 305–308, 2010.
19. J. Jones. Rhyming Cockney Slang. Abson Books, 1971.
20. T. Kühne. Matters of (Meta-)Modeling. Software and Systems Modeling, 5(4):369–
    385, 2006.
21. I. Kurtev, J. Bézivin, and M. Akşit. Technological Spaces: an Initial Appraisal. In
    CoopIS, DOA, 2002.
22. R. Lämmel. Programming Techniques and Technologies. http://softlang.
    wikidot.com/course:ptt13, 2013.
23. R. Lämmel and V. Zaytsev. Language Support for Megamodel Renarration. In
    XM, volume 1089 of CEUR, pages 36–45. CEUR-WS.org, Oct. 2013.
24. E. Manes. Algebraic Theories. Graduate Text in Mathematics. Springer, 1976.
25. P.-A. Muller, F. Fondement, and B. Baudry. Modeling Modeling. In MoDELS,
    LNCS, pages 2–16, 2009.
26. P.-A. Muller, F. Fondement, B. Baudry, and B. Combemale. Modeling Modeling
    Modeling. Software and Systems Modeling, 11(3):347–359, 2012.
27. Object Management Group. Software & Systems Process Engineering Metamodel
    (SPEM). Language Specification, OMG, 2007.
28. R. Salay, J. Mylopoulos, and S. Easterbrook. Using Macromodels to Manage Col-
    lections of Related Models. In CAiSE, pages 141–155. Springer, 2009.
29. B. Selic. The Pragmatics of Model-Driven Development. IEEE Software, 20(5):19–
    25, 2003.
30. Z. Zarwin, J.-S. Sottet, and J.-M. Favre. Natural Modeling: Retrospective and
    Perspectives an Anthropological Point of View. In XM’12, pages 3–8. ACM, 2012.
31. V. Zaytsev. BNF WAS HERE: What Have We Done About the Unnecessary
    Diversity of Notation for Syntactic Definitions. In SAC PL, pages 1910–1915.
    ACM, Mar. 2012.
32. V. Zaytsev. Language Evolution, Metasyntactically. EC-EASST; Bidirectional
    Transformations, 49, 2012.
33. V. Zaytsev. Notation-Parametric Grammar Recovery. In LDTA. ACM DL, June
    2012.
34. V. Zaytsev. Renarrating Linguistic Architecture: A Case Study. In MPM, pages
    61–66. ACM DL, Nov. 2012.
35. V. Zaytsev. Understanding Metalanguage Integration by Renarrating a Techni-
    cal Space Megamodel. In GEMOC, volume 1236 of CEUR, pages 69–77. CEUR-
    WS.org, Sept. 2014.
36. V. Zaytsev. Grammar Zoo: A Corpus of Experimental Grammarware. Fifth Special
    issue on Experimental Software and Toolkits of Science of Computer Programming
    (SCP EST5), 98:28–51, Feb. 2015.
37. V. Zaytsev and A. H. Bagge. Modelling Parsing and Unparsing. In Second Work-
    shop on Parsing at SLE 2014, Aug. 2014. Extended Abstract.
38. V. Zaytsev and A. H. Bagge. Parsing in a Broad Sense. In MoDELS, volume 8767
    of LNCS, pages 50–67. Springer, Oct. 2014.