9. Requerimientos funcionales

9.1 Introducción

Los requerimientos funcionales describen las funciones, servicios y comportamientos que el sistema debe ofrecer. Indican qué debe hacer el software ante determinadas entradas, acciones de usuarios, reglas de negocio o eventos.

Son una parte central de la especificación porque permiten entender las capacidades principales del producto. Por ejemplo, registrar un cliente, emitir una factura, consultar stock, enviar una notificación o generar un reporte son funciones posibles de un sistema.

En este tema estudiaremos qué son los requerimientos funcionales, cómo reconocerlos, cómo redactarlos y qué errores conviene evitar.

9.2 Definición

Un requerimiento funcional puede definirse de esta manera:

Un requerimiento funcional describe una acción, servicio, cálculo, validación, transformación de datos o respuesta que el sistema debe realizar para cumplir una necesidad.

Los requerimientos funcionales suelen responder preguntas como:

  • ¿Qué operaciones debe permitir el sistema?
  • ¿Qué datos debe registrar, consultar, modificar o eliminar?
  • ¿Qué reglas debe aplicar?
  • ¿Qué respuestas debe dar ante una acción del usuario?
  • ¿Qué información debe mostrar o generar?
  • ¿Con qué otros sistemas debe intercambiar datos?

9.3 Ejemplos simples

Estos son ejemplos de requerimientos funcionales:

  • El sistema debe permitir registrar un nuevo cliente con nombre, documento, correo electrónico y teléfono.
  • El sistema debe permitir buscar productos por código, nombre o categoría.
  • El sistema debe calcular el importe total de una venta considerando cantidades, descuentos e impuestos.
  • El sistema debe enviar una notificación por correo cuando se apruebe una solicitud.
  • El sistema debe permitir que un administrador bloquee o desbloquee cuentas de usuario.
  • El sistema debe generar un reporte mensual de ventas por vendedor.
  • El sistema debe impedir la inscripción a un curso cuando no haya cupo disponible.

En todos los casos se describe una capacidad o comportamiento observable del sistema.

9.4 Qué describen los requerimientos funcionales

Los requerimientos funcionales pueden describir distintos tipos de comportamiento.

Tipo de comportamiento Descripción Ejemplo
Registro de datos El sistema guarda información ingresada o recibida. Registrar un reclamo con cliente, motivo y descripción.
Consulta El sistema muestra información según ciertos criterios. Consultar pedidos por cliente, fecha o estado.
Modificación El sistema permite cambiar información existente. Actualizar el domicilio de un cliente.
Cálculo El sistema obtiene un resultado a partir de datos y reglas. Calcular intereses por pago fuera de término.
Validación El sistema verifica condiciones antes de aceptar una operación. Impedir una venta si no hay stock suficiente.
Notificación El sistema informa un evento a una persona o sistema. Enviar correo cuando se confirme una inscripción.
Integración El sistema intercambia información con otro sistema. Enviar datos de facturación al sistema contable.

9.5 Diferencia con requerimientos no funcionales

Los requerimientos funcionales indican qué debe hacer el sistema. Los no funcionales indican con qué calidad, bajo qué condiciones o con qué restricciones debe hacerlo.

Requerimiento funcional Requerimiento no funcional relacionado
El sistema debe permitir buscar clientes por documento. La búsqueda debe responder en menos de 2 segundos bajo carga normal.
El sistema debe permitir registrar una venta. Solo usuarios autorizados pueden registrar ventas.
El sistema debe generar un reporte mensual. El reporte debe poder generarse en formato PDF y estar disponible durante 5 años.

Ambos tipos son necesarios. Una función puede existir, pero ser inútil si no cumple condiciones mínimas de rendimiento, seguridad o usabilidad.

9.6 Relación con usuarios y actores

Muchos requerimientos funcionales se expresan desde la interacción de un usuario o actor con el sistema. Un actor puede ser una persona, otro sistema o un dispositivo externo.

Ejemplos:

  • El vendedor debe poder registrar un pedido para un cliente.
  • El administrador debe poder crear cuentas de usuario.
  • El sistema de pagos debe informar si una transacción fue aprobada o rechazada.
  • El cliente debe poder consultar el estado de su reclamo.

Identificar quién realiza cada función ayuda a definir permisos, flujos y responsabilidades.

