En el mundo de la ingeniería, especialmente en el desarrollo de software y la ingeniería de sistemas, la comprensión de la distinción crítica entre requisitos funcionales y no funcionales es fundamental para el éxito del proyecto. El 37% de los proyectos fracasan debido a necesidades poco claras o erróneas, por lo que es esencial que los ingenieros, desarrolladores, directores de proyectos e interesados comprendan a fondo estos conceptos. Estos requisitos forman la columna vertebral del diseño del sistema, influenciando directamente todo desde la experiencia del usuario y el rendimiento del sistema hasta la sostenibilidad y escalabilidad a largo plazo.

Esta guía amplia explora en profundidad los requisitos funcionales y no funcionales, proporcionando ejemplos prácticos, mejores prácticas para la documentación y estrategias para la gestión eficaz de los requisitos. Ya sea que esté construyendo una plataforma de comercio electrónico, desarrollando software empresarial o diseñando sistemas complejos, dominar estos requisitos mejorará significativamente los resultados de su proyecto.

¿Cuáles son los requisitos funcionales?

En la ingeniería de software y la ingeniería de sistemas, un requisito funcional define una función de un sistema o su componente, donde una función se describe como un resumen (o especificación o declaración) de comportamiento entre entradas y salidas. Los requisitos funcionales definen las características y operaciones específicas que un sistema debe realizar para satisfacer las necesidades de negocios y usuarios.

Los requisitos funcionales definen las características y funciones de un sistema. En otras palabras, describen qué debe hacer exactamente el producto del software en condiciones normales para satisfacer las necesidades del usuario. Desde la perspectiva de un desarrollador, estas son las características que deben implementarse para asegurar que el sistema funcione como se desee.

Los requisitos funcionales pueden implicar cálculos, detalles técnicos, manipulación y procesamiento de datos, y otras funcionalidades específicas que definen lo que un sistema se supone que debe lograr. Sirven de base para los equipos de desarrollo, proporcionando directrices claras sobre lo que hay que construir y cómo el sistema debe responder a diversas aportaciones.

Características clave de los requisitos funcionales

Los requisitos funcionales poseen varias características que las distinguen de otros tipos de requisitos:

  • Especificación: Describen comportamientos y funciones precisos que el sistema debe realizar
  • Probabilidad: Cada requisito puede verificarse mediante pruebas para confirmar la aplicación
  • Usuario-Focused: Se relacionan directamente con las necesidades de los usuarios y los objetivos empresariales
  • Action-Oriented: Definen lo que hace el sistema en respuesta a los insumos
  • Medibilidad: Han definido los resultados que se pueden medir, como el acceso exitoso con credenciales válidas

Tipos de requisitos funcionales

Los requisitos funcionales pueden clasificarse en varios tipos basados en los flujos de trabajo y comportamientos que describen:

Reglas de negocios y lógica

Las reglas de negocio son generalmente el grupo más grande ya que definen cómo el sistema responde a los comandos en el flujo de usuario principal. Estos requisitos especifican la lógica empresarial básica que impulsa el comportamiento de la aplicación, incluyendo cálculos, procesos de toma de decisiones y automatización del flujo de trabajo.

Autenticación y Autorización del Usuario

Los requisitos de autenticación y autorización definen cómo los usuarios acceden al sistema y qué permisos tienen. Estos requisitos especifican mecanismos de inicio de sesión, políticas de contraseña, control de acceso basado en roles y protocolos de seguridad para la verificación de identidad de usuario.

Necesidades de gestión de datos

Los requisitos de datos definen cómo deben crearse, almacenarse, modificarse y eliminarse los datos. Son especialmente importantes si su producto maneja datos de usuario sensibles. Estos requisitos abarcan operaciones de base de datos, reglas de validación de datos, procesos de transformación de datos y políticas de retención de datos.

Requisitos de interfaz de usuario

Los requisitos de UI especifican cómo sus usuarios interactuarán con su producto. Definen elementos de diseño que hacen intuitiva la navegación. Estos requisitos describen los elementos visuales, patrones de interacción, flujos de navegación y componentes de interfaz de usuario que los usuarios encontrarán.

Requisitos de transacción y procesamiento

Estos requisitos definen cómo el sistema procesa las transacciones, maneja las operaciones comerciales y gestiona los flujos de trabajo. Especifican los pasos que implican completar tareas, la secuencia de operaciones y los resultados esperados de diversos procesos.

Ejemplos completos de requisitos funcionales

