Abstract
Model-driven software engineering (MDE) has the basic assumption that the development of software systems from high-level abstractions along with the generation of low-level implementation code can improve the quality of the systems and at the same time reduce costs and improve time to market. This chapter provides an overview of MDE, state of the art approaches, standards, resources, and tools that support different aspects of model-driven software engineering: language development, modeling services, and real-time applications. The chapter concludes with a reflection over the main challenges faced by projects using the current MDE technologies, pointing out some promising directions for future developments.