Describir: Compositionality and refinement in model-driven engineering