Composite Connectors for Composing Software Components
design patterns : elements of reusable object - oriented software .