<!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-Driven Development of Mobile Applications: Towards Context-Aware Apps of High Quality ?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gabriele Taentzer</string-name>
          <email>taentzer@informatik.uni-marburg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Steffen Vaupel</string-name>
          <email>svaupel@informatik.uni-marburg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Philipps-Universität Marburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>17</fpage>
      <lpage>29</lpage>
      <abstract>
        <p>Rapidly increasing numbers of applications and users make the development of mobile applications to one of the most promising fields in software engineering. Due to short time-to-market, differing platforms and fast emerging technologies, mobile application development faces typical challenges where model-driven development (MDD) can help. An infrastructure for MDD has a high potential for accelerating the development of software applications. While just modeling the applicationspecific data structures, processes and user interfaces, runnable apps can be generated for multiple platforms such as Android and iOS. Hence, MDD can lift software development to a higher abstraction level leaving all technical details to the generators. Moreover, the domain-specific model of a mobile application can be the starting point for validation and verification based on formal models. In this paper, we consider the state-of-the-art in MDD of mobile applications and consider future research directions such as the MDD support for higher mobility in changing contexts, a combination of sensors, and augmented reality. Moreover, we discuss quality assurance of mobile applications.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>The use of mobile applications has become an indispensable part of daily life.
This has already and will lead to rapidly increasing numbers of applications
and users that make the development of mobile applications to one of the most
promising fields in software engineering. Mobile application development faces
several specific challenges that come on top of commonplace software
production problems. Popular platforms differ widely in hardware and software
characteristics and typically show short life and innovation cycles with considerable
changes. The market often requires that apps must be available for several
platforms which makes a very time and cost-intensive multiple platform
development a necessity. Available solutions try to circumvent this problem by using
web-based approaches, often struggling with restricted access to the technical
equipment (e.g. sensors) of the mobile device and making less efficient use of
the device compared to native apps. Furthermore, web-based solutions require
an app to stay on-line more or less permanently which may cause considerable
costs and usability restrictions. Model-driven development (MDD) can help to
improve this situation by a faster and easier development process of native apps
and easier adaptability to new features of underlying platforms. Mobile apps
are modeled in a modeling language focusing on main system aspects being
enough to automatically generate platform-specific code. Hence, MDD allows to
develop applications on a higher abstraction level, neglecting technical details.
Furthermore, code quality may improve since code can be generated according to
standards. In addition, the validation of app models w.r.t. system requirements
may be facilitated by deducing formal models on a similar abstraction level.</p>
      <p>The heart and soul of model-driven development is the domain-specific
modeling language (DSML). Our developed DSML covers three aspects of mobile
apps: its data entities and relations, its behavior including data management,
access of sensors, use of other apps, etc., and its user interface. The design of our
modeling language follows the credo: “Model as abstract as possible and as
concrete as needed.” This means the following: Standard solutions are modeled very
abstractly while more specific solutions are modeled in more details. E.g. data
management by the usual CRUD functionality (using create, read, update, and
delete operations) may be modeled by one predefined model element type while
application-specific behavior is specified on the level of usual control structures.</p>
      <p>
        To efficiently work with the DSML, we provide an Eclipse-based tool
environment consisting of a graphical editor with three different views for data, behavior
and user interface models as well as two code generators to Android [
        <xref ref-type="bibr" rid="ref13 ref22 ref6">13, 22, 6</xref>
        ]
and iOS [
        <xref ref-type="bibr" rid="ref15 ref5">15, 5</xref>
        ]. Before developing these two code generators, we studied the
design principles of mobile apps in Android and iOS and found a lot of
commonalities. The idea behind this work is to develop apps for different platforms as
similar as adequate. It is possible to use the same overall architecture
independent of the chosen platform. We demonstrate the potentials and limits of our
MDD approach at a small example.
      </p>
      <p>Considering our approach to MDD of mobile apps, the following issues are