9.7 Entradas, procesamiento y salidas

Una forma práctica de analizar un requerimiento funcional es identificar entradas, procesamiento y salidas.

Elemento Pregunta Ejemplo en una venta
Entrada ¿Qué datos recibe el sistema? Cliente, productos, cantidades, forma de pago.
Procesamiento ¿Qué reglas o acciones aplica? Validar stock, calcular descuentos e impuestos.
Salida ¿Qué resultado produce? Venta registrada, comprobante generado y stock actualizado.

Este análisis ayuda a completar requerimientos que inicialmente están demasiado vagos.

9.8 Reglas de negocio dentro de requerimientos funcionales

Muchas funciones dependen de reglas de negocio. Si la regla no se expresa, el requerimiento queda incompleto.

Por ejemplo, "registrar inscripción" parece simple, pero puede depender de reglas como:

  • El alumno debe tener sus datos obligatorios completos.
  • El curso debe tener cupo disponible.
  • El alumno no debe estar previamente inscripto en el mismo curso.
  • La inscripción solo puede realizarse dentro del período habilitado.
  • Algunos cursos requieren aprobación previa de materias correlativas.

Las reglas pueden documentarse junto al requerimiento o en una sección específica de reglas de negocio, pero deben estar visibles.

9.9 Nivel de detalle

Un requerimiento funcional puede escribirse con distinto nivel de detalle. El nivel adecuado depende del proyecto, el riesgo, la criticidad y el grado de conocimiento compartido.

Nivel Ejemplo Problema o utilidad
Muy general El sistema debe gestionar clientes. Es ambiguo; no indica operaciones ni datos.
Intermedio El sistema debe permitir registrar, consultar y modificar clientes. Indica funciones principales, pero faltan datos y reglas.
Más preciso El sistema debe permitir registrar clientes con nombre, documento, correo y teléfono, validando que el documento no exista previamente. Es más verificable y útil para desarrollo y pruebas.

El objetivo no es escribir textos largos sin necesidad, sino aportar la información suficiente para evitar interpretaciones incorrectas.

9.10 Redacción básica

Una forma simple de redactar requerimientos funcionales es usar una estructura como esta:

El sistema debe permitir [acción] [objeto o información] [condición o regla relevante].

Ejemplos:

  • El sistema debe permitir registrar un nuevo producto indicando código, nombre, categoría, precio y stock inicial.
  • El sistema debe permitir consultar pedidos filtrando por cliente, fecha y estado.
  • El sistema debe impedir la eliminación de un cliente que tenga ventas registradas.
  • El sistema debe enviar una notificación al supervisor cuando una solicitud quede pendiente por más de 48 horas.

La redacción debe ser clara, directa y verificable.

9.11 Funciones principales y funciones secundarias

No todas las funciones tienen la misma importancia. Algunas son esenciales para que el sistema cumpla su propósito; otras son auxiliares, administrativas o convenientes.

Por ejemplo, en un sistema de reclamos:

  • Funciones principales: registrar reclamo, asignar responsable, cambiar estado, consultar historial.
  • Funciones secundarias: exportar listado, configurar motivos, personalizar mensajes, generar estadísticas avanzadas.

Distinguir importancia ayuda a priorizar entregas y a definir versiones.

9.12 Requerimientos funcionales y permisos

Muchas funciones dependen del rol del usuario. No basta con decir que "el sistema debe permitir modificar pedidos"; también hay que indicar quién puede hacerlo y bajo qué condiciones.

Ejemplos:

  • El vendedor debe poder modificar un pedido mientras esté en estado borrador.
  • Solo un supervisor debe poder aprobar descuentos superiores al 20%.
  • El administrador debe poder desactivar cuentas de usuario.
  • El cliente debe poder cancelar una reserva hasta 24 horas antes de la fecha de ingreso.

Los permisos pueden documentarse como requerimientos funcionales, reglas de negocio o una matriz de roles y acciones.

9.13 Integraciones como requerimientos funcionales

Cuando un sistema intercambia información con otro, esa integración también puede expresarse como requerimiento funcional.

Ejemplos:

  • El sistema debe enviar los datos de facturas aprobadas al sistema contable.
  • El sistema debe consultar el estado de pago en la pasarela de pagos antes de confirmar una compra.
  • El sistema debe importar diariamente la lista de productos desde el sistema de inventario.
  • El sistema debe recibir confirmaciones de entrega desde el sistema logístico.

