En el diseño del software se habla sobre los requisitos del sistema, estos requisitos se dividen en funcionales y no funcionales y se definirán a continuación.
Requisitos funcionales
Estos requisitos o requerimientos describen lo que el sistema debe hacer. En este punto es necesario saber que los requerimiento funcionales se subdividen o se pueden subdividir en requerimientos funcionales del usuario y del sistema.
Los requerimientos funcionales del sistema describen con detalle con detalle la funciona de esté, sus entradas y salidas, excepciones.
Los requerimientos funcionales del usuario definen los recursos específicos que el sistema debe proporcionar. Estos requerimientos se entregan de forma abstracta de tal forma que sean entendibles para las personas que no trabajaran en el diseño del proyecto, como podría ser los clientes.
Existen una seria de normas que los requerimientos deben cumplir para que el proyecto tenga éxito, estas normas se pueden encontrar en el ieee 830 donde se habla de las cualidades de un requerimiento de calidad.
Requisitos no funcionales.
Los también llamados requerimientos no funcionales son aquellos que no se refieren directamente con las funciones específicas del sistema si no a las propiedades emergentes que de por si el sistema debe tener, como por ejemplo fiabilidad, tiempos de respuesta, capacidad de almacenamiento.
Aunque no siempre hacen referencia al sistema a desarrollar y pueden especificar las restricciones que el proceso que se debe utilizar para desarrollar el sistema.
Lo cierto es que los requerimientos no funcionales surgen de las necesidades del usuario, a las restricciones en el presupuesto, a las políticas de la organización, a la necesidad de interoperabilidad con otro sistemas.
Siguiendo el siguiente esquema se pueden comenzar a especificar en el proyecto varios requerimientos funcionales.
Requerimientos del producto: Estos requerimientos especifican el comportamiento del sistema.