1. A method of performing asset composition with reduced complexity by automating otherwise time-consuming and error prone activities, the method comprising: utilizing at least one processor of a computing system, accessing a plurality of asset specifications, the plurality of asset specifications being stored in an asset specification store and each asset specification including metadata in an XML-based schema that describes compositional properties of respective assets and ports that support composition, wherein the XML-based schema for the asset specification for each of the plurality of assets includes: an asset description as a list of ground predicates; and a port specification describing an individual port, wherein the port specification includes at least: a port description as a list of ground predicates, wherein each ground predicate has no variables; and a port interfaces section including at least: a configuration section; a requirements section; a services section; and a wants section; responsive to a composition request, searching the plurality of asset specifications, and the metadata therein, to match at least a first asset providing a service with at least a second asset having a requirement matching the service of the first asset, wherein matching the first asset with the second asset comprises: computing a first hash, the first hash being a hash of the services section of an asset specification corresponding to the first asset; computing a second hash, the second hash being a hash of the requirements section of an asset specification corresponding to the second asset; comparing the first hash to the second hash, and obtaining a zero result from the determination; and after comparing the first hash to the second hash, determining whether each expression in the requirements section of the asset specification of the second asset matches expressions in the services section of the asset specification of the first asset, and recording only variable matches as the services contain only ground predicates; and composing an application that includes the at least first asset providing the service and the at least second asset having a requirement matching the provided service of the at least first asset, wherein composing the application includes linking ports of the first and second assets, as identified in respective asset specifications within the plurality of asset specifications, wherein composing the application is performed responsive to the composition request, and wherein communication between the first and second assets, through the ports, is provided through a third asset, wherein the third asset is a channel.