A method for optimizing the choice of a cloud computing service based on user requirements