1. A method for performing at least one task using execution of a software component out of a plurality of software components on a computing device for at least one user involving at least one domain, the method comprising: representing by the computing device at least one user goal with respect to the domain, the goal represented being independent of tasks which the plurality of software components can perform; representing by the computing device at least one task which can be accomplished by the software component in the domain independent of stated user goals; establishing by the computing device an association between at least one linguistic or pragmatic item and the at least one user goal, the at least one linguistic or pragmatic item having an association with the task; inferring by the computing device using the associations that the software component which can accomplish the at least one task is appropriate out of the plurality of software components for achieving the at least one user goal; and performing the at least one task for the user by the computing device executing the software component.