La comprensión de los requisitos funcionales se hace más clara mediante ejemplos concretos en diferentes industrias y tipos de aplicaciones. Estos son ejemplos detallados organizados por dominio:

Ejemplos de aplicación de comercio electrónico

Un sitio web de eCommerce debe tener requisitos funcionales que definen cómo los clientes buscan artículos, revisan sus características, hacen un pedido, pagan y reciben confirmación. Ejemplos específicos son:

  • El sistema debe permitir a los usuarios crear una cuenta mediante dirección de correo electrónico y contraseña
  • Los usuarios deben poder navegar por productos por categoría, precio y filtros de marca
  • Los usuarios deben poder añadir productos a un carrito de compras y ver contenido del carrito
  • El usuario puede revisar los artículos en el carrito, cambiar su número o eliminarlos antes de la salida
  • El usuario puede agregar el código de promoción y obtener un descuento antes de la salida
  • El sistema debe procesar las transacciones de pago de forma segura a través de portales de pago integrados
  • El sistema envía un correo electrónico de confirmación al usuario después de haber reservado un vuelo
  • Los usuarios deben poder proporcionar servicios/productos de retroalimentación o tasa dentro de la aplicación

Banking and Financial Systems

  • El sistema debe permitir a los clientes transferir fondos entre cuentas
  • Los usuarios deben poder ver el historial de transacciones durante los últimos 12 meses
  • La aplicación debe permitir la programación de pago de facturas con opciones de pago recurrentes
  • El sistema debe generar estados de cuenta mensuales en formato PDF
  • Los usuarios deben poder configurar alertas de cuenta para tipos de transacción específicos
  • El sistema debe verificar los saldos de las cuentas antes de tramitar las solicitudes de retiro

Healthcare Management Systems

  • El sistema debe permitir a los proveedores de atención médica programar citas de pacientes
  • El personal médico debe poder acceder y actualizar los registros médicos del paciente
  • La aplicación debe permitir la gestión y recarga de recetas
  • El sistema debe generar recordatorios automatizados de citas por correo electrónico y SMS
  • Los proveedores de atención médica deben poder ver los resultados de las pruebas de pacientes e informes de diagnóstico
  • El sistema debe apoyar la integración de registros electrónicos de salud (EHR) con sistemas externos

Gestión de contenidos y redes sociales

  • El sistema debe permitir que los visitantes del blog se inscriban en el boletín de noticias dejando su correo electrónico
  • Los usuarios deben poder crear, editar y publicar contenido con formato de texto rico
  • El sistema debe permitir la categorización de contenidos utilizando etiquetas y categorías
  • Los usuarios deben poder subir y gestionar archivos multimedia incluyendo imágenes y vídeos
  • La aplicación puede enviar notificaciones a los usuarios para actualizaciones, recordatorios o contenido promocional
  • El sistema debe proporcionar funcionalidad de búsqueda en todo el contenido publicado
  • Los usuarios deben poder compartir contenido en plataformas de redes sociales externas

Sistemas de planificación de los recursos institucionales (ERP)

  • El software de gestión de hoteles debe permitir al personal gestionar las reservas entrantes, crear y gestionar planes de tarifas, aceptar pagos, generar informes, etc.
  • El sistema debe rastrear los niveles de inventario y generar alertas automáticas de reordenación
  • Los usuarios deben poder generar informes financieros incluyendo estados de lucro y pérdidas
  • La aplicación debe apoyar transacciones y conversiones multicurrencia
  • El sistema debe permitir el seguimiento del tiempo del empleado y el procesamiento de la nómina de sueldos
  • Los usuarios deben poder gestionar las relaciones con los proveedores y comprar pedidos

Ejemplos de aplicaciones móviles

  • La aplicación debe permitir a los usuarios crear cuentas e iniciar sesión utilizando credenciales como correo electrónico y contraseña o mediante la integración de redes sociales
  • La aplicación debe apoyar el modo offline con sincronización de datos cuando se restablece la conectividad
  • Los usuarios deben poder acceder a servicios y características basados en la ubicación
  • La aplicación debe habilitar notificaciones push para actualizaciones y alertas importantes
  • Los usuarios deben poder personalizar los ajustes y preferencias de las aplicaciones
  • El sistema debe apoyar la autenticación biométrica incluyendo huella dactilar y reconocimiento facial

¿Cuáles son los requisitos no sindicales?

