En general, los requisitos se refieren a características que debe cumplir un producto, mientras que los requerimientos se refieren a funciones que debe realizar el producto. En ingeniería de software, sin embargo, la diferencia entre requisitos y requerimientos es un poco más sutil.
Los requisitos se pueden dividir en dos categorías principales: requisitos funcionales y no funcionales. Los requisitos funcionales se refieren a las cosas que el software debe hacer, mientras que los requisitos no funcionales se refieren a las características del software en sí. Los requerimientos funcionales se pueden dividir aún más en requerimientos de usuario y requerimientos de sistema. Los requerimientos de usuario se refieren a las funciones que el usuario final espera que el software realice, mientras que los requerimientos de sistema se refieren a las funciones que el software debe realizar para satisfacer los requisitos no funcionales.
En general, se considera que los requerimientos deben ser lo suficientemente detallados como para permitir la elaboración de un diseño y la implementación del software. Sin embargo, también deben ser lo suficientemente abstractos como para permitir cierto grado de flexibilidad en el diseño y la implementación. En consecuencia, un buen requerimiento debe ser especifico, pero no demasiado detallado; debe ser consistente, pero no demasiado rígido; y debe ser modificable, pero no demasiado indulgente.