A Model-Driven Engineering Approach for Defining Rich Internet Applications: A Web 2.0 Case Study