Ingeniería del Software: Requisitos Funcionales y Requisitos no Funcionales

Tiempo de lectura: 6 minutos

En el mundo del desarrollo de software, es común hablar de requisitos para entender qué debe hacer un sistema. Los requisitos se dividen en dos categorías principales: requisitos funcionales y requisitos no funcionales. En este post, explicaremos la diferencia entre ambas categorías, presentaremos ejemplos y las clasificaremos para que quede claro cómo se comparan.

Requisitos Funcionales

Los requisitos funcionales se refieren a las características y funcionalidades específicas que debe tener el sistema para cumplir con los objetivos definidos. Estos requisitos son los que describen qué hace el sistema y cómo lo hace. Estos requisitos se enfocan en las acciones que el sistema debe realizar.

Por ejemplo, si se está desarrollando un sistema de facturación electrónica para una empresa, algunos requisitos funcionales podrían ser:

  • Permitir la creación de una factura
  • Permitir la modificación de una factura existente
  • Permitir la eliminación de una factura existente
  • Permitir la búsqueda de facturas
  • Permitir la descarga de una factura en formato PDF

Es importante tener en cuenta que los requisitos funcionales deben ser medibles, es decir, se deben poder probar para verificar si se han cumplido o no.

Requisitos No Funcionales

Los requisitos no funcionales, por otro lado, se refieren a características que no están relacionadas con lo que el sistema hace, sino con cómo lo hace. Estos requisitos se enfocan en aspectos como el rendimiento, la seguridad, la escalabilidad y la facilidad de uso. Los requisitos no funcionales son críticos para la experiencia del usuario y pueden afectar la satisfacción y la aceptación del sistema.

Por ejemplo, si se está desarrollando un sistema de facturación electrónica para una empresa, algunos requisitos no funcionales podrían ser:

  • Tiempo de respuesta de la aplicación: el sistema debe responder en menos de 3 segundos para garantizar una buena experiencia de usuario.
  • Escalabilidad: el sistema debe ser capaz de manejar al menos 1000 facturas al mes sin que su rendimiento se vea afectado.
  • Seguridad: el sistema debe cumplir con los estándares de seguridad establecidos por la empresa.
  • Usabilidad: la interfaz de usuario debe ser fácil de usar y entender para los usuarios finales.

Es importante tener en cuenta que los requisitos no funcionales son difíciles de medir y verificar. Por lo general, se deben especificar en términos de objetivos o requisitos de nivel de servicio.

Comparación de requisitos funcionales y no funcionales

La principal diferencia entre los requisitos funcionales y los no funcionales es que los primeros se enfocan en lo que el sistema debe hacer, mientras que los segundos se enfocan en cómo se debe hacer.

Otra diferencia importante es que los requisitos funcionales son medibles, mientras que los requisitos no funcionales no lo son en la mayoría de los casos. Esto se debe a que los requisitos no funcionales están más relacionados con la experiencia del usuario que con la funcionalidad del sistema en sí.

Sin embargo, los requisitos no funcionales son tan importantes como los requisitos funcionales. La satisfacción del usuario y la aceptación del sistema dependen en gran medida de la capacidad del sistema para cumplir con los requisitos no funcionales. De hecho, algunos argumentan que los requisitos no funcionales son más importantes que los requisitos funcionales, ya que afectan directamente la satisfacción del usuario.

Es importante tener en cuenta que ambos tipos de requisitos deben ser considerados desde el inicio del proyecto. Si se ignoran los requisitos no funcionales, el sistema podría ser inseguro, difícil de usar o no escalable, lo que podría llevar a una mala experiencia del usuario y a la insatisfacción con el sistema. Por otro lado, si se ignoran los requisitos funcionales, el sistema podría no hacer lo que se espera de él y, por lo tanto, ser inútil para el usuario.

Otra forma de comparar los requisitos funcionales y no funcionales es clasificarlos en subcategorías, lo cual nos permitirá entender mejor cada tipo de requisito.

Clasificación de los requisitos funcionales

Los requisitos funcionales se pueden clasificar en diferentes subcategorías, como se muestra a continuación:

  1. Requisitos de procesamiento: son aquellos que describen cómo se procesa la información dentro del sistema.
  2. Requisitos de entrada/salida: son aquellos que describen cómo se introducen datos en el sistema y cómo se presentan los resultados.
  3. Requisitos de almacenamiento: son aquellos que describen cómo se almacena la información dentro del sistema.
  4. Requisitos de rendimiento: son aquellos que describen los niveles de rendimiento que el sistema debe alcanzar.
  5. Requisitos de usabilidad: son aquellos que describen cómo se deben diseñar la interfaz de usuario para que sea fácil de usar y entender para los usuarios finales.

Clasificación de los requisitos no funcionales

