The integrity of complex software systems built from existing components is becoming more dependent on the integrity of the
mechanisms used to interconnect these components and, in particular, on the ability of these mechanisms to cope with architectural
mismatches that might exist between components. There is a need to detect and handle (i.e. to tolerate) architectural mismatches
during runtime because in the majority of practical situations it is impossible to localize and correct all such mismatches
during development time. When developing complex software systems, the problem is not only to identify the appropriate components,
but also to make sure that these components are interconnected in a way that allows mismatches to be tolerated. The resulting
architectural solution should be a system based on the existing components, which are independent in their nature, but are
able to interact in well-understood ways. To find such a solution we apply general principles of fault tolerance to dealing
with arch itectural mismatches