Modelling and Generating Ajax Applications: A Model-Driven Approach