still open: (1) Due to spatial movement, mobile apps offer new possibilities to
interact with the environment: They support an increasing variety of sensors
such as cameras, global positioning system (GPS), compass, etc. which can be
advantageously used to position a mobile device and to inform the user about
its position. These capabilities are especially interesting for augmented reality
(AR) and navigation in space. (2) Mobile applications claim to operate reliably
during spatial movement, however, developers have to deal with the effects of
changing environmental contexts. One of the most important contexts is the
connectivity of mobile devices. Since mobile applications are increasingly used
as front-ends of transaction systems, they have to be designed for being able to
deal with intentional or accidental loss of connection. In order to support higher
mobility - in the sense that operations may execute across the boundaries of
changing network states - problems and requirements for context-aware
architectures of mobile applications are considered. We discuss how these issues may
be supported by model-driven development as well.</p>
      <p>A faster and easier development of mobile apps is nothing if their quality
cannot be assured. We discuss what software quality means for mobile apps and
what kinds of quality assurance techniques may be promising.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Modeling Mobile Applications</title>
      <p>The core of an MDD infrastructure is the domain-specific modeling language. It
is used to model the specific aspects of applications in a so-called app model. This
model is platform-independent and the input to available code generators, here,
Android and iOS. The generator results are platform-specific software projects
containing runnable apps. For an overview see Figure 1.</p>
      <sec id="sec-2-1">
        <title>Android code generator</title>
      </sec>
      <sec id="sec-2-2">
        <title>Android project</title>
        <p>instance of</p>
        <sec id="sec-2-2-1">
          <title>Modeling language</title>
        </sec>
        <sec id="sec-2-2-2">
          <title>App model</title>
        </sec>
        <sec id="sec-2-2-3">
          <title>Model editor</title>
          <p>iOS code
generator</p>
          <p>iOS
project</p>
          <p>
            An app model consists of three sub-models: the data model, the process model
to describe the app behavior, and the graphical user interface (GUI) model.
In the following, we focus on the main language features. A detailed language
definition can be found in [
            <xref ref-type="bibr" rid="ref28">28</xref>
            ].
          </p>
          <p>The data model contains the typical elements of object-oriented data
modeling like classes, attributes, aggregations, associations, etc. It is not only used
to generate the underlying data access objects (DAOs) but also determines the
design of the user interface that is concerned with data input and output.</p>
          <p>The GUI model defines the graphical user interface of an app. It contains
pages, style settings, and menus. The page type indicates the purpose of the
page (e.g. to select a processor or to edit and view data). Thus, app modelers
describe the required user interface just by selecting a page type (e.g., EditPage
or ViewPage) and the code generator deduces the detailed structure of the
interface (e.g. labels, edit and text fields, check boxes, etc.) by consulting the data
model.</p>
          <p>The process model defines the behavior of an app. This model part is
structured in processes, including various types of sequentially performed tasks. A
number of tasks are pre-defined such as tasks to create, read, update and delete
data objects. The process model may refer to the data types of the data model
and invoke pages of the GUI model; hence, it uses the other two model parts.</p>
          <p>PhoneBook
allPersons
0..*</p>
          <p>Person
ForenameB:BEString
SurnameB:BEString
MobileNumberB:BEString
OfficeNumberB:BEString
callMobileNumber
toString
address
0..1</p>
          <p>Address
CityB:BEString
ZIPB:BEString
StreetB:BEString
NumberB:BEString</p>
          <p>In the following, we consider the app model of a simple phone book app. This
app shall support the management of personal contacts as well as the search for
phone numbers and the set up of a phone call. A simple data model is depicted
in Figure 2. Contact data is structured in classes Person and Address. The class
PhoneBook is just a container for Persons and not intended to be viewed.</p>
          <p>The modeled user interface of our phone book app is shown in Figure 3.
This part of the app model is pretty simple, it just contains a style setting, a
menu, and five pages, namely a ProcessSelectorPage, an EditPage, a ViewPage, a
SelectableListPage for Person objects, and a MapPage for Address objects. Note
that we just add these pages to the model and use them to specify behavior but
do not specify their layout.
Main
MainProcesses
ProcessesOverview : ProcessSelectorPage
CRUDPerson , SearchPerson , CallPerson , ShowPersonAddressOnMap , NearToMe
CRUDPerson
CRUDPerson
ALL</p>
          <p>Person
