By increasing popularity of SOC, using Web services in applications has increased too. SOC creates a loosely coupled environment in which the actual execution environment might differ significantly from the one with the presupposed conditions during application design. Therefore, although an appropriate Web service might have been selected, by passing time, the Web service may not be efficient enough or may not be applicable under specific conditions. For service-oriented systems to be flexible and self-adaptive, it is necessary to automatically select and use a similar service instead of the one which causes the above mentioned problems. Finding a similar service means specifying the proper services which fulfill the same requirements as those fulfilled by the problematic service. In most of the previous works, a number of the best services (k) are selected and ordered based on functional similarity. The user must select one of these services based on his/her preferences. One important metric in selecting a similar service is considering QoS properties and user preferences about QoS. Because of the importance of this issue, in the present paper, an architecture is proposed in which, in addition to functional similarity, QoS properties and user preferences are also considered in selecting a similar service.