The demand for increased software quality has resulted in quality being more of differentiator between products than it ever has been before. For this reason, software developers need objective and valid measures for use in the evaluation and improvement of product quality from the initial stages of development. Class diagrams are a key artifact in the development of object-oriented (OO) software because they lay the foundation for all later design and implementation work. It follows that emphasizing class diagram quality may significantly contribute to higher quality OO software systems. The primary aim of this work, therefore, is to present a survey, as complete as possible, of the existing relevant works regarding class diagram metrics. Thus, from works previously published, researchers and practitioners alike may gain broad and ready access to insights for measuring these quality characteristics. Another aim of this work is to help reveal areas of research either lacking completion or yet to undertaken. A SURVEY OF METRICS FOR UML CLASS DIAGRAMS 60 J OURNAL OF OBJECT TECHNOLOGY V OL. 4, NO. 9 Recently, paradigms such as Model-Driven Development [Atkin03] and the Model-Driven Architecture [OMG02] have emphasized the importance of "good" models from the beginning of the life cycle. For that reason, the main focus must be on the quality of models obtained in these "early" stages. In the OO paradigm one of the key artifacts is the class diagram. The class diagram constitutes the backbone of the OO development and provides a solid foundation for the design and the implementation of software. Therefore, class diagram quality has great influence over the system that is ultimately implemented. Quality in software products is characterised by the presence of different external attributes 1 such as functionality, reliability, usability, efficiency, maintainability and portability [ISO01]. But these attributes can only be measured late in the OO software development life cycle. Therefore, it is necessary to find early indicators of such qualities based, for example, on the structural properties of class diagrams [Briand00a]. This is the context where software measurement is fundamental, because measures can allow us to evaluate class diagram quality characteristics in an objective way, thus avoiding a bias in the evaluation process. Measuring class diagram quality allows OO software designers: • to identify weak design spots when it costs less to improve them, rather than repair consequent errors at later implementation phases. • to choose between design alternatives in an objective way. • to predict external quality characteristics such as, maintainability, reusability, etc., and improve resource allocation based on these predictions. Although in the OO software measurement arena the need for measures that can be applied in the early phases of the development process is emerging, up until a few years ago the work done in this sense was scarce because most software measurement researchers focused on the measurement of c...