Model-Driven Software Engineering in Practice (Chapter 8)