User-Driven Composition of Web APIs: Bridging the Gap between Users’ Requirements and Technology Constraints