1. A method of operating a plurality of business software components, the method comprising: discovering information about a first business software component, the first business software component having at least one first component capability or first component requirement; binding the at least one first component capability or first component requirement to a first role in a model-driven bus; discovering information about a second business software component, the second business software component having at least one second component capability or second component requirement; and binding the at least one second component capability or second component requirement to a second role in a model-driven bus.