Nowadays, mobile devices constitute the most common computing device with the growing usage of smart phones. A vast array of features has been incorporated into those devices to address the different demands of users. Today mobile devices are as powerful as desktop computers in terms of their computing capabilities. This new computing model have brought intense competition and innovation among devices, OSs, and application providers. Even if the mobile OS market is beginning to mature and consolidate, most researches concur that it is unlikely that a single vendor will dominate the future mobile-centric world. The dilemma between browser-based (HTML 5) and native (iOS, Android, Blackberry, Symbian, Windows Phone) interfaces will remain relevant and will challenge the capacity of organizations to meet the increasing demand for mobile applications. Currently, there are several frameworks implementing different methodologies for cross platform application development (Web, Hybrid, Interpreted and Cross Compiled): examples include PhoneGap / Cordova, Appcelerator Titanium, and Xamarin. However, these approaches still require manual programming. The advantages offered by those cross platform approaches can increase if combined with Model Driven Engineering techniques. The research work of the candidate proposes to face the challenge of the mobile revolution by exploiting abstraction, modelling and code generation, in the spirit of the modern paradigm of Model Driven Engineering. The rationale is to represent application designs in a platform-independent manner and then generate the code to deploy the application business logic and interaction logic onto any platform of choice. This will simplify multi-device development, reducing substantially cost and development time, so as to increase the profit of solution providers and at the same time reduce the price and total cost of ownership for end-customers. The research will investigate appropriate domain-specific modeling languages and code generation techniques. The final goal is to enable the domain experts with no programming background to develop their own applications or a large part of thereof by delegating to software engineers only the technical issues when required. Integration of the activities of the different roles will be investigated and optimized too.