13. Introducción a los requerimientos de software

13.1 Introducción

Los requerimientos de software, también llamados requisitos, describen lo que un sistema debe hacer, las condiciones que debe cumplir y las restricciones que debe respetar. Son una base fundamental para analizar, diseñar, construir, probar y aceptar una solución.

Un proyecto puede fracasar aunque el código esté bien escrito si los requerimientos fueron mal entendidos. Si el equipo construye algo que no resuelve la necesidad real, el problema no está solamente en la programación, sino en la comprensión inicial del sistema.

En este tema veremos qué son los requerimientos, para qué sirven, de dónde surgen y cómo se trabajan dentro de un proyecto de software.

13.2 ¿Qué es un requerimiento?

Un requerimiento es una necesidad, capacidad, condición o restricción que el sistema debe satisfacer. Puede describir una función visible para el usuario, una regla de negocio, una característica de calidad, una integración, una condición legal o una restricción técnica.

Ejemplos de requerimientos:

  • El usuario debe poder registrarse con correo electrónico y contraseña.
  • El sistema debe permitir cancelar una reserva hasta dos horas antes del turno.
  • Las operaciones administrativas deben quedar registradas para auditoría.
  • El sistema debe responder las consultas de búsqueda en menos de tres segundos.
  • La aplicación debe integrarse con el sistema de facturación existente.
  • Solo usuarios con rol administrador pueden modificar precios.
Idea clave: un requerimiento expresa algo que importa para que el sistema sea útil, correcto, aceptable o posible de operar.

13.3 ¿Para qué sirven los requerimientos?

Los requerimientos sirven como puente entre las necesidades de los interesados y el trabajo técnico del equipo. Ayudan a transformar ideas generales en acuerdos más concretos.

Sirven para:

  • Aclarar qué se espera del sistema.
  • Definir alcance y prioridades.
  • Guiar el diseño y la arquitectura.
  • Organizar tareas de desarrollo.
  • Diseñar casos de prueba.
  • Validar si una funcionalidad está terminada.
  • Controlar cambios durante el proyecto.
  • Reducir malentendidos entre usuarios, clientes y equipo técnico.

Sin requerimientos claros, las decisiones se basan en suposiciones. Eso aumenta el riesgo de retrabajo y conflictos.

13.4 Requerimiento, necesidad y solución

Es importante distinguir necesidad, requerimiento y solución. Muchas veces un interesado expresa una solución deseada, pero detrás de ella existe una necesidad que conviene entender.

Concepto Pregunta que responde Ejemplo
Necesidad ¿Qué problema o resultado se busca? Los clientes llaman muchas veces para conocer el estado de su pedido.
Requerimiento ¿Qué debe permitir o cumplir el sistema? El cliente debe poder consultar el estado de su pedido en línea.
Solución ¿Cómo se implementará? Crear una pantalla de seguimiento con número de pedido y correo electrónico.

Si el equipo salta directamente a la solución, puede perder alternativas mejores o no resolver el problema real.

13.5 Fuentes de requerimientos

Los requerimientos pueden surgir de varias fuentes. No conviene depender de una sola persona o documento.

  • Usuarios: explican tareas, problemas y expectativas de uso.
  • Clientes o patrocinadores: definen objetivos de negocio, presupuesto y prioridades.
  • Procesos actuales: muestran cómo se trabaja antes del nuevo sistema.
  • Documentos existentes: reglamentos, formularios, manuales, contratos o reportes.
  • Sistemas actuales: revelan datos, reglas, integraciones y limitaciones.
  • Normas legales: imponen requisitos de seguridad, privacidad o conservación de datos.
  • Equipo técnico: identifica restricciones, riesgos y necesidades de operación.
  • Soporte y operaciones: aportan problemas frecuentes y condiciones reales de uso.

13.6 Actividades de ingeniería de requerimientos

Trabajar con requerimientos no es solo escribir una lista. Normalmente incluye varias actividades relacionadas.

Actividad Propósito Ejemplo
Relevamiento Obtener información de interesados y fuentes disponibles. Entrevistar usuarios y revisar formularios actuales.
Análisis Ordenar, aclarar, detectar conflictos y comprender reglas. Separar una regla general de sus excepciones.
Especificación Registrar requerimientos de forma clara y verificable. Redactar una historia de usuario con criterios de aceptación.
Validación Confirmar que los requerimientos reflejan la necesidad real. Revisar un prototipo con usuarios referentes.
Gestión Controlar cambios, prioridades, versiones y trazabilidad. Registrar cuándo se modifica un requisito y por qué.