(a) Main Process
(b) CRUD Process
CallPerson
PersonSearchPattern</p>
          <p>PersonResultList</p>
          <p>SelectedPerson
CreatePersonSearchPattern
Person
PersonSearchPattern : Person</p>
          <p>ReadAllPersons
PersonSearchPattern : Person
PersonResultList : Person</p>
          <p>ChoosePersonFromResultList
PersonResultList : Person
SelectPerson
SelectedPerson : Person</p>
          <p>CallPerson
CALL
callMobileNumber</p>
          <p>SelectedPerson : Person
(c) Call Person Process</p>
          <p>The behavior of the phone book app is modeled by a process selector as main
process that contains processes for all use cases provided. Figures 4(a) and 4(b)
show processes Main being a process selector and CRUDPerson covering the whole
CRUD functionality for contacts. Figure 4(c) shows how to connect to a phone
app to call a person. After searching for a person, operation callMobileNumber()
is invoked on the selected Person object. Just a few lines of code (not shown)
are needed to start the corresponding Android activity or iOS service. I.e. the
operation is implemented manually.</p>
          <p>Figure 5 shows selected screen shots of the phone book app, already
generated by our Android generator. Little arrows indicate the order of views shown.
The first sub-figure (Figure 5(a)) shows the main menu containing a standard
CRUD process (Manage Person) to create, edit, and delete persons. The
standard behavior and user interface for this task have been generated from a simple
CRUD process (see Figure 4(b)) which the app modeler has created before.
Moreover, the app considers the user location context to find contacts near the
current location of the user (Figure 5(b)). Phone numbers are connected with
an installed phone app in such a manner that whenever the user has selected a
phone number, it automatically starts dialing (Figure 5(c)).
3</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Tool Support</title>
      <p>
        The modeling language is defined on the basis of the Eclipse Modeling Framework
(EMF) [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]; therefore, model editors may be textual (e.g. Xtext [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]) or graphical
(e.g. Graphical Modeling Framework (GMF) [
        <xref ref-type="bibr" rid="ref16 ref25">16, 25</xref>
        ]). A GMF-based graphical
editor is currently provided.
      </p>
      <p>
        Two code generators are available, one for Android [
        <xref ref-type="bibr" rid="ref13 ref22 ref6">13, 22, 6</xref>
        ] and one for iOS
[
        <xref ref-type="bibr" rid="ref15 ref5">15, 5</xref>
        ]. Both code generators can process the same platform-independent app
(a) Main Menu with Manage Persons Process (CRUD functionality)
(b) Persons Location Process
(c) Call Person Process
model and generate apps running directly on Android and iOS devices. They
are written with Xtend [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] in a template-based style.
      </p>
      <p>All the generated mobile apps have the following overall, platform-independent
architecture: The architecture of generated mobile apps reflects the separation of
data, process, and GUI aspects in app models leading to a model-view-controller
(MVC) architecture. Since we generate data-oriented mobile applications, the
architecture of each generated mobile app has a data layer. This layer contains the
modeled data entities (e.g., persons and addresses) and provides functionality to
serialize and deserialize these objects. The data layer forms the model of the
application. The controller layer implements the behavior specified by the process
model, i.e., it holds the application logic. It is the intermediary layer between
the model and the view. The controller invokes the interactive user dialogs and
processes events returning from user dialogs. The view layer provides all dialogs.
This layer is most platform-specific because it uses the graphical components
provided by the envisioned platform. These dialogs do not contain any
calculations and navigation logics (except of input validation), and return all events to
the controller. Finally, the architecture of a generated mobile app implements
a transaction concept. A process invoked by the initial process selector dialog
opens a transaction based on the data layer. If the user returns to this initial
process selector dialog by confirming all steps, this transaction is committed.
Otherwise, the user can cancel the transaction at any passing dialog, and the
changes made are consequently lost.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Modeling Contextual Aspects</title>
      <p>
        Mobile applications change contexts as no other type of application does. A
