Software Design/Complexity (high-level quality)

Complexity as a high-level code quality is defined by John Ousterhout in A Philosopy of Software Design as "anything related to the structure of a software system that makes it hard to understand and modify the system." It is derived from the following qualities:
 * Complexity as a primary quality
 * Steepness of learning curve
 * Interface size and its conceptual weight
 * Naturality
 * Code clarity
 * Code size
 * Easiness of change
 * And other qualities.