Modern distributed software systems are designed often in such a way that they accomodate change by adding or removing components during run-time. This implies that the architecture of the distributed system has to be constructed in a way that such additions and removals can be done after design time. We argue that semantics information about the components has to be available in order to achieve always a functioning system in the presence of such change actions. Thus it is the aim to go beyond the currently available plug-in architectures where the semantics of the public interfaces is often only implicit. In order to achieve such a semantics-directed configuration we discuss a graph based approach for representing and matching semantics descriptions of software components. Based on such an approach (sub-)structures of the architecture can be designed that the components organize themselves on the basis of their semantic concepts.