Model-based generation of smartphone applications
This example is based on the well known domain and is already in our pocket: mobile phone and its applications. The specific implementation target in this example is the public smartphone platform Series 60 and a supporting framework that enables the development and deployment of enterprise applications. Accordingly, in this domain, the development process involves applying the terms and rules of mobile enterprise applications built on Series 60. The design language applies these directly as modeling concepts as illustrated below.
A further discussion is available in Chapter 8 of Domain-Specific Modeling: Enabling Full Code Generation.
The design model is directly based on domain concepts, such as Note, Pop-up, SMS, Form, and Query. These are specific to mobile phone services and its user-interface widgets. If you are familiar with some phone applications, like phone book or calendar, you most likely already understood what the above application makes. A user can register for a conference using SMS messages, choose a payment method, view program and speaker data, browse the conference program via the web, or cancel his registration.
As can be seen from the model, all the implementation concepts are hidden (and are not even necessary to know). Developers can focus on finding the solution using the domain concepts. As the descriptions capture all the required static and behavioral aspects of the application, it is possible to generate the application fully from the models. The generated code uses the services provides by the Series 60 framework. After design, there is no need to map the solution to implementation concepts in code or in UML models visualizing the code.
The modeling language also includes domain rules, preventing developers making illegal designs. This means that application developers do not need to master the details of the Series 60 architecture and coding. If you understand the phone UI and services it can provide, you can develop applications. See below the application generated from the model.