Web services composition environment is highly dynamic with new services being deployed, existing ones becoming unavailable or their QoS and other non-functional properties (cost, availability, etc.) changing dynamically. However, current approaches for web services composition and execution, such as WS-BPEL, can neither tailor the execution automatically as per the required QoS nor can they adapt to the highly dynamic environment. Though there have been some recent efforts in this direction they are piecemeal and insufficient. They either do not take user's non-functional requirements (NFRs) into consideration for adaptation, or there is no standard way of specifying these requirements for a BPEL process. In this paper, we propose an integrated approach for dynamically adapting web service compositions based on NFRs. We first give a specification for representing NFRs for each partner service of a BPEL process, and then describe a system that dynamically adapts the BPEL process based on these requirements by selecting suitable services at runtime. The selected services only need to be semantically equivalent and the system automatically takes care of the syntactical differences between their interfaces. We integrated our system in an existing BPEL engine using aspect oriented approach and demonstrate via experiments that it has very little performance overhead even at high loads. © 2010 IEEE.