=Paper=
{{Paper
|id=Vol-1591/paper4
|storemode=property
|title=Model-Driven Development of Mobile Applications: Towards Context-Aware Apps of High Quality
|pdfUrl=https://ceur-ws.org/Vol-1591/paper4.pdf
|volume=Vol-1591
|authors=Gabriele Taentzer,Steffen Vaupel
|dblpUrl=https://dblp.org/rec/conf/apn/TaentzerV16
}}
==Model-Driven Development of Mobile Applications: Towards Context-Aware Apps of High Quality==
Model-Driven Development of Mobile Applications: Towards Context-Aware Apps of High Quality ? Gabriele Taentzer, Steffen Vaupel Philipps-Universität Marburg, Germany {taentzer,svaupel}@informatik.uni-marburg.de Abstract. 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 develop- ment faces typical challenges where model-driven development (MDD) can help. An infrastructure for MDD has a high potential for accelerating the de- velopment of software applications. While just modeling the application- specific 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 leav- ing 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 applica- tions 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 ap- plications. 1 Introduction 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 produc- tion problems. Popular platforms differ widely in hardware and software char- acteristics and typically show short life and innovation cycles with considerable changes. The market often requires that apps must be available for several plat- forms which makes a very time and cost-intensive multiple platform develop- ment a necessity. Available solutions try to circumvent this problem by using ? This work was partially funded by the German Research Foundation, project "Dis- tributed Model-Driven Software Development". 18 PNSE’16 – Petri Nets and Software Engineering 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. The heart and soul of model-driven development is the domain-specific mod- eling 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 con- crete 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. To efficiently work with the DSML, we provide an Eclipse-based tool environ- ment consisting of a graphical editor with three different views for data, behavior and user interface models as well as two code generators to Android [13, 22, 6] and iOS [15, 5]. Before developing these two code generators, we studied the design principles of mobile apps in Android and iOS and found a lot of common- alities. 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 indepen- dent of the chosen platform. We demonstrate the potentials and limits of our MDD approach at a small example. 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 G. Taentzer, S. Vaupel: Model-Driven Development of Mobile Applications 19 changing network states - problems and requirements for context-aware archi- tectures of mobile applications are considered. We discuss how these issues may be supported by model-driven development as well. 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 Modeling Mobile Applications 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. Android code Modeling iOS code generator language generator instance of App model Android Model editor iOS project project Fig. 1. Model-driven development of mobile apps 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 [28]. The data model contains the typical elements of object-oriented data mod- eling 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. 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 in- terface (e.g. labels, edit and text fields, check boxes, etc.) by consulting the data model. 20 PNSE’16 – Petri Nets and Software Engineering The process model defines the behavior of an app. This model part is struc- tured 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. Person ForenameB:BEString Address SurnameB:BEString CityB:BEString PhoneBook MobileNumberB:BEString ZIPB:BEString OfficeNumberB:BEString StreetB:BEString allPersons address NumberB:BEString callMobileNumber 0..* toString 0..1 Fig. 2. Data model of simple phone book app 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. StyleSetting PROCESSSELECTORPAGE EDITPAGE VIEWPAGE SELECTABLELISTPAGE MAPPAGE ColoryBLACKyU020205 ColoryLIGHTBLUEyU5121... ColoryWHITEyU25522552... StyleListSettings StyleMenuSettings StylePageSettings StyleSelectionSettings ProcessesOverview EditPerson ViewPerson SelectPerson ShowAddress MenuyMenu Fig. 3. User interface model of simple phone book app 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. G. Taentzer, S. Vaupel: Model-Driven Development of Mobile Applications 21 Main CRUDPerson MainProcesses CRUDPerson ALL ProcessesOverview : ProcessSelectorPage Person CRUDPerson , SearchPerson , CallPerson , ShowPersonAddressOnMap , NearToMe (a) Main Process (b) CRUD Process CallPerson PersonSearchPattern PersonResultList SelectedPerson CallPerson CreatePersonSearchPattern ReadAllPersons ChoosePersonFromResultList CALL Person PersonSearchPattern : Person PersonResultList : Person PersonResultList : Person SelectPerson callMobileNumber PersonSearchPattern : Person SelectedPerson : Person SelectedPerson : Person (c) Call Person Process Fig. 4. Process model of simple phone book app 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. Figure 5 shows selected screen shots of the phone book app, already gener- ated 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 stan- dard 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 Tool Support The modeling language is defined on the basis of the Eclipse Modeling Framework (EMF) [26]; therefore, model editors may be textual (e.g. Xtext [12]) or graphical (e.g. Graphical Modeling Framework (GMF) [16, 25]). A GMF-based graphical editor is currently provided. Two code generators are available, one for Android [13, 22, 6] and one for iOS [15, 5]. Both code generators can process the same platform-independent app 22 PNSE’16 – Petri Nets and Software Engineering (a) Main Menu with Manage Persons Process (CRUD functionality) (b) Persons Location Process (c) Call Person Process Fig. 5. Screen shots of phone book app model and generate apps running directly on Android and iOS devices. They are written with Xtend [12] in a template-based style. 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 ar- chitecture 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 ap- plication. 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 calcula- tions and navigation logics (except of input validation), and return all events to G. Taentzer, S. Vaupel: Model-Driven Development of Mobile Applications 23 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 Modeling Contextual Aspects 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 [8]. Besides more traditional contexts like user contexts (e.g. roles concept) and platform environments (e.g. display size) [28] 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 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 & 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 building- specific installation of access points. 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 processor- intensive and mobile devices often have limited processor capacity. Hence, the recognition and augmentation of many objects being close together is not feasi- ble 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 position- ing 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 [10]. 24 PNSE’16 – Petri Nets and Software Engineering (a) Main Menu (b) Sensor data (c) Map view and position Fig. 6. Screen shots of indoor navigation app 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 [27]. 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 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 ap- plications with standard architectures non-operable in off-line situations. A look at real-world applications gives evidence that application developers hardly real- ize 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 G. Taentzer, S. Vaupel: Model-Driven Development of Mobile Applications 25 to have a context-aware architecture supporting additional architectural compo- nents 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 guaran- teed. Certain mobile transaction models can coordinate isolated changes of local copies. Two of them are especially interesting: The Keypool transaction model [1, 2] 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 dis- tributed among the participating mobile clients. Operations do not have to be restricted. The Escrow transaction model [24, 21] 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 trans- actions. 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. Usually, developers have to acquire a lot of knowledge about mobile trans- action 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 [29]. Modelers add only a few parameters to the app model (e.g. which pro- cesses 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 Quality Assurance of Mobile Applications 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. In model-driven software development, software quality is extremely depen- dent of the platform-independent model since the code generator takes it di- rectly 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 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 26 PNSE’16 – Petri Nets and Software Engineering skeleton code for test cases, not necessarily for the generated application code but for separately implemented, i.e., non-generated code. Smells represent modeling knowledge being condensed from developer expe- riences; 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. gen- erated 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. 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 con- currently? 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 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. 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. To find out how generated behavior interacts with individually specified be- havior, 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 effi- ciency, 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? G. Taentzer, S. Vaupel: Model-Driven Development of Mobile Applications 27 6 Related Work 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. MD2 [17] is an approach to cross-platform model-driven development [9] 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 busi- ness apps. The underlying modeling languages of that approach and ours differ in various aspects: The view specification by MD2 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 MVC- architecture pattern as well. While the data model is translated to plain (old) Java objects (POJOs) in MD2 with serialization facilities for server communi- cation as well as a Java Enterprise Edition (JEE) application to be run on a server, our approach also supports off-line execution. Two further MDD approaches focusing on data-centric apps are applause [11, 4] and ModAgile [7]. Both support cross-platform development for mainly An- droid and iOS. In contrast to our approach, behavior is nearly not modeled and user interfaces are modeled rather fine-grained. Another kind of development tools for Android apps is the event-driven ap- proach App Inventor [3] providing a kind of graphical programming language based on building blocks. Building blocks are simple components with graphi- cal 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 [20] 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 struc- tures. Besides the generation of native apps, there are several approaches to the model-driven development of mobile Web apps being originated in the genera- tion of Web applications. Although Web apps show platform independence by running in a Web environment, they have to face some limitations wrt. device- specific features, due to the use of HTML5 [23, 30]. There are several approaches to MDD of Web apps, such as mobl [19, 18] and a WebML-based solution by WebRatio [14]. 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. To summarize, our approach supports the model-driven development of na- tive 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. 28 PNSE’16 – Petri Nets and Software Engineering 7 Conclusion 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 do- main are data-oriented apps that may be enriched by specific behavior elements such as interaction with sensors and other apps as well as entertainment ele- ments as, e.g, little games. Example apps are, e.g., tourist and conference guides as well as an app for home automation (SmartPlug). Future work will be concerned with language extensions to cover mobility- related 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 qual- ity; 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. References 1. Adaptive Server R Anywhere 9.0.2 – Adaptive Server Anywhere SQL User’s Guide (October 2004), http://infocenter.sybase.com/archive/topic/com.sybase. help.adaptive_server_anywhere_9.0.2/pdf/asa902/dbugen9.pdf 2. Adaptive Server R Anywhere 9.0.2 – SQL Remote TM User’s Guide (Oc- tober 2004), http://infocenter.sybase.com/archive/topic/com.sybase.help. adaptive_server_anywhere_9.0.2/pdf/asa902/dbsren9.pdf 3. App Inventor. http://appinventor.mit.edu (2015) 4. Applause. https://github.com/applause/applause (2015) 5. Apple Developer Connection. https://developer.apple.com/devcenter/ios/ (2015) 6. Google Android Developer Portal. http://developer.android.com/index.html (2015) 7. ModAgile. http://www.modagile-mobile.de (2015) 8. Abowd, G.D., Dey, A.K., Brown, P.J., Davies, N., Smith, M., Steggles, P.: To- wards a better understanding of context and context-awareness. In: Handheld and ubiquitous computing. pp. 304–307. Springer (1999) 9. Allen, S., Graupera, V., Lundrigan, L.: Pro Smartphone Cross-Platform Develop- ment: iPhone, Blackberry, Windows Mobile and Android Development and Distri- bution. Apress (2010) 10. Arlt, H.C., Malerczyk, C.: Transformation based object classification - Ein Ver- fahren zur automatischen Initialisierung von Augmented Reality-Anwendungen. Friedberger Hochschulschriften, Technische Hochschule Mittelhessen University of Applied Sciences, Band 38 (2015) 11. Behrens, H.: MDSD for the iPhone: developing a domain-specific language and IDE tooling to produce real world applications for mobile devices. In: Cook, W.R., Clarke, S., Rinard, M.C. (eds.) SPLASH/OOPSLA Companion. pp. 123–128. ACM (2010) G. Taentzer, S. Vaupel: Model-Driven Development of Mobile Applications 29 12. Bettini, L.: Implementing Domain-Specific Languages with Xtext and Xtend. Packt Publishing Ltd. (2013) 13. Burnette, E.: Hello, Android: Introducing Google’s Mobile Development Platform. Pragmatic Bookshelf (2010) 14. Ceri, S., Fraternali, P., Bongio, A.: Web Modeling Language (WebML): a modeling language for designing Web sites. Computer Networks 33(1-6), 137–157 (2000) 15. Conway, J., Hillegass, A.: iOS Programming: The Big Nerd Ranch Guide, Third Edition. Pearson Education (2012) 16. Gronback, R.: Eclipse Modeling Project: A Domain-Specific Language (DSL) Toolkit. Pearson Education (2009) 17. Heitkötter, H., Majchrzak, T.A., Kuchen, H.: Cross-Platform Model-Driven De- velopment of Mobile Applications with MD2 . In: Proceedings of the 28th Annual ACM Symposium on Applied Computing, SAC ’13, Coimbra, Portugal, March 18-22, 2013. pp. 526–533. ACM (2013) 18. Hemel, Z., Visser, E.: Declaratively programming the mobile web with Mobl. In: Lopes, C.V., Fisher, K. (eds.) OOPSLA. pp. 695–712. ACM (2011) 19. Hemel, Z., Visser, E.: Mobl: the new language of the mobile web. In: Lopes, C.V., Fisher, K. (eds.) OOPSLA Companion. pp. 23–24. ACM (2011) 20. Kraemer, F.A.: Engineering Android Applications Based on UML Activities. In: Model Driven Engineering Languages and Systems, 14th International Conference, MODELS 2011, Wellington, New Zealand, October 16-21, 2011. Proceedings. Lec- ture Notes in Computer Science, vol. 6981, pp. 183–197. Springer (2011) 21. Laux, F., Lessner, T.: Escrow serializability and reconciliation in mobile computing using semantic properties. International Journal On Advances in Telecommunica- tions 2(2), 72–87 (2009) 22. Meier, R.: Professional Android 4 Application Development. Wiley (2012) 23. Oehlman, D., Blanc, S.: Pro Android Web Apps: Develop for Android using HTML5, CSS3 & JavaScript. Apress (2011) 24. O’Neil, P.E.: The escrow transactional method. ACM Transactions on Database Systems (TODS) 11(4), 405–430 (December 1986) 25. Rubel, D., Wren, J., Clayberg, E.: The Eclipse Graphical Editing Framework (GEF). Addison-Wesley (2011) 26. Steinberg, D., Budinsky, F., Paternostro, M., Merks, E.: EMF: Eclipse Modeling Framework. Addison-Wesley, Boston, MA, 2 edn. (2009) 27. Vaupel, S., Strüber, D., Rieger, F., Taentzer, G.: Agile bottom-up development of domain-specific ides for model-driven development. In: Proceedings of FlexMDE 2015: Workshop on Flexible Model-Driven Engineering, pp. 12 – 21, Vol. 1470. CEUR-WS.org (2015) 28. Vaupel, S., Taentzer, G., Harries, J.P., Stroh, R., Gerlach, R., Guckert, M.: Model- driven development of mobile applications allowing role-driven variants. In: Model- Driven Engineering Languages and Systems, pp. 1 – 17, LNCS 8767. Springer (2014) 29. Vaupel, S., Wlochowitz, D., Taentzer, G.: A generic architecture supporting context-aware data and transaction management for mobile applications. In: Pro- ceedings of the 3rd ACM International Conference on Mobile Software Engineering and Systems, MOBILESoft 2016, Austin, TX, USA, May 16-17, 2016. IEEE (2016) 30. Williams, G.: Learn HTML5 and JavaScript for Android. Apress (2012)