Sobre los requerimientos de software
Un tema básico de la ingeniería de software son los requerimientos funcionales y los no funcionales y realmente no debe de darsele muchas vueltas.
La Wikipedia tiene una frase que me encanta como resume su significado:
Los «requerimientos funcionales» definen lo que un sistema debe hacer, los «requerimientos no funcionales» definen como un sistema debe de ser.