During the recent years, there is an increasing demand for software systems that dynamically adapt their behavior at run-time in response to changes in user preferences, execution environment, and system requirements, being thus context-aware. Authors are referring here to requirements related to both functional and non-functional aspects of system behavior since changes can also be induced by failures or unavailability of parts of the software system itself. To ensure the coherence and correctness of the proposed model, all relevant properties of system entities are precisely and formally described. This is especially true for non-functional properties, such as performance, availability, and security. This article discusses semantic concepts for the specification of non-functional requirements, taking into account the specific needs of a context-aware system. Based on these semantic concepts, we present a specification language that integrates non-functional requirements design and validation in the development process of context-aware self-adaptive systems.