To measure the quality of a software product, we have to define quality in terms of attributes that we desire to measure. Those desirable attributes (external attributes) are usually different from what we are actually able to measure from the artifacts produced along the software development process (internal attributes). To understand the relationship between external and internal attributes and to develop a successful measurement process, we have to develop software quality measurement models that distinguish between what we can measure and what we desire to measure. In this paper, we develop a model for software quality using the Unified Modeling Language (UML). In this model, we adopt a three-level hierarchy of relevant features, whereby we distinguish between qualitative attributes (that are externally observable, and most relevant from a user's viewpoint), quantitative factors (that have a precise mathematical formula, but may be difficult to evaluate), and computable metrics (that are internal, product-specific quantities that can be evaluated from the software artifacts).