En el mundo de la ingeniería, especialmente en el desarrollo de software y la ingeniería de sistemas, entender la distinción crítica entre requisitos funcionales y no funcionales es fundamental para el éxito del proyecto. El 37% de los proyectos fallan debido a requisitos inciertos o incorrectos, lo que hace esencial para los ingenieros, desarrolladores, directores de proyectos y partes interesadas para captar estos conceptos a fondo. 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 mantenibilidad y la escalabilidad.

Esta guía completa explora en profundidad tanto los requisitos funcionales como no funcionales, proporcionando ejemplos prácticos, mejores prácticas para la documentación y estrategias para una gestión eficaz de los requisitos. Si usted está construyendo una plataforma de comercio electrónico, desarrollando software empresarial o diseñando sistemas complejos, dominar estos requisitos mejorará significativamente sus resultados de 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 específicas y operaciones que un sistema debe realizar para satisfacer las necesidades de los usuarios y los negocios.

Los requisitos funcionales definen las funciones y funciones de un sistema. En otras palabras, describen lo que 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 desea.

Los requisitos funcionales pueden incluir cálculos, detalles técnicos, manipulación y procesamiento de datos, y otras funciones específicas que definen lo que se supone que debe lograr un sistema, que 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 diversos insumos.

Características clave de los requisitos funcionales

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

  • Específicaidad: Describen comportamientos y funciones precisos que el sistema debe realizar
  • Testabilidad: Cada requisito puede verificarse mediante pruebas para confirmar la aplicación
  • User-Focused: Se relacionan directamente con las necesidades de los usuarios y los objetivos empresariales
  • Oriente de la acción: Definen lo que hace el sistema en respuesta a los insumos
  • Measurability: Han definido los resultados que se pueden medir, como el éxito de la sesión 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 principal de usuario. Estos requisitos especifican la lógica de negocio central 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 de 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 acceso, políticas de contraseña, control de acceso basado en roles y protocolos de seguridad para la verificación de identidad de los usuarios.

Requisitos de gestión de datos

Los requisitos de datos definen cómo deben crearse, almacenarse, modificarse y eliminarse. Son especialmente importantes si su producto maneja datos de usuario sensibles. Estos requisitos cubren 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 la interfaz de usuario 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 de negocios 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

Comprender los requisitos funcionales se hace más claro mediante ejemplos concretos en diferentes industrias y tipos de aplicaciones. Aquí se presentan 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 incluyen:

  • El sistema debe permitir a los usuarios crear una cuenta usando la dirección de correo electrónico y la 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 del 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 las entradas de pago integradas
  • 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

Banca y Sistemas Financieros

  • 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 declaraciones de cuenta mensual 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

Sistemas de gestión de la salud

  • 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 de los pacientes
  • La aplicación debe permitir la gestión de recetas y rellenar las solicitudes
  • 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 y los 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 a los visitantes de blogs registrarse para el boletín de noticias dejando su correo electrónico
  • Los usuarios deben ser capaces de 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 que el personal pueda 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 de múltiples monedas
  • El sistema debe permitir el seguimiento del tiempo de los empleados 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 y acceder a ellas usando 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 permitir las notificaciones de presión para las actualizaciones y alertas importantes
  • Los usuarios deben poder personalizar los ajustes de aplicaciones y preferencias
  • El sistema debe apoyar la autenticación biométrica incluyendo huella dactilar y reconocimiento facial

What AreRequisitos no funcionales?

En la ingeniería de sistemas y 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íficos.

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 (NFR) definen cómo debe funcionar un sistema, centrándose en el rendimiento, la fiabilidad y la experiencia de usuario en lugar de características específicas.

Los requisitos no funcionales se denominan 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 tenido éxito o fracasado. Si bien los requisitos funcionales aseguran que el sistema funciona, los requisitos no funcionales aseguran que funciona bien y satisface las expectativas de los usuarios por la calidad, el rendimiento y la fiabilidad.

Comprender la importancia de los requisitos no electorales

Centrarse únicamente en los requisitos funcionales a expensas de los requisitos no funcionales puede causar problemas importantes. Los requisitos funcionales pueden ser considerados cumplidos incluso cuando los requisitos no funcionales no son. Una transacción que lleva 20 segundos completarse con éxito puede ser funcional – pero sin duda 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 del usuario.

Tipos completos de requisitos no relacionados con la acción

