Towards an Architectural Approach for the Dynamic and Automatic Composition of Software Components