En la ingeniería de sistemas y la ingeniería de requisitos, un requisito no funcional (NFR) es un requisito que especifica criterios que pueden utilizarse para juzgar el funcionamiento de un sistema, en lugar de comportamientos específicos. Se contrastan con requisitos funcionales que definen comportamiento o funciones específicas.

En términos generales, los requisitos funcionales definen lo que se supone que debe hacer un sistema y los requisitos no funcionales definen cómo se supone que debe ser un sistema. Los requisitos no funcionales (NFRs) definen cómo debe funcionar un sistema, centrándose en el rendimiento, la fiabilidad y la experiencia del usuario en lugar de características específicas. Garantizan que el sistema es eficiente, seguro y sostenible con el tiempo.

Los requisitos no funcionales se llaman a menudo "atributos de calidad" de un sistema. Las propiedades generales del sistema marcan comúnmente la diferencia entre si el proyecto de desarrollo ha logrado o fallado. Si bien los requisitos funcionales aseguran que el sistema funcione, los requisitos no funcionales garantizan que funcione bien y satisfacen las expectativas de los usuarios respecto a la calidad, el rendimiento y la fiabilidad.

Comprender la importancia de los requisitos no electorales

Centrarse únicamente en necesidades funcionales a expensas de necesidades no funcionales puede causar problemas importantes. Los requisitos funcionales podrían considerarse cumplidos incluso cuando no se cumplan los requisitos no funcionales. Una transacción que toma 20 segundos para completar con éxito puede ser funcional – pero ciertamente no es usable.

Los requisitos no funcionales afectan directamente la satisfacción del usuario, la adopción del sistema y el éxito a largo plazo. Un sistema que realiza todas las funciones necesarias pero carga lentamente, se bloquea con frecuencia o presenta vulnerabilidades de seguridad en última instancia no cumplirá los objetivos de negocio y las necesidades de los usuarios.

Tipos completos de requisitos no funcionales

Informalmente estos son a veces llamados las "ilidades", de atributos como estabilidad y portabilidad. Las categorías, que son requisitos no funcionales, pueden dividirse en dos categorías principales: Calidades de ejecución, tales como seguridad, seguridad y usabilidad, que son observables durante el funcionamiento (en tiempo de ejecución). Las cualidades de la evolución, como la testabilidad, el mantenimiento, la extensibilidad y la escalabilidad, que se encarnan en la estructura estática del sistema.

Requisitos de ejecución

Los requisitos de rendimiento especifican cómo el sistema debe reaccionar a la carga pesada del usuario. Esto implica la comprobación de métricas tales como tiempo de inicio, tiempo de respuesta, latencia y el número máximo de usuarios simultáneos que la aplicación puede soportar.

Las necesidades de rendimiento son esenciales para garantizar que los sistemas puedan manejar las cargas de trabajo previstas sin degradación. Entre los aspectos principales figuran:

  • Tiempo de respuesta: El tiempo máximo permitido para que el sistema responda a las solicitudes de usuario
  • Mediador: El número de transacciones o operaciones que el sistema puede procesar por unidad de tiempo
  • Utilización de los recursos: CPU, memoria y consumo de ancho de banda bajo diversas condiciones de carga
  • Usuarios concurrentes: El número de usuarios simultáneos que el sistema puede soportar
  • Hora de carga: Cuán rápidas páginas, pantallas o carga de datos para los usuarios

Ejemplo: Un requisito de rendimiento para una aplicación bancaria sería que debería ser capaz de procesar transacciones dentro de 3 segundos, incluso durante períodos de alto tráfico de usuarios.

Necesidades de seguridad

Los requisitos de seguridad definen cómo el sistema protege los datos, previene el acceso no autorizado y mantiene la confidencialidad, la integridad y la disponibilidad. Estos requisitos son cada vez más críticos en el panorama de la amenaza de hoy.

Los requisitos de seguridad abarcan:

  • Autenticación: Métodos para verificar la identidad del usuario
  • Autorización: Mecanismos de control de acceso y niveles de permiso
  • Encriptación de datos: Protección de datos en tránsito y en reposo
  • Trails de auditoría: Logging and monitoring of security-relevant events
  • Protección de vulnerabilidad: Defensas contra amenazas comunes de seguridad
  • Privacidad de datos: Cumplimiento de las normas de privacidad y protección de datos

Ejemplo: Los datos deben encriptarse tanto en tránsito usando TLS 1.3 como en reposo usando estándares de encriptación AES-256.

Requisitos de usabilidad

