Reo: A Channel-based Coordination Model for Component Composition