Model-driven software development allows to specify applications at a higher level of abstraction. This increases development efficiency and portability of the application, and extends the application's life-cycle. Model-driven software development uses models as the primary development artifacts. The transition from high-level specifications to executable code is partly automated by suitable transformations. Development costs can be reduced this way.