Model-Driven Software Engineering in Practice (Synthesis Lectures on Software Engineering)