To represent well-defined module structures, dynamic behaviors, and their correlations in a compiler, compiler models are proposed by two aspects of view: the object model describing a static structure and the dynamic model describing a dynamic behavior of compilers. Based on these compiler models, a specification method is also suggested to describe a static structure and a dynamic behavior of compilers. The object model for compilers represents the language semantics of source and target languages by using an object-oriented modeling technique. Since each language feature is described by classes with a hierarchy, aggregations, and associations, a compiler structure becomes well matched to the object model for language semantics. Therefore, the compiler structure becomes well modulized and reusable according to the language features. The dynamic model regards a compilation process as a series of state transitions of the object model. Therefore, each dynamic behavior of components in the object model such as an object, an aggregation, an association, and so on, is defined as states and dynamic interactions among states. The dynamic model is denoted by attribute equations based on concepts of states and their transitions. From the topological ordering of the attribute equations, a calling sequence of class operations is determined. The calling sequence allows us to generate a control structure of a compiler. In this thesis, by suggesting a specification method for a dynamic behavior of an object model for a compiler, we conclude that a compiler specification based on object-oriented modeling is a feasible method to improve modularity of compilers for complex high-level programming languages.