Personalized adaptation in pervasive systems via non-functional requirements