This document provides an introduction to model-driven software development (MDSD). It discusses what MDSD is, why organizations adopt it, and how it can be applied. Key aspects of MDSD covered include code generation, domain-specific languages, separation of concerns, and economic benefits such as reduced costs from economies of scale and scope. The document also reviews various tools and approaches used in MDSD, including those based on UML, EMF, and DSLs. It concludes by emphasizing that MDSD can help improve software productivity and help establish true software engineering practices.