Software structural quality refers to how software meets non-functional requirements that support the delivery of the functional requirements, such as robustness or maintainability; and the degree to which the software was produced correctly. Structural quality is evaluated through the analysis of the software inner structure, its source code; in effect, how its architecture adheres to sound principles of software architecture. In contrast, functional quality is typically enforced and measured through software testing.