La usabilidad es básicamente sobre la facilidad de uso. Esto significa que la interfaz de producto debe ser intuitiva y fácil de navegar, sus características deben ser comprensibles y fáciles de encontrar, y, lo más importante, debe satisfacer las necesidades del usuario.

Dirección de requisitos de usabilidad:

  • Aprendiz: Qué rápido los nuevos usuarios pueden llegar a ser productivos con el sistema
  • Eficiencia: Lo rápido que los usuarios experimentados pueden realizar tareas
  • Memorabilidad: Cuán fácilmente los usuarios pueden regresar al sistema después de un período de no uso
  • Prevención del error: Características de diseño que evitan errores de usuario
  • Satisfacción: Qué agradable y satisfactorio el sistema es utilizar
  • Accesibilidad: Apoyo a los usuarios con discapacidad y necesidades diversas

Ejemplo: Los nuevos usuarios deben poder completar su primera transacción en 5 minutos sin necesidad de ayuda externa o documentación.

Requisitos de fiabilidad y disponibilidad

Este conjunto de NFR declara que el sistema debe estar disponible tanto como sea posible, y que el tiempo de inactividad debe minimizarse. Los requerimientos de fiabilidad aseguran que el sistema funcione de forma sistemática y previsible con el tiempo.

Las principales consideraciones son:

  • Hora actual: Porcentaje de tiempo que el sistema está en funcionamiento y es accesible
  • Mean Time Between Failures (MTBF): Tiempo medio entre fallos del sistema
  • Tiempo medio de reparación (MTTR): Tiempo medio requerido para restaurar la funcionalidad del sistema
  • Tolerancia por defecto: Capacidad del sistema para continuar operando a pesar de fallos de componentes
  • Recuperación de Desastres: Procedimientos y capacidades para recuperarse de fallas catastróficas

Ejemplo: El sistema debe estar disponible el 99,9% del tiempo, excluyendo las ventanas de mantenimiento programadas, que se traduce en no más de 8.76 horas de inactividad al año.

Requisitos de escalabilidad

Los requisitos de escalabilidad definen cómo el sistema crece y se adapta a mayores demandas, ya sea en términos de usuarios, volumen de datos o procesamiento de transacciones. Estos requisitos son esenciales para que los sistemas que se espera crezcan con el tiempo.

  • Escalabilidad horizontal: Capacidad de añadir más servidores o nodos para distribuir carga
  • Escalabilidad vertical: Capacidad para aumentar los recursos en los servidores existentes
  • Escalabilidad de datos: Capacidad para manejar volúmenes de datos crecientes
  • Escalabilidad geográfica: Apoyo a la ampliación a nuevas regiones o lugares

Ejemplo: El sistema debe ser capaz de manejar a 20 millones de usuarios sin deterioro del rendimiento.

Requisitos de conservación

Un sistema de mantenimiento debe ser capaz de mantenerse eficaz en función de los costos durante su vida prevista, y puede incorporar requisitos adicionales como la modificación, la configurabilidad, la extensibilidad y la interoperabilidad.

La sostenibilidad abarca:

  • Calidad del Código: Normas para legibilidad de código, documentación y estructura
  • Modularidad: Grado en que los componentes del sistema son independientes e intercambiables
  • Probabilidad: Facilidad de componentes y funcionalidad del sistema de pruebas
  • Configurabilidad: Capacidad para modificar el comportamiento del sistema sin cambios de código
  • Extensibilidad: Facilidad de añadir nuevas características y capacidades

Cumplimiento y requisitos reglamentarios

Los requisitos no funcionales en la categoría de cumplimiento establecen que los sistemas de software deben cumplir con los requisitos legales y reglamentarios; la auditoría se incluye típicamente en esta categoría también.

Los requisitos de cumplimiento varían según la industria y la jurisdicción, pero generalmente incluyen:

  • La puerta de procesamiento de pagos debe ser compatible con PCI DSS
  • El software clínico debe cumplir con HIPAA (Ley de Portabilidad y Responsabilidad del Seguro de Salud) y GDPR (Reglamento General de Protección de Datos)
  • Los centros de datos de Cloud deben cumplir con la certificación de seguridad ISO 27001
  • Los sistemas deben cumplir normas específicas de la industria tales como SOC 2, FISMA o FDA
  • Capacidad de registro y presentación de informes de auditoría para el cumplimiento reglamentario

Requisitos de compatibilidad e interoperabilidad

