MDA Distilled: Principles of Model-Driven Architecture