Requisitos funcionales y no funcionales

Adicionalmente, tanto la investigación como la práctica de desarrollo de software se han enfocado en desarrollar técnicas y prácticas para descubrir los requisitos funcionales del sistema de software. Un requisito funcional describe las funciones que el software es capaz de ejecutar cuando está en operación. También se describe el requisito funcional como aquel para el cual se puede definir un conjunto finito de pasos de prueba para validar su comportamiento. Los requisitos funcionales incluyen: los datos de entrada para las funciones que ejecuta el software, los datos de salida, los cálculos y algoritmos que se deben implementar en el software.

Pondremos como ejemplo un sistema de gestión de nóminas. El requisito de determinar las horas extras trabajadas por cada uno de los integrantes de la plantilla de trabajadores es un requisito funcional, al igual que calcular el ingreso bruto que le corresponde a cada trabajador por el total de las horas extras. Las reglas del negocio, en este caso las que corresponden al manejo contable de la empresa, incluye los algoritmos que deben emplearse para realizar los cálculos. Los datos de entrada serán las horas trabajadas por día, el periodo en que se contabilizan las horas, y los rangos aceptables por ley de horas extras trabajadas. La salida sería el total de horas trabajadas para el primer caso, según la reglamentación aplicable.

Requisitos no funcionales

Los requisitos no funcionales describen la manera en que el software se debe comportar. Generalmente se ven como restricciones en las alternativas de solución que podrán proponerse en el diseño. Los requisitos no funcionales consideran aspectos como:

  1. Requisitos de la interfaz externa con otros sistemas. Hardware y software del entorno en donde se ejecutará el software y mecanismos de interfaz que deben establecerse para que el software se ejecute correctamente en el ambiente destino.
  2. Requisitos de la interacción con el usuario. Perfil de usuarios que usarán el software y tipo de interfaces y mecanismos de interacción que se les proporcionarán. Según el sistema software que se pretenda desarrollar se puede considerar discapacidades visuales, auditivas, motoras, cognitivas, entre otras. En algunos casos el ambiente de operación impone restricciones estrictas en interfaces con el humano.
  3. Requisitos de calidad. Se puede utilizar un estándar de calidad, como el ISO/IEC 25010, como base para discutir los requisitos de calidad del software. El modelo de calidad aborda características de calidad como la funcionalidad, fiabilidad, eficiencia, usabilidad, mantenibilidad, portabilidad, seguridad, y compatibilidad. Cada característica comprende un conjunto de subcaracterísticas que pueden usarse para determinar aquellos requisitos de calidad por implementarse en el software.
  4. Restricciones de diseño: Corresponde al uso de plantillas predefinidas, características de los archivos, lenguajes de programación, estándares.
  5. Otros: bases de datos, requisitos de instalación y de capacitación, entre otros.
tipos de requisitos

Los requisitos del software, funcionales y no funcionales se derivan de distintas fuentes y de distintos niveles de abstracción. La figura 1 muestra la relación que existe entre los distintos tipos de requisitos que podemos encontrar en el proyecto de desarrollo de software. Durante la etapa de requisitos del software, el conocimiento general y planteado como un objetivo al inicio del proyecto deriva los requisitos de los usuarios a través, de la elaboración de casos de uso, y estos a su vez permiten derivar los requisitos funcionales del software o del sistema de software.