QoS-aware Service Composition and Redundant Service Removal