1. A computer implemented method for generating executable software components representing one or more data sources for selection from a plurality of data sources to satisfy a data dependency of a software service, each data source including a definition of at least one semantic identifier corresponding to data accessible via the data source, the data sources being represented organised into clusters of multiple data sources based on a semantic association between semantic identifiers of data sources in a cluster, each cluster being represented as one or more data structures, the method comprising the steps of: encapsulating each cluster as an executable software component; and for each executable software component: a) selecting, from a set of semantic identifiers for all data sources represented in a cluster of the software component, a proper subset of the set of semantic identifiers based on at least one predetermined semantic identifier selection criterion; b) configuring the software component to advertise the proper subset of semantic identifiers to components external to the software component; and c) configuring the software component to provide an interface accessible by components external to the software component, the software component being adapted to deliver data from data sources in the cluster of the software component via the interface, such that, in use, one or more software components are selected to provide data for the software service based on the advertised semantic identifiers so as to satisfy at least part of the data dependency of the software service; wherein the software service includes a specification of the data dependency, the specification including one or more semantic identifiers corresponding to data required for execution of the software service, and wherein each of the one or more selected software components advertise semantic identifiers having a degree of relevance to the data dependency specification meeting a threshold degree of relevance.