An assembly is a set of assembly contexts containing component types from several repositories and a set of system assembly connectors connecting the components in their context. Conceptually, every system has exactly one assembly. An assembly is different from a composite component in its visibility for the system deployer. The inner structure of a composite component is hidden from the component deployer. Only the outer aspects of the component are visible for the deployer which is mainly the component and its roles. Opposed to this, the system deployer has full access to the assembly contexts and the system assembly connectors. The rationale behind this difference in modelling is that a composite component should always look like any other component (besides for the developer of that component). The decision, whether a component's inner structure is build from scratch (i.e., as basic component) or by connecting existing components (i.e., using a composite component), is considered as an implementation detail. As a consequence the inner structure of any component is only visible to the component developer. Neither the assembler nor the deployer know about the inner structure. To be consequent this means that a composite component can not be allocated on more than a single runtime environment as this would mean that the system deployer has access to the composite components inner structure. This is different for an assembly. The component and their contexts as well as the system assembly connectors are visible and can be distributed in arbitrary ways by the system deployer on execution environments.