En integraciones conviene aclarar datos intercambiados, frecuencia, errores posibles y responsabilidades de cada sistema.

9.14 Ejemplo aplicado: biblioteca

Para un sistema de biblioteca, algunos requerimientos funcionales podrían ser:

  • El sistema debe permitir registrar libros indicando título, autor, editorial, año y código ISBN.
  • El sistema debe permitir registrar ejemplares físicos asociados a un libro.
  • El sistema debe permitir registrar socios con nombre, documento, correo y estado.
  • El sistema debe permitir registrar préstamos indicando socio, ejemplar, fecha de retiro y fecha prevista de devolución.
  • El sistema debe impedir prestar un ejemplar que ya se encuentre prestado.
  • El sistema debe permitir registrar la devolución de un ejemplar.
  • El sistema debe mostrar los préstamos vencidos.
  • El sistema debe permitir consultar el historial de préstamos de un socio.

Estos requerimientos describen acciones observables que el sistema debe realizar.

9.15 Requerimientos funcionales y criterios de aceptación

Un requerimiento funcional se vuelve más claro cuando se acompaña con criterios de aceptación. Los criterios indican condiciones que deben cumplirse para considerar que la función está correctamente implementada.

Ejemplo:

Requerimiento: el sistema debe permitir registrar un reclamo indicando cliente, motivo, descripción y canal de ingreso.
Criterios de aceptación: no debe permitirse guardar reclamos sin cliente ni motivo; al guardar correctamente debe asignarse un número único; el reclamo debe quedar en estado "abierto".

Los criterios de aceptación ayudan a desarrollo, pruebas y validación con usuarios.

9.16 Errores frecuentes

Al redactar requerimientos funcionales, suelen aparecer errores como:

  • Usar verbos demasiado generales, como gestionar, administrar o procesar, sin explicar operaciones concretas.
  • No indicar qué datos participan en la función.
  • No aclarar quién puede ejecutar la función.
  • Omitir reglas de negocio importantes.
  • Mezclar varias funciones distintas en un solo requerimiento confuso.
  • Describir diseño de pantalla en lugar de comportamiento necesario.
  • No definir qué ocurre ante errores o datos inválidos.
  • No relacionar la función con una necesidad u objetivo.

Estos errores vuelven difícil diseñar, estimar, probar y validar el sistema.

9.17 Buenas prácticas

Algunas buenas prácticas para requerimientos funcionales son:

  • Usar verbos concretos: registrar, consultar, calcular, validar, enviar, generar, actualizar.
  • Indicar el actor o rol cuando sea relevante.
  • Especificar datos importantes de entrada y salida.
  • Incluir reglas de negocio asociadas.
  • Separar funciones distintas en requerimientos distintos.
  • Evitar detalles de implementación salvo que sean restricciones necesarias.
  • Redactar requerimientos verificables.
  • Relacionar cada función importante con una necesidad, objetivo o proceso.
Un buen requerimiento funcional dice qué comportamiento debe ofrecer el sistema, no solo qué pantalla se imagina alguien.

9.18 Qué debes recordar de este tema

  • Los requerimientos funcionales describen qué debe hacer el sistema.
  • Pueden expresar registros, consultas, cálculos, validaciones, notificaciones, reportes e integraciones.
  • Deben indicar datos, reglas, actores o condiciones cuando sean relevantes.
  • No son lo mismo que los requerimientos no funcionales, pero se complementan con ellos.
  • Una función debe poder verificarse mediante revisión, prueba o aceptación.
  • Los permisos y roles suelen formar parte del comportamiento funcional.
  • La redacción clara reduce ambigüedades y retrabajo.

9.19 Conclusión

Los requerimientos funcionales describen las capacidades concretas que el sistema debe ofrecer. Son esenciales para comprender qué operaciones, datos, reglas e interacciones formarán parte del producto.

Redactarlos bien permite que usuarios, analistas, desarrolladores y testers compartan una misma interpretación del comportamiento esperado.

En el próximo tema estudiaremos los requerimientos no funcionales y los atributos de calidad, que explican cómo debe comportarse el sistema en términos de seguridad, rendimiento, usabilidad, disponibilidad y otras cualidades importantes.