The selection of an appropriate Web service for a particular task has become a difficult challenge due to the increasing number of Web services offering similar functionalities. Therefore, when one wants to compose web services to catch a goal, she is faced with some preferences and constraints affecting the final configuration; for simplicity, the single terminology "constraint" in place of both "constraint" and "preference" is used throughout the paper. Most of these constraints in real applications are either functional or qualitative. These constraints have been scattered and unstructured until now, and therefore, when combining services, some of them are considered while many of them are forgotten. In addition to the possibility that some constraints are unthinkable to the user, some of them are overlapping and some may even be contradictory. In this paper a well-formed classification of all known composition constraints is presented. The classification structure is a tree whose parent-child relationships shape the proposed categorization. Leaves of the tree can contain metrics to satisfy the constraints, which are their parents. The tree structure of the classification helps one to deliver constraints as an input in the XML format to the composition process. Using a simple case study, the applicability of the presented classification structure is shown. Having this structure in place, the user can determine her constraints and their priorities more easily. Moreover, one can apply this structure to evaluate various composite services from user's point of view.