Ingenieria en Software

Requerimientos No Funcionales: Porque son importantes


Todos los Servicios de Tecnología de Información (TI) en algún punto de su ciclo de vida, necesitan considerar los requerimientos no funcionales y las pruebas asociadas a los mismos.

Para algunos proyectos, estos requerimientos implican una cantidad considerable de trabajo y esfuerzos, mientras que para otros no.

Con frecuencia, los requerimientos no funcionales son ignorados o subestimados en la fase de análisis de requerimientos. El error, termina identificándose en la fase de implementación cuando remediarlos implica más trabajo y costo, pudiendo ocasionar que no sean adoptados por los usuarios y clientes.

En este artículo se presenta una definición de que son los requerimientos no funcionales de un servicio de tecnología de información o un sistema, se describen las categorías en las que pueden clasificarse, las posibles consecuencias de no definirlos en la fase de Diseño y algunos ejemplos de requerimientos no funcionales.

Que son los Requerimientos No Funcionales

Los requerimientos no funcionales son los que especifican criterios para evaluar la operación de un servicio de tecnología de información, en contraste con los requerimientos funcionalesque especifican los comportamientos específicos.

Por lo general, el Plan para implementarlos requerimientos no funcionales se detalla en la Arquitectura del Sistema, mientras que el de los requerimientos funcionales se especifica en el Diseño.

Fuente: Wikipedia

Para ver algunos ejemplos de requerimientos no funcionales consulta los siguientes artículos:

Requerimientos no funcionales: Ejemplos

10 Tipos de pruebas no funcionales de software

Los Requerimientos funcionalesdefinen los criterios que este debe cumplir para que este sea adecuado para su propósito (Fitness-for-purpose), mientras que los requerimientos no funcionales especifican los criterios que debe cumplir para que sea adecuado para su uso (Fitness-for-use).

Otros términos usados para los requerimientos no funcionales pueden ser: Restricciones, Atributos de calidad, objetivos de calidad, requerimientos de calidad de servicio.

Categorías en las que pueden clasificarse

Se pueden clasificar en dos categorías:

  • Cualidades observables en tiempo de ejecución, como por ejemplo la usabilidad y la seguridad.
  • Cualidades relacionadas con la evolución del sistema, como por ejemplo Mantenibilidad, Comprobabilidad, Extensibilidad y Escalabilidad, las cuales están inmersas en la estructura del sistema de software.

Como Analista de sistemas o Ingeniero de requerimientos, es de extremada utilidad contar con una clasificación de requerimientos no funcionales para identificar los que te puedes encontrar. Te recomendamos el siguiente artículo que presenta más detalle:

Requerimientos no funcionales: Una clasificación
Algunos Requerimientos No Funcionales

Algunos ejemplos de requerimientos no funcionales son:

  • Comprobabilidad: Grado en que un sistema, software o servicio de TI permite y facilita que sea probado en un determinado contexto.
  • Disponibilidad: Corresponde al tiempo total en que un sistema puede ser usado en un período determinado. También puede definirse el grado en que un sistema está en un estado operable definido cada vez que se necesite.
  • Extensibilidad: Grado en que la implementación del sistema toma en consideración y facilita su crecimiento en el futuro.
  • Escalabilidad: Capacidad de un sistema o servicio de TI de manejar una creciente carga de trabajo, por ejemplo mayor número de conexiones o usuarios. No debe confundirse con extensibilidad, que mide la capacidad del sistema de crecer en funcionalidades.
  • Mantenibilidad: Mide la facilidad con que puede darse mantenimiento al producto (en este caso al software o servicio de TI), con la finalidad de: Desarrollar nuevos requerimientos, Aislar los defectos y sus causas, corregir estos defectos y atender las demandas del entorno cambiante. 
  • Seguridad: Grado de protección de los datos, software y plataforma de tecnología de posibles pérdidas, actividades no permitidas o uso para propósitos no establecidos previamente.
  • Usabilidad: Definido como la facilidad de uso y aprendizaje de un Sistema, Software o Servicio de Tecnología de Información.

Necesidad de definir los requerimientos no funcionales en términos precisos y que puedan medirse

Para todo proyecto de TI, es crítico que los requerimientos no funcionales sean definidos con los usuarios, clientes y otros interesados en términos precisos y medibles en la etapa de análisis del proyecto. No hacerlo puede poner en riesgo el éxito de un proyecto.

Por ejemplo, tomando el caso de los tiempos de respuesta de un sistema, lo cual podría clasificarse en disponibilidad, ¿que sucedería si no se definiera el tiempo de respuesta deseado en la fase de análisis de requerimientos?, o si se definiera en términos imprecisos, como por ejemplo indicado, «Se necesita un tiempo de respuesta aceptable».

Al llegar a la fase de implementación, quizás en sistema tendría un tiempo de respuesta, digamos de 15 segundos(debido a muchas plataformas remotas y bases de datos involucradas), pero el usuario lo necesitaba en menos de 5 segundos, para por ejemplo, evitar que se forme una fila muy larga para atender a clientes.

Errores como esto pudieran ocasionar inclusive que el usuario final decidiera no usar el nuevo sistema, haciendo fracasar el proyecto.

Por ende, es importante definir los requerimientos con métricas que puedan establecer sin lugar a duda que el sistema o servicio de TI desarrollado cumple los parámetros no funcionales solicitados.

En el caso particular de tiempos de respuesta (desempeño de un sistema) una herramienta útil para comprobarla es SoapUI, que permite hacer pruebas de carga o estrés sobre webservices. Aquí te compartimos artículos sobre el tema:

Pruebas de webservices con SoapUI
Tutorial de SoapUI en español – Proyecto de ejemplo
Para asegurar que el criterio de aceptación quede claramente definido, al definir un requerimiento no funcional este podría expresarse en términos de las sesiones concurrentes o carga de SoapUI que debe ser capaz de soportar.

Otros requerimientos no funcionales

Otros requerimientos no funcionales pueden ser: Accesibilidad, Capacidad, Cumplimiento, Documentación, Requerimientos de despliegue, Efectividad, Eficiencia, Tolerancia a fallos, Modificabilidad, Operabilidad, Portabilidad, Confiabilidad, entre otros.

En en artículo de Wikipedia se listan más ejemplos de requerimientos no funcionales.

Joan Manuel Gregorio Pérez

Ingeniero en software, Magister Gestión de la Tecnología Educativa, amante de la tecnología y videojuegos, docente, padre y gamers

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
No data found.