Aimed at 2nd and 3rd year/MSc courses, Model Driven Software Development using UML and Java introduces MDD, MDA and UML, and shows how UML can be used to specify, design, verify and implement software systems using an MDA approach. Structured to follow two lecture courses, one intermediate (UML, MDA, specification, design, model transformations) and one advanced (software engineering of web applications and enterprise information systems), difficult concepts are illustrated with numerous examples, and exercises with worked solutions are provided throughout.