Model-Driven Design for the Development of Multi-Platform Smartphone Applications