context can be any information that can be used to characterize the situation of
a person, place, or object that is considered relevant for the interaction between a
user and an application. An app is context-aware if it uses the context to provide
relevant information and/or services to the user [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Besides more traditional
contexts like user contexts (e.g. roles concept) and platform environments (e.g.
display size) [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] being already supported by our approach, we will focus on the
use of context information for navigation and travel now. Apart from this, we
point out the dangers of changing contexts.
4.1
      </p>
      <p>Using context information for navigation and travel
Most of the apps for navigation and travel use the GPS to localize a mobile
device. For example, a public transport app can dynamically list the nearest
bus stop from which a bus will leave. Such a context-aware app uses the GPS
position and the time of the request for calculating the next reachable connection
and departure point. Indoor navigation is more challenging, because GPS is
usually not available inside a building. Hence, we developed a prototype app (cf.
screen shots in Figure 6) that combines different sensors (Barometer, Compass,
WLAN Access Points, Camera &amp; QR-Codes) to get a more accurate positioning
in buildings. Additionally, the indoor navigation app provides different methods
of sensor processing (trilateration, distance comparison, field intensity, weighted
average) showing advantages/disadvantages in accordance with the
buildingspecific installation of access points.</p>
      <p>
        Another application of combined sensor information is related to augmented
reality (AR): AR uses the built-in camera to recognize objects and to augment
the live view with different types of virtual objects. This is usually very
processorintensive and mobile devices often have limited processor capacity. Hence, the
recognition and augmentation of many objects being close together is not
feasible since the device cannot compare all trained patterns with the current view
captured from the camera in an acceptable time. In order to circumvent this
problem, the number of patterns can be reduced through an accurate
positioning of the device. For example, an AR application is used to augment exhibits in
a museum. The accurate positioning of the device inside the building (floor and
room) can reduce the amount of data that must be processed (location-based
filtering). This approach was tested in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
(a) Main Menu
(b) Sensor data
      </p>
      <p>(c) Map view and position</p>
      <p>
        This way of mobility-related interaction with the environment is not yet fully
capable in the DSML. It is intended to use the realized prototypes for extending
the DSML as well as the code generators in an agile way [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
      </p>
      <p>Modeling context-aware apps Although there are no pre-defined modeling
elements at the moment to model context-awareness, it is possible to model a
context-aware app with the standard modeling elements. Our DSML already
provides full access to the device sensors. Focusing on data-driven apps, we can
demonstrate the location-based filtering of data that is already covered by our
MDD approach. The phone book app contains a Process Near to me. This process
uses the location context of the device (user) and filters the addresses of contacts
accordingly. Only contacts within a given radius appears on the list. Thus, the
list of contacts depends on the location of the device.
4.2</p>
      <p>
        Dangers of changing contexts
Mobility and changes of contexts caused thereby can also be a danger. The
changing context, especially the connection context, usually makes mobile
applications with standard architectures non-operable in off-line situations. A look
at real-world applications gives evidence that application developers hardly
realize connection-aware mobile applications. None of the available apps for on-line
shopping supports transactions (such as ordering of products) in a disconnected
mode although a sudden stop in the middle of an ordering process may prevent
potential customers from eventually ordering selected products. To construct
mobile applications that are on-line and off-line capable, the applications have
to have a context-aware architecture supporting additional architectural
components like replication, synchronization and local transaction managers.
Providing a context-aware app architecture Processes that use connecting
operations are, in general discarded in an off-line context. These may be used
anyway if the conflict-free reintegration of locally modified data can be
guaranteed. Certain mobile transaction models can coordinate isolated changes of local
copies. Two of them are especially interesting: The Keypool transaction model
[
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ] uses the independence of the individual instances of a class. The basic idea
of the Keypool method is to split the entire dataset into subsets that are
distributed among the participating mobile clients. Operations do not have to be
restricted. The Escrow transaction model [
        <xref ref-type="bibr" rid="ref21 ref24">24, 21</xref>
        ] is suitable for accessing and
modifying aggregate data. The basic idea of the Escrow method is to restrict
the set of transactions and/or the domains of their arguments for off-line
transactions. Restrictions have to be set carefully to guarantee that the participating
transaction is conflict-free on the one hand and to optimize the goodput (i.e.,
the number of successfully executed operations) on the other.
      </p>
      <p>
        Usually, developers have to acquire a lot of knowledge about mobile
transaction processing before they are able to design on-line and off-line capable
applications. Our basic approach is the provision of code generators that can
create mobile applications with such a generic context-aware app architecture
[
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. Modelers add only a few parameters to the app model (e.g. which
processes are conflicting, which mobile transaction model should be used, etc.) and
the code generators create a mobile app with corresponding replication, off-line
transaction management, and (conflict-free) synchronization.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Quality Assurance of Mobile Applications</title>
      <p>As for any kind of software system, the quality notion for mobile apps covers
various quality aspects such as correct functionality, reliability, security, usability,
maintainability, just mention a few. Since correctness and reliability are usually
the most important ones, we concentrate on those in the following.</p>
      <p>In model-driven software development, software quality is extremely
dependent of the platform-independent model since the code generator takes it
directly as input. Hence, the generated code is not considered directly but the
input model is analyzed instead for discovering potential problems. Moreover,
the actual app behavior can be analyzed during runtime as possible for apps
being classically developed.
5.1</p>
      <p>Quality of app models
To analyze the quality of app models, syntax checks such as smells or translations
to formal models are possible approaches. The second is especially interesting to
verify semantical properties. Moreover, an app model can be used to generate
skeleton code for test cases, not necessarily for the generated application code
but for separately implemented, i.e., non-generated code.</p>
      <p>Smells represent modeling knowledge being condensed from developer
experiences; they point to model parts that are suspicious w.r.t. quality. This means
that modelers should have a look at smelling model parts and should decide
which have to be improved. Model smells may produce code smells, i.e.
generated code parts do not have high quality. A model smell in an app model
may point to, e.g., processes with too many tasks leading to loosely structured
services.</p>
      <p>The translation of an app model to a formal model of choice can help to
find potential reliability problems. Interesting questions are for example: Which
processes are potentially in conflict? Which objects are potentially accessed
concurrently? Can the modeled processes run into deadlocks? To get a meaningful
formal model, app models may be preprocessed replacing standard processes
such as the CRUD process by more detailed processes showing process behavior
on a homogeneous abstraction level.
5.2</p>
      <p>Quality assurance at run time
App behavior cannot only be analyzed at development time but also at run time.
There are two main approaches: To test individual operations implemented by
hand, skeleton code for test cases may be generated. Another way to analyze the
run time behavior is to log relevant information and to process it further.</p>
      <p>App developers do not have to test all the code of the generated app. Since a
code generator is reused again and again, it should result in a mature tool that
ensures reliable code generation. If the intended app shows individual behavior,
however, this behavior is not generated but has to be implemented manually
and integrated into the generated code. These manually written code parts are
encapsulated in operations which should be tested for their correctness. Based
on their signatures and their embedding into generated code, it is possible to
generate skeleton code for testing them in unit tests. The skeleton code sets up
a test suite and has to be completed by semantical information about operations
under test.</p>
      <p>To find out how generated behavior interacts with individually specified
behavior, it may be worthwhile to analyze the run time behavior of an app. This
is also useful to get realistic information about, e.g., execution time, energy
efficiency, and net usage of the app. As a basis, we could log relevant information in
a log file. This may comprise information about active services, called operations
with actual arguments, and much more. Condensing the log information in a log
model would lead to a basis for further analyses. As proposed for the app model,
the log model could be translated to a formal model of choice to use suitable
analysis techniques. Interesting questions to answer are for example: How many
transactions finished successfully? What are the execution times for performed
transactions?</p>
    </sec>
    <sec id="sec-6">
      <title>Related Work</title>
      <p>The model-driven development of mobile applications is an innovative field which
has not been tackled much in the literature. Nevertheless, there are already some
approaches which we compare to ours in the following.</p>
      <p>
        MD2 [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is an approach to cross-platform model-driven development [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] of
mobile applications. As in our approach, purely native apps for Android and
iOS are generated. That approach focuses on the domain of data-driven
business apps. The underlying modeling languages of that approach and ours differ in
various aspects: The view specification by MD 2 is structure-oriented and pretty
detailed, i.e., views are specified on an abstraction layer similar to UI editors.
In contrast, the GUI language of our approach is purpose-oriented and thus,
lifted to a higher abstraction level. The generated mobile apps follow the
MVCarchitecture pattern as well. While the data model is translated to plain (old)
Java objects (POJOs) in MD2 with serialization facilities for server
communication as well as a Java Enterprise Edition (JEE) application to be run on a
server, our approach also supports off-line execution.
      </p>
      <p>
        Two further MDD approaches focusing on data-centric apps are applause [
        <xref ref-type="bibr" rid="ref11 ref4">11,
4</xref>
        ] and ModAgile [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Both support cross-platform development for mainly
Android and iOS. In contrast to our approach, behavior is nearly not modeled and
user interfaces are modeled rather fine-grained.
      </p>
      <p>
        Another kind of development tools for Android apps is the event-driven
approach App Inventor [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] providing a kind of graphical programming language
based on building blocks. Building blocks are simple components with
graphical UI and input/output facilities. The development is mainly concerned with
the app behavior. The language does not support app development on a higher
abstraction level. E.g. pure CRUD functionality has to be designed step-by-step
with every detail while our approach can model CRUD functionality directly
for a data model. A further event-driven approach is Arctis [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] being based on
activity diagrams. Like App Inventor, Arctis also focuses on rather fine-grained
behavior and/or UI specification and largely neglects the modeling of data
structures.
      </p>
      <p>
        Besides the generation of native apps, there are several approaches to the
model-driven development of mobile Web apps being originated in the
generation of Web applications. Although Web apps show platform independence by
running in a Web environment, they have to face some limitations wrt.
devicespecific features, due to the use of HTML5 [
        <xref ref-type="bibr" rid="ref23 ref30">23, 30</xref>
        ]. There are several approaches
to MDD of Web apps, such as mobl [
        <xref ref-type="bibr" rid="ref18 ref19">19, 18</xref>
        ] and a WebML-based solution by
WebRatio [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Since we are heading towards off-line capable apps being off-line,
Web apps are not well-suited. Apps generated with our infrastructure can work
on-line and off-line.
      </p>
      <p>To summarize, our approach supports the model-driven development of
native apps by high-level modeling of data structures, behavior and user interfaces
while supporting the role-based configuration of app variants and in thus differs
considerably from approaches aiming at comparable goals.</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion</title>
      <p>Model-driven development of mobile apps is a promising approach to face fast
emerging technology development for several mobile platforms as well as short
time-to-market with support for several if not all noteworthy platforms. In this
paper, a modeling language for mobile applications is presented that allows to
model mobile apps as abstract as possible and as concrete as needed. Two code
generators are available to produce Android and iOS apps. The considered
domain are data-oriented apps that may be enriched by specific behavior elements
such as interaction with sensors and other apps as well as entertainment
elements as, e.g, little games. Example apps are, e.g., tourist and conference guides
as well as an app for home automation (SmartPlug).</p>
      <p>Future work will be concerned with language extensions to cover
mobilityrelated aspects such as mobile transaction models allowing reasonable off-line
usage of apps, flexible sensor handling and, based on various sensors, advanced
augmented reality. Moreover, generated apps shall show high software
quality; criteria of interest are correctness, usability, energy efficiency, and security.
Translating the app model or log information that has been collected at run time,
to a formal model of choice may help to provide powerful analysis techniques.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <source>Adaptive Server R Anywhere 9.0</source>
          .
          <fpage>2</fpage>
          -
          <string-name>
            <given-names>Adaptive</given-names>
            <surname>Server Anywhere SQL User's Guide</surname>
          </string-name>
          (
          <year>October 2004</year>
          ), http://infocenter.sybase.com/archive/topic/com.sybase. help.
          <source>adaptive_server_anywhere_9.0</source>
          .2/pdf/asa902/dbugen9.pdf
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <source>Adaptive Server R Anywhere 9.0</source>
          .2 -
          <string-name>
            <given-names>SQL</given-names>
            <surname>Remote TM User's Guide</surname>
          </string-name>
          (
          <year>October 2004</year>
          ), http://infocenter.sybase.com/archive/topic/com.sybase.help.
          <source>adaptive_server_anywhere_9.0</source>
          .2/pdf/asa902/dbsren9.pdf
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>App</given-names>
            <surname>Inventor</surname>
          </string-name>
          . http://appinventor.mit.edu (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. Applause. https://github.com/applause/applause (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Apple</given-names>
            <surname>Developer</surname>
          </string-name>
          <article-title>Connection</article-title>
          . https://developer.apple.com/devcenter/ios/ (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Google</given-names>
            <surname>Android</surname>
          </string-name>
          Developer Portal. http://developer.android.com/index.html (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. ModAgile. http://www.modagile-mobile.de (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Abowd</surname>
            ,
            <given-names>G.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dey</surname>
            ,
            <given-names>A.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brown</surname>
          </string-name>
          , P.J.,
          <string-name>
            <surname>Davies</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Steggles</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Towards a better understanding of context and context-awareness</article-title>
          .
          <source>In: Handheld and ubiquitous computing</source>
          . pp.
          <fpage>304</fpage>
          -
          <lpage>307</lpage>
          . Springer (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Allen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Graupera</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lundrigan</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Pro Smartphone Cross-Platform Development: iPhone, Blackberry, Windows Mobile and Android Development and Distribution</article-title>
          .
          <source>Apress</source>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Arlt</surname>
            ,
            <given-names>H.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Malerczyk</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Transformation based object classification - Ein Verfahren zur automatischen Initialisierung von Augmented Reality-Anwendungen</article-title>
          . Friedberger Hochschulschriften, Technische Hochschule Mittelhessen University of Applied Sciences,
          <source>Band</source>
          <volume>38</volume>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Behrens</surname>
          </string-name>
          , H.:
          <article-title>MDSD for the iPhone: developing a domain-specific language and IDE tooling to produce real world applications for mobile devices</article-title>
          . In: Cook,
          <string-name>
            <given-names>W.R.</given-names>
            ,
            <surname>Clarke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Rinard</surname>
          </string-name>
          , M.C. (eds.) SPLASH/OOPSLA Companion. pp.
          <fpage>123</fpage>
          -
          <lpage>128</lpage>
          . ACM (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Bettini</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Implementing Domain-Specific Languages with Xtext and Xtend</article-title>
          . Packt Publishing Ltd. (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Burnette</surname>
          </string-name>
          , E.: Hello,
          <article-title>Android: Introducing Google's Mobile Development Platform</article-title>
          . Pragmatic
          <string-name>
            <surname>Bookshelf</surname>
          </string-name>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Ceri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fraternali</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bongio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Web Modeling Language (WebML): a modeling language for designing Web sites</article-title>
          .
          <source>Computer Networks</source>
          <volume>33</volume>
          (
          <issue>1-6</issue>
          ),
          <fpage>137</fpage>
          -
          <lpage>157</lpage>
          (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Conway</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hillegass</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>iOS Programming: The Big Nerd Ranch Guide, Third Edition</article-title>
          . Pearson
          <string-name>
            <surname>Education</surname>
          </string-name>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Gronback</surname>
            , R.: Eclipse Modeling Project:
            <given-names>A</given-names>
          </string-name>
          <string-name>
            <surname>Domain-Specific Language (DSL) Toolkit. Pearson Education</surname>
          </string-name>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Heitkötter</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majchrzak</surname>
            ,
            <given-names>T.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuchen</surname>
          </string-name>
          , H.:
          <article-title>Cross-Platform Model-Driven Development of Mobile Applications with MD2</article-title>
          .
          <source>In: Proceedings of the 28th Annual ACM Symposium on Applied Computing, SAC '13</source>
          ,
          <string-name>
            <surname>Coimbra</surname>
          </string-name>
          , Portugal, March
          <volume>18</volume>
          -22,
          <year>2013</year>
          . pp.
          <fpage>526</fpage>
          -
          <lpage>533</lpage>
          . ACM (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Hemel</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
          </string-name>
          , E.:
          <article-title>Declaratively programming the mobile web with Mobl</article-title>
          . In: Lopes,
          <string-name>
            <surname>C.V.</surname>
          </string-name>
          , Fisher, K. (eds.) OOPSLA. pp.
          <fpage>695</fpage>
          -
          <lpage>712</lpage>
          . ACM (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Hemel</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
          </string-name>
          , E.:
          <article-title>Mobl: the new language of the mobile web</article-title>
          . In: Lopes,
          <string-name>
            <surname>C.V.</surname>
          </string-name>
          , Fisher, K. (eds.) OOPSLA Companion. pp.
          <fpage>23</fpage>
          -
          <lpage>24</lpage>
          . ACM (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Kraemer</surname>
            ,
            <given-names>F.A.</given-names>
          </string-name>
          :
          <article-title>Engineering Android Applications Based on UML Activities</article-title>
          .
          <source>In: Model Driven Engineering Languages and Systems</source>
          , 14th International Conference, MODELS 2011, Wellington, New Zealand,
          <source>October 16-21</source>
          ,
          <year>2011</year>
          .
          <source>Proceedings. Lecture Notes in Computer Science</source>
          , vol.
          <volume>6981</volume>
          , pp.
          <fpage>183</fpage>
          -
          <lpage>197</lpage>
          . Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Laux</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lessner</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Escrow serializability and reconciliation in mobile computing using semantic properties</article-title>
          .
          <source>International Journal On Advances in Telecommunications</source>
          <volume>2</volume>
          (
          <issue>2</issue>
          ),
          <fpage>72</fpage>
          -
          <lpage>87</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Meier</surname>
          </string-name>
          , R.:
          <source>Professional Android 4 Application Development</source>
          . Wiley (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Oehlman</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blanc</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Pro Android Web Apps:
          <article-title>Develop for Android using HTML5, CSS3</article-title>
          &amp;
          <string-name>
            <surname>JavaScript. Apress</surname>
          </string-name>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <given-names>O</given-names>
            <surname>'Neil</surname>
          </string-name>
          ,
          <string-name>
            <surname>P.E.</surname>
          </string-name>
          :
          <article-title>The escrow transactional method</article-title>
          .
          <source>ACM Transactions on Database Systems (TODS) 11(4)</source>
          ,
          <fpage>405</fpage>
          -
          <lpage>430</lpage>
          (
          <year>December 1986</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Rubel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wren</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clayberg</surname>
            ,
            <given-names>E.: The</given-names>
          </string-name>
          <string-name>
            <surname>Eclipse Graphical Editing Framework (GEF). Addison-Wesley</surname>
          </string-name>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Steinberg</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Budinsky</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paternostro</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merks</surname>
          </string-name>
          , E.: EMF:
          <article-title>Eclipse Modeling Framework</article-title>
          . Addison-Wesley, Boston, MA,
          <volume>2</volume>
          <fpage>edn</fpage>
          . (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Vaupel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Strüber</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rieger</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>Agile bottom-up development of domain-specific ides for model-driven development</article-title>
          .
          <source>In: Proceedings of FlexMDE 2015: Workshop on Flexible Model-Driven Engineering</source>
          , pp.
          <fpage>12</fpage>
          -
          <lpage>21</lpage>
          , Vol.
          <volume>1470</volume>
          .
          <string-name>
            <surname>CEUR-WS.org</surname>
          </string-name>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Vaupel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taentzer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harries</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stroh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gerlach</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guckert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Modeldriven development of mobile applications allowing role-driven variants</article-title>
          .
          <source>In: ModelDriven Engineering Languages and Systems</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>17</lpage>
          , LNCS 8767. Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Vaupel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wlochowitz</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>A generic architecture supporting context-aware data and transaction management for mobile applications</article-title>
          .
          <source>In: Proceedings of the 3rd ACM International Conference on Mobile Software Engineering and Systems</source>
          ,
          <source>MOBILESoft</source>
          <year>2016</year>
          , Austin, TX, USA, May
          <volume>16</volume>
          -17,
          <year>2016</year>
          . IEEE (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Williams</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Learn HTML5 and JavaScript for Android</article-title>
          .
          <source>Apress</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>