Enhancing Model-Driven Methods for Composition-Based Software Development