Enriching Tool Support for Model-Driven Software Development On the Customization of Model Management Systems for File-Centric IDEs Variability Management in Domain Specific Languages Effective Detection of Model Changes Reverse-Engineering Reusable Language Modules from Legacy DSLs