This document proposes a new approach to building software quality models that addresses issues with existing models. The approach focuses on design patterns, uses patterns to evaluate subsets of a program's design and architecture, and incorporates human quality estimations using machine learning. Key steps include: 1) identifying quality characteristics of patterns, 2) organizing characteristics, 3) choosing metrics, 4) assessing pattern quality, 5) computing metric values, 6) linking metrics to assessments, and 7) validating the model. The approach was tested on several programs using 23 design patterns and quality was evaluated based on flexibility, reusability, robustness, scalability, and usability.