It is now widely recognized that the so-called nonfunctional or extra-functional properties of a software system are at least as important as its somewhat more classical functional properties and that they must be considered as early as possible in the development cycle in order to avoid costly failures. In this paper we define elements of a semantic framework for non-functional specifications of component-based systems. We focus on how the runtime environment uses components, whose non-functional properties have been specified, and the available system resources to provide a service with specified non-functional properties.