Estos requisitos definen cómo funciona el sistema con otros sistemas, plataformas y tecnologías. Garantizan una integración perfecta e intercambio de datos en diferentes entornos.

  • Compatibilidad de la plataforma: Sistemas operativos y dispositivos que el sistema debe soportar
  • Compatibilidad del navegador: navegadores y versiones web que deben ser compatibles
  • Compatibilidad con API: Normas y protocolos para la integración del sistema
  • Formato de datos Compatibilidad: Apoyo a diversos formatos y normas de datos
  • Legacy System Integration: Capacidad para trabajar con los sistemas existentes

Ejemplo: Un programa que se ejecuta en Windows 10 debe ser capaz de ejecutar en Windows 11 sin ningún cambio en su comportamiento y rendimiento.

Necesidades de capacidad

Los requisitos de capacidad especifican el volumen de datos, transacciones y usuarios que el sistema debe alojar en la actualidad y en el futuro.

  • Capacidad de almacenamiento: Cantidad de datos que el sistema debe almacenar
  • Capacidad de usuario: Número máximo de usuarios registrados y concurrentes
  • Volumen de transacción: Número de transacciones procesadas por período de tiempo
  • Ancho de banda de red: Recursos necesarios para la transferencia de datos

Ejemplo: Las páginas del sitio web deben cargar en 3 segundos con el número total de usuarios simultáneos.

Comparación detallada: Funcional vs. Requisitos no funcionales

La comprensión de las diferencias entre las necesidades funcionales y no funcionales es fundamental para la gestión eficaz de las necesidades. Aquí hay una comparación completa:

Definición y enfoque

Los requisitos funcionales impulsan la arquitectura de aplicación de un sistema, mientras que los requisitos no funcionales impulsan la arquitectura técnica de un sistema. Los requisitos funcionales responden "qué" hace el sistema, mientras que los requisitos no funcionales responden "qué bien" lo hace.

Documentación Estilo

Generalmente, los requisitos funcionales se expresan en la forma "el sistema debe hacer", mientras que los requisitos no funcionales toman la forma "el sistema será". Esta distinción lingüística refleja la diferencia fundamental en lo que cada tipo de requisito especifica.

Enfoque de prueba

Los requisitos funcionales se prueban normalmente a través de métodos funcionales de prueba, como pruebas unitarias, pruebas de integración y pruebas de aceptación del usuario. Cada requisito funcional puede verificarse comprobando si el sistema produce la salida prevista para los insumos dados.

Medición de requisitos no funcionales: Las características son más fáciles de probar, pero las cualidades como usabilidad, escalabilidad y fiabilidad son más difíciles de medir y validar. Los requisitos no funcionales requieren métodos de prueba especializados, como pruebas de rendimiento, pruebas de seguridad, pruebas de usabilidad y pruebas de estrés.

Impacto en el éxito de los proyectos

Los requisitos funcionales y no funcionales son dos lados de la misma moneda. Y juntos, crean software que es completo y utilizable. Ambos tipos son esenciales, pero afectan diferentes proyectos:

  • Los requisitos funcionales determinan si el sistema puede realizar tareas necesarias
  • Los requisitos no funcionales determinan si los usuarios realmente quieren utilizar el sistema
  • Los requerimientos funcionales perdidos resultan en características incompletas
  • La pérdida de necesidades no funcionales da lugar a una mala experiencia de usuario y calidad del sistema

Retos de prioridad

Los requisitos funcionales a menudo reciben más atención, mientras que pueden pasarse por alto aspectos importantes como la escalabilidad, la seguridad o la vigilancia. Este desequilibrio puede conducir a sistemas que funcionan técnicamente pero no satisfacen las expectativas de calidad o las necesidades empresariales.

Por qué ambos requisitos son críticos para el éxito del proyecto

Los requisitos funcionales son la columna vertebral del desarrollo exitoso del software y del sistema. Definen exactamente lo que un producto debe hacer para satisfacer las necesidades del usuario y del negocio. Al especificar las funciones y comportamientos que un sistema debe exhibir, los requisitos funcionales aseguran que cada característica se ajuste a las expectativas de los usuarios y los objetivos del proyecto.

Sin embargo, las necesidades funcionales por sí solas son insuficientes. Ambos tipos de requisitos trabajan juntos para crear sistemas exitosos:

Proporcionando claridad y dirección

Tener requisitos funcionales claramente definidos reduce el riesgo de malcomunicación entre las partes interesadas y su equipo de desarrollo. Esta...