I constantly meet with mobile app developers struggling with the requirement from customers about
having their mobile apps available on multiple mobile platforms. Mainly for iOS and Android, but now also for Windows Phone (aside, you may want to know that Windows has now surpassed iOS in mobile market in Italy. No surprise here, great phones and bargain prices!).
With the Automobile project we are trying to cross the chasm of cross-platform development through a model-driven, code generation approach. However, even with this kind of vision, various options remain open. Should we design (model) the application once with a conceptual modeling language like IFML, and then build different code generators for each mobile platforms? Or should we build a unified generator that produces code that is cross-platform per se?
We are currently investigating the latter option, and we started our path with a set of seminars on Apache Cordova (the open source project that is behind the more known PhoneGap product by Adobe).
The advantage of this kind of approaches, from a model-driven development perspective, is that we could develop only one code generation for different mobile platforms.
Ivano Malavolta, from University of L’Aquila, came visiting us and offered his vision for developing effective and efficient mobile applications. He proposed an approach that is highly scalable and maintainable, based on clean and well structured frameworks and patterns.
This perfectly copes with our aim of automatically generating the code (within the WebRatio platform).
You can find the slides of his core presentations here:
and others here:
Bottom line: cross-platform mobile apps are not just for crappy, cheap applications. If you develop cross-platform mobile apps professionally, you can get excellent results (apps like Flipboard, Gmail, or Amazon are developed like this!).
Furthermore: if you work at conceptual level with a modeling language like IFML and then you generate cross-platform apps, you can maximize your productivity and maintainability of the apps.