An effective discovery system must be able to retrieve services responding to the users' specific preferences in a changing and dynamic environment. Actually, the existing discovery systems have three problems. Firstly, some of them fail to find Web services providing the same QoS as defined in their related description files, since the QoS data are considered as static. Secondly, the discovery systems based on negotiation lack the accuracy in simulating similarly the real humans' interactions. Thirdly, the negotiation based approaches implemented to discover services are static and do not consider contexts as well as characteristics of each provider. These shortcomings affect negatively the systems performance and usability. Consequently, the quality of the returned services as well as the systems' reputation will be deteriorated. In this paper, we propose an hybrid discovery approach based on negotiation that solve these drawbacks. We argue that our approach enhances the discovery system performance and usability by implementing a negotiation process that is closer to humans' interactions. Moreover, by considering the existing dependencies between the concurrent negotiations, the discovery process will be more efficient. Unlike previous work, the negotiation process is dynamic by taking into account the provider's context and reputation.