13.7 Relevamiento de requerimientos

El relevamiento consiste en descubrir información necesaria para comprender qué debe cumplir el sistema. Puede realizarse con entrevistas, observación, reuniones, análisis de documentos, encuestas, prototipos o revisión de sistemas existentes.

Al relevar, conviene preguntar:

  • ¿Qué tarea realiza el usuario?
  • ¿Qué información necesita?
  • ¿Qué problemas tiene el proceso actual?
  • ¿Qué reglas deben respetarse?
  • ¿Qué casos excepcionales ocurren?
  • ¿Qué decisiones toma el usuario?
  • ¿Qué errores serían graves?
  • ¿Qué datos se deben conservar?

El relevamiento no debe limitarse a aceptar pedidos textuales. También debe buscar causas, objetivos y contexto.

13.8 Análisis de requerimientos

Después de obtener información, hay que analizarla. El análisis permite detectar ambigüedades, contradicciones, duplicaciones, requisitos incompletos y prioridades poco claras.

Durante el análisis se pueden realizar tareas como:

  • Agrupar requerimientos relacionados.
  • Separar necesidades de soluciones propuestas.
  • Detectar conflictos entre interesados.
  • Aclarar términos del dominio.
  • Identificar reglas de negocio.
  • Reconocer restricciones técnicas o legales.
  • Definir prioridades y dependencias.

Un requerimiento mal analizado puede generar una funcionalidad incorrecta aunque esté programada sin errores.

13.9 Especificación de requerimientos

Especificar significa registrar los requerimientos de forma comprensible para quienes deben usarlos: usuarios, clientes, analistas, desarrolladores, testers y responsables del proyecto.

La especificación puede adoptar distintas formas:

  • Documento de requisitos.
  • Historias de usuario.
  • Casos de uso.
  • Criterios de aceptación.
  • Diagramas de proceso o de dominio.
  • Prototipos de interfaz.
  • Reglas de negocio documentadas.
  • Backlog priorizado.

No existe un único formato obligatorio para todos los proyectos. Lo importante es que los requerimientos sean claros, útiles y verificables.

13.10 Características de un buen requerimiento

Un buen requerimiento debería cumplir varias condiciones:

Característica Significado Ejemplo de mejora
Claro Se entiende sin interpretaciones múltiples. Cambiar "rápido" por "responder en menos de tres segundos".
Completo Incluye información suficiente para construir y probar. Indicar datos, reglas, excepciones y resultado esperado.
Consistente No contradice otros requerimientos. Alinear permisos de usuarios con políticas de seguridad.
Verificable Puede comprobarse mediante revisión, prueba o medición. Definir criterios de aceptación observables.
Necesario Aporta valor o responde a una restricción real. Evitar funciones pedidas "por si acaso" sin justificación.
Trazable Puede relacionarse con su origen, diseño, pruebas y cambios. Registrar qué actor lo solicitó y qué caso de prueba lo valida.

13.11 Ambigüedad en requerimientos

La ambigüedad aparece cuando un requerimiento puede interpretarse de más de una manera. Es uno de los problemas más comunes.

Ejemplos de frases ambiguas:

  • El sistema debe ser fácil de usar.
  • La búsqueda debe ser rápida.
  • El usuario podrá consultar reportes importantes.
  • El administrador podrá gestionar datos.
  • La aplicación debe ser segura.

Estas frases pueden ser un punto de partida, pero necesitan aclaración. Por ejemplo, "rápida" puede transformarse en "la búsqueda debe mostrar resultados en menos de tres segundos para hasta 10.000 registros".

13.12 Validación de requerimientos

Validar requerimientos significa confirmar que representan correctamente lo que los interesados necesitan. No alcanza con que estén bien escritos; deben ser correctos para el problema real.

Algunas técnicas de validación son:

  • Revisiones con usuarios y clientes.
  • Prototipos de pantallas o flujos.
  • Ejemplos concretos de uso.
  • Casos de prueba derivados de criterios de aceptación.
  • Recorridos paso a paso de procesos.
  • Demostraciones de versiones parciales.
  • Revisión con áreas de seguridad, legal, soporte u operaciones.

Validar temprano reduce el riesgo de construir funcionalidades incorrectas.

13.13 Gestión de cambios en requerimientos

Los requerimientos pueden cambiar. Esto es normal, especialmente cuando el equipo aprende más sobre el problema o cuando cambia el contexto. Lo importante es gestionar esos cambios de forma ordenada.

