Model driven development for enterprise applications