Software Code Quality

It is important to assess process quality, as it is a driver of product quality; however, it is also important to measure the quality of the resulting artefacts: documents like requirements, architecture, test plan; model for specifying and reasoning on structural or behavioral aspects of the software; source code, test suites.
A whole spectrum of techniques can be used can be used to this end, ranging from the simplest to the most complex (and requiring more heavy tool support): manual review, static analysis based on software metrics, static analysis based on deeper semantic reasoning and formal verification techniques.