Adaptivity is one of the most challenging issues of today systems. The main goal of our adaptive resource management system is to identify and use the most appropriate resources, which are able to fulfill the current service request. Adaptivity is achieved by exploiting additional information indicated by the users when making a service request and representing the qualities (i.e., availability, accessibility, location, execution qualities, etc.) that should characterize the supplied services. To achieve adaptivity at runtime, our approach exploits reflection at the architectural level through which we model explicitly the performance/non-functional aspects of the services provided by the underlying system's resources. Reflection introduces additional layers, which play an intermediary role between the representation of a system and applications, and enable resources to adapt to representation of the services and their qualities at various ensure adaptivity. the applications' requests. In this paper, we focus on the architectural levels, and on the mechanisms we exploit to