  We study interacting components and their compatibility with respect to
synchronous and asynchronous composition. The behavior of components is
formalized by I/O-transition systems. Synchronous composition is based on
simultaneous execution of shared output and input actions of two components
while asynchronous composition uses unbounded FIFO-buffers for message
transfer. In both contexts we study compatibility notions based on the idea
that any output issued by one component should be accepted as an input by the
other. We distinguish between strong and weak versions of compatibility, the
latter allowing the execution of internal actions before a message is accepted.
We consider open systems and study conditions under which (strong/weak)
synchronous compatibility is sufficient and necessary to get (strong/weak)
asynchronous compatibility. We show that these conditions characterize
half-duplex systems. Then we focus on the verification of weak asynchronous
compatibility for possibly non half-duplex systems and provide a decidable
criterion that ensures weak asynchronous compatibility. We investigate
conditions under which this criterion is complete, i.e. if it is not satisfied
then the asynchronous system is not weakly asynchronously compatible. Finally,
we discuss deadlock-freeness and investigate relationships between
deadlock-freeness in the synchronous and in the asynchronous case.
