Specifying Coherent Refactoring of Software Artefacts with Distributed Graph Transformation