Specifying complex systems is a difficult task which cannot be done in one step. In the framework of formal methods, the refinement is a key feature to incrementally develop more and more detailed models, preserving correctness in each step. The refactoring activity consists in restructuring a model in order to improve its quality, preserving the consistency of this model. This thesis advocates the use of both refinement and refactoring technics in order to build a high quality UML models ie correct by construction, scalable, reusable and efficient. It also helps in the joint use of UML (semi-formal) and B, Event-B and CSP (formal). The main contributions of this thesis are: First, a proposal of the refinement patterns of the UML/OCL class diagrams to guide the designer during the static modeling application; Second, a proposal of the model refactoring patterns described by the UML class diagrams, OCL constraints and state diagrams, in order to assist the designer during the restructuring of UML models.