Abstract
The state-of-the-art in aspect-oriented programming and modeling provides flexible querying and composition mechanisms that allow virtually unrestricted modifications to base code or models using static or dynamic weaving. There is, however, a lack of support for specifying and controlling the permitted effects of compositions with respect to the base models involved. We present model composition contracts, which govern access to the base models via aspects; in essence, the contracts control how aspect compositions may or may not access and change the models, or the underlying code reflected by models. The composition contracts define constraints in terms of pre- and post-conditions restricting the eligibility for composition. We argue that composition contracts improve reliability of model composition in software engineering, and evaluate their effects on model designs and implementations using a case study. We support the approach with a prototype tool for specifying and checking contracts.