Graph Transformation for Software Engineers : With Applications to Model-Based Development and Domain-Specific Language Engineering