Los requisitos no funcionales también se pueden clasificar en diferentes subcategorías, como se muestra a continuación:

  1. Requisitos de rendimiento: son aquellos que describen cómo se deben medir y cumplir los objetivos de rendimiento del sistema.
  2. Requisitos de seguridad: son aquellos que describen cómo se deben proteger los datos y la información del sistema.
  3. Requisitos de escalabilidad: son aquellos que describen cómo se debe manejar el crecimiento futuro del sistema.
  4. Requisitos de disponibilidad: son aquellos que describen cómo se debe garantizar la disponibilidad del sistema para los usuarios finales.
  5. Requisitos de usabilidad: son aquellos que describen cómo se deben diseñar la interfaz de usuario para que sea fácil de usar y entender para los usuarios finales.

Ejemplo de comparación de requisitos funcionales y no funcionales

Consideremos un ejemplo en el que se está desarrollando un sistema de reservas de hotel. Algunos requisitos funcionales y no funcionales para este sistema podrían ser los siguientes:

Requisitos funcionales:

  1. El sistema debe permitir la reserva de habitaciones de hotel.
  2. El sistema debe permitir la cancelación de reservas de hotel.
  3. El sistema debe mostrar las tarifas y la disponibilidad de las habitaciones en tiempo real.
  4. El sistema debe enviar una confirmación de reserva al cliente por correo electrónico.

Requisitos no funcionales:

  1. El sistema debe estar disponible las 24 horas del día, los 7 días de la semana.
  2. El sistema debe tener una respuesta de menos de 3 segundos para garantizar una buena experiencia de usuario.
  3. El sistema debe garantizar la seguridad de los datos del cliente, como información personal y detalles de tarjetas de crédito.
  4. La interfaz de usuario debe ser fácil de usar y entender para los usuarios finales.

Como se puede observar, los requisitos funcionales se refieren a las funcionalidades específicas que se esperan del sistema, como la posibilidad de reservar habitaciones de hotel, mostrar tarifas y disponibilidad, y enviar confirmaciones de reserva. Por otro lado, los requisitos no funcionales se refieren a aspectos más generales, como la disponibilidad del sistema, el tiempo de respuesta y la seguridad de los datos del cliente.

En este ejemplo, ambos tipos de requisitos son importantes. Los requisitos funcionales aseguran que el sistema haga lo que se espera de él, mientras que los requisitos no funcionales aseguran que el sistema sea seguro, confiable y fácil de usar para el usuario final.

Aquí te muestro un ejemplo de una tabla de requisitos para un sistema de gestión de ventas:

IDNombre del RequisitoDescripciónPrioridadTipo
1Registro de clientesEl sistema debe permitir el registro de nuevos clientes en la base de datos.AltaFuncional
2Gestión de productosEl sistema debe permitir la gestión de productos, incluyendo la creación, modificación y eliminación de productos.AltaFuncional
3Reportes de ventasEl sistema debe generar reportes de ventas que muestren las ventas totales por día, semana, mes y año.MediaFuncional
4Seguridad de datosEl sistema debe garantizar la seguridad de los datos de los clientes y de las ventas.AltaNo Funcional
5Accesibilidad nivel AAEl sistema debe garantizar una accesibilidad nivel AA para poder establecerse en una entidad pública.AltaNo Funcional

En esta tabla, cada requisito tiene un ID único y se le da un nombre y una descripción para ayudar a entender de qué se trata. Además, se asigna una prioridad para indicar la importancia del requisito en el proyecto y se clasifica como funcional o no funcional para ayudar en la planificación y el diseño del sistema.

El requisito número 1 se refiere a la funcionalidad del sistema de registro de nuevos clientes, lo que significa que es un requisito funcional de alta prioridad. El requisito número 2 se refiere a la gestión de productos, también es un requisito funcional de alta prioridad. El requisito número 3 se refiere a la generación de reportes de ventas, que es un requisito funcional de media prioridad.

El requisito número 4 se refiere a la seguridad de los datos, lo que significa que es un requisito no funcional de alta prioridad. El requisito número 5 se refiere a la integración con redes sociales, lo que significa que es un requisito no funcional de baja prioridad.

Al utilizar una tabla de requisitos como esta, se puede mantener un registro organizado y detallado de los requisitos del proyecto, lo que facilita la planificación y el diseño del sistema. También ayuda a asegurarse de que todos los requisitos importantes sean considerados y cumplidos durante el desarrollo del proyecto.

En resumen, los requisitos funcionales y no funcionales son dos tipos de requisitos que se deben considerar en cualquier proyecto de desarrollo de software. Los requisitos funcionales describen lo que el sistema debe hacer, mientras que los requisitos no funcionales describen cómo debe hacerlo. Ambos tipos de requisitos son igualmente importantes y deben ser considerados desde el inicio del proyecto para garantizar que el sistema sea útil, seguro, confiable y fácil de usar para los usuarios finales.

2 comentarios en «Ingeniería del Software: Requisitos Funcionales y Requisitos no Funcionales»

  1. Que genial Ismael, muy imprescindible al momento de comenzar el desarrollo de un proyecto, soy desarrollador Junior y bueno no he tenido la experiencia laboral y la verdad no lo sabia lo empezare a aplicar en mis futuros desarrollos, gracias.

    Responder

Deja un comentario