Adaptability is emerging as a crucial enabling capability for many applications, particularly those deployed in dynamically changing environments such as environment monitoring, disaster management, and military systems. One of the challenges that these pose to RE is that of complexity and how to handle the requirements arising from different states of the environment, and the requirements for coping when the environment changes. One approach to handling this complexity at the architectural level is to augment middleware systems with adaptive capabilities. This paper examines how adaptive middleware can be exploited by analysts handling requirements for adaptive systems. Here, requirements for adaptability, and the associated requirements for identifying when and how to adapt are allocated to the middleware. We describe how this is achieved in the Gridkit middleware that has been developed to support adaptive grid applications. Gridkit exploits a set of frameworks, each responsible for different types of middleware behaviour. This mechanism provides the basic capability for adaptation, while adaptability requirements are encoded as rules that are consulted at run-time when a change in the underlying environment is detected.