To reuse existing specifications and increase the speed of development, modern development methods widely use design patterns and collaborations. Both, design patterns and collaborations, use the concept of role as a basic modeling concept. To specify models where one object may play several roles, a synthesis operation (the composition of two base roles in a third role) has to be specified. All role-based approaches have difficulties specifying role synthesis. As a consequence, synthesis is never specified without the description of the actual implementation of the synthesis. To specify synthesis at a higher level of abstraction, independent of implementation, requires the proper understanding of relationships between roles, when they are put together in one common context. In this paper we define the concept of synthesis constraints that shows relations between roles. We show how synthesis constraints can be used to specify the role synthesis operation. Using synthesis constraints allows a designer to make explicit his decisions about how the synthesis is done in an abstract and implementation independent way. Specifying synthesis with synthesis constraints is a powerful technique that can be used in many different domains, especially in business engineering. The use of roles allows a developer to specify separately certain concerns of a business system. This enables the discovery of new business models for a business system by means of different disassembling and assembling of roles.