Oficiosamente estos son a veces llamados "las enfermedades", de atributos como la estabilidad y portabilidad. Las cualidades —que no son requisitos funcionales— pueden dividirse en dos categorías principales: cualidades de ejecución, tales como seguridad, seguridad y usabilidad, que son observables durante el funcionamiento (en tiempo de ejecución). cualidades de evolución, tales como testabilidad, mantenimiento, extensibilidad y 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 de usuario pesada. Esto implica la comprobación de métricas como el tiempo de inicio, el 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 cargas de trabajo esperadas sin degradación.

  • Tiempo de respuesta: El tiempo máximo permitido para que el sistema responda a las solicitudes de usuario
  • Consejo: El número de transacciones o operaciones que el sistema puede procesar por unidad de tiempo
  • Resource Utilization: CPU, memoria y consumo de ancho de banda en diversas condiciones de carga
  • Usuarios simultáneos: El número de usuarios simultáneos que el sistema puede soportar
  • Tiempo de carga: Cuán rápido 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 poder procesar las transacciones en un plazo de 3 segundos, incluso durante períodos de tráfico de usuarios elevados.

Requisitos de seguridad

Los requisitos de seguridad definen cómo el sistema protege los datos, impide 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:

  • Autorización: Métodos para verificar la identidad de los usuarios
  • 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: Registro y vigilancia de eventos relevantes para la seguridad
  • Protección de la 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 ser cifrados tanto en tránsito usando TLS 1.3 como en reposo usando estándares de cifrado 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:

  • Aprendizaje: Cuán rápido pueden ser productivos los nuevos usuarios con el sistema
  • Eficiencia: Los usuarios con experiencia pueden realizar tareas rápidamente
  • Memorabilidad: Cuán fácilmente los usuarios pueden regresar al sistema después de un período de no uso
  • Prevención del espejo: Características de diseño que impiden errores de usuario
  • Satisfacción: Lo agradable y satisfactorio que es el sistema 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 NFRs declara que el sistema debe estar disponible para su uso tanto como sea posible, y que el tiempo de inactividad debe minimizarse. Los requisitos de fiabilidad aseguran que el sistema se realiza de forma sistemática y previsible con el tiempo.

Las consideraciones principales son:

  • Actualización: Porcentaje de tiempo que el sistema está en funcionamiento y es accesible
  • Tiempo medio entre fracasos (MTBF): Tiempo medio entre fallos del sistema
  • Mean Time To Repair (MTTR): Tiempo medio necesario para restaurar la funcionalidad del sistema
  • Tolerancia por defecto: La capacidad del sistema de continuar operando a pesar de los 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 para la escalabilidad

Los requisitos de escalabilidad definen cómo el sistema crece y se adapta a las crecientes demandas, ya sea en términos de usuarios, volumen de datos o procesamiento de transacciones. Estos requisitos son esenciales para los sistemas que se espera que 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 expansión a nuevas regiones o lugares

Ejemplo: El sistema debe poder manejar a 20 millones de usuarios sin deterioro de 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 modificabilidad, la configurabilidad, la extensibilidad y la interoperabilidad.

La sostenibilidad abarca:

  • Calidad del proyecto: Normas para la legibilidad de código, documentación y estructura
  • Modularidad: Grado en que los componentes del sistema son independientes e intercambiables
  • Testabilidad: Facilidad de los componentes y funcionalidad del sistema de pruebas
  • Configurabilidad: Capacidad de 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 el RGPD (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, como SOC 2, FISMA o FDA.
  • Capacidad de registro y presentación de informes de auditoría para el cumplimiento de la reglamentación

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: Los sistemas operativos y dispositivos que el sistema debe soportar
  • Browser Compatibilidad: navegadores y versiones web que deben ser compatibles
  • Compatibilidad de la API: Normas y protocolos para la integración del sistema
  • Compatibilidad de Formato de Datos: Apoyo a diversos formatos y estándares de datos
  • Integración del sistema de legado: 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.

Requisitos de capacidad

Los requisitos de capacidad especifican el volumen de datos, transacciones y usuarios que el sistema debe acomodar 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
  • Requisitos de transferencia de datos:

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

Comparación detallada: Funal vs. Requisitos no funcionales

Comprender las diferencias entre los requisitos funcionales y no funcionales es crucial para una gestión eficaz de los requisitos.

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. 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 mediante métodos de prueba funcionales como pruebas de unidad, pruebas de integración y pruebas de aceptación de los usuarios. 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, incluyendo 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 impactan los proyectos de manera diferente:

  • Los requisitos funcionales determinan si el sistema puede realizar tareas requeridas
  • Los requisitos no funcionales determinan si los usuarios realmente quieren utilizar el sistema
  • Los requisitos funcionales que se pierden resultan en características incompletas
  • Los requisitos no funcionales que se pierden resultan en una mala experiencia de usuario y calidad del sistema

Desafíos de prioridad

Los requisitos funcionales suelen recibir más atención, mientras que aspectos importantes como la escalabilidad, seguridad o vigilancia pueden pasarse por alto. Este desequilibrio puede conducir a sistemas que trabajan 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 de usuario y de negocios. 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 de proyecto.

Sin embargo, los requisitos funcionales son insuficientes. Ambos tipos de requisitos trabajan juntos para crear sistemas exitosos:

Proporcionando claridad y dirección

Having clearly defined functional requirements reduces the risk of miscommunication between stakeholders and your development team. This w