Ante un cambio conviene analizar:

  • Qué necesidad lo motiva.
  • Qué valor aporta.
  • Qué funcionalidades afecta.
  • Qué impacto tiene en diseño, código, pruebas y documentación.
  • Qué costo y riesgo agrega.
  • Qué prioridad tiene frente al resto del trabajo.
  • Si corresponde a la versión actual o a una futura.

Gestionar cambios no significa impedirlos. Significa entender sus consecuencias antes de aceptarlos.

13.14 Trazabilidad

La trazabilidad permite relacionar requerimientos con su origen, diseño, implementación, pruebas y cambios. Ayuda a responder preguntas como: ¿por qué existe esta funcionalidad?, ¿quién la pidió?, ¿qué prueba la valida?, ¿qué se afecta si cambia?

Un ejemplo simple de trazabilidad:

Requerimiento Origen Diseño o módulo Prueba asociada
El usuario debe poder cancelar una reserva hasta dos horas antes. Regla definida por administración. Módulo de reservas. Caso de prueba: cancelación permitida y cancelación fuera de plazo.

La trazabilidad es especialmente importante en sistemas grandes, críticos o regulados.

13.15 Ejemplo: sistema de biblioteca

Supongamos que una biblioteca necesita un sistema para gestionar préstamos.

Una necesidad inicial podría ser:

La biblioteca quiere reducir errores en el registro manual de préstamos y devoluciones.

De esa necesidad pueden surgir requerimientos como:

  • El bibliotecario debe poder registrar un préstamo indicando socio, libro y fecha de vencimiento.
  • El sistema debe impedir prestar un libro que ya se encuentra prestado.
  • El sistema debe permitir registrar una devolución.
  • El sistema debe marcar préstamos vencidos.
  • Un socio no puede tener más de tres libros prestados al mismo tiempo.
  • El administrador debe poder consultar un reporte de préstamos vencidos.

Cada requerimiento puede luego transformarse en diseño, tareas de desarrollo y casos de prueba.

13.16 Errores comunes

Al trabajar con requerimientos suelen aparecer errores como:

  • Confundir pedidos de solución con necesidades reales.
  • Escribir requerimientos ambiguos.
  • No validar con usuarios o clientes.
  • Ignorar reglas de negocio y excepciones.
  • No considerar requisitos de calidad, seguridad u operación.
  • No priorizar y tratar todo como igualmente importante.
  • No registrar cambios ni motivos.
  • Construir solo con conversaciones informales, sin acuerdos verificables.
  • Dejar los criterios de aceptación para el final.

13.17 Plantilla simple para un requerimiento

Una plantilla breve puede ayudar a registrar requerimientos con claridad:

Identificador Código o nombre corto del requerimiento.
Descripción Qué debe cumplir el sistema.
Origen Actor, documento, norma o proceso que lo justifica.
Prioridad Importancia relativa para el proyecto.
Criterios de aceptación Condiciones observables para considerarlo cumplido.
Restricciones o reglas Condiciones especiales, excepciones o límites.
Estado Propuesto, aprobado, en desarrollo, probado, entregado o descartado.

13.18 Qué debes recordar de este tema

  • Los requerimientos describen lo que el sistema debe hacer o cumplir.
  • Sirven para conectar necesidades de interesados con diseño, desarrollo, pruebas y aceptación.
  • Una necesidad, un requerimiento y una solución no son lo mismo.
  • Los requerimientos deben relevarse, analizarse, especificarse, validarse y gestionarse.
  • Un buen requerimiento debe ser claro, completo, consistente, verificable, necesario y trazable.
  • La ambigüedad genera interpretaciones distintas y aumenta el retrabajo.
  • Los cambios en requerimientos son normales, pero deben analizarse por impacto y prioridad.

13.19 Conclusión

Los requerimientos de software son una de las bases más importantes de un proyecto. Permiten comprender qué se necesita construir, por qué, para quién y bajo qué condiciones. Cuando están mal definidos, el equipo corre el riesgo de construir una solución incorrecta aunque el código funcione.

Para quien comienza, la idea principal es esta: un requerimiento claro transforma una necesidad en una condición verificable que guía el diseño, la construcción y las pruebas del sistema.

En el próximo tema veremos la diferencia entre requerimientos funcionales y no funcionales, una distinción fundamental para comprender tanto el comportamiento del sistema como sus atributos de calidad.