The initial design of software systems is modelled using conceptual design language elements. When a refined version of the design is made, each of the original (conceptual) elements is replaced by the refined element(s). Other feasible refinements are eliminated prematurely. This paper presents a software design approach, called CoCompose, that allows for defining several, layered, alternative...