Atributos de Calidad.
Atributos de calidad (también cualidades del software) son características no funcionales que se consideran deseables en un sistema de software. Sin embargo, no todos los sistemas de software deben tener en cuenta todos estos atributos o cualidades, algunas serán más importantes que otras dependiendo del sistema, y ciertamente no se pueden maximizar todas a la vez.
Se establece una diferencia entre cualidades y requerimientos, porque algunas de ellas pueden incorporarse como entrada al diseño por un camino distinto al del análisis (por ejemplo, como restricciones de arquitectura o influencias del entorno).
Simplicidad
Complejidad esencial: las que son propias o intrínsecas al problema que se desea solucionar. Es natural que un problema complejo tenga soluciones con algún grado de complejidad.
Complejidades accidentales: aquellas que surgen por malas decisiones de diseño. Naturalmente, se intentará evitar diseñar soluciones que sean más complejas de lo que el problema requiere.
Determinar si una dificultad en un diseño o programa es esencial o accidental, nos permite atacar las dificultades accidentales, buscando soluciones más simples.