1. ¿Qué son los requerimientos de software?

1.1 Introducción

Los requerimientos de software describen lo que un sistema debe hacer, las condiciones que debe cumplir y las restricciones que debe respetar para resolver una necesidad real. Son una parte fundamental de cualquier proyecto porque conectan el problema del usuario con la solución que el equipo construirá.

Antes de diseñar pantallas, elegir tecnologías o escribir código, es necesario entender qué se espera del sistema. Si esa comprensión es incompleta, ambigua o incorrecta, el equipo puede construir un producto técnicamente correcto pero inútil para quienes lo necesitan.

Por eso, trabajar con requerimientos no consiste solo en escribir una lista de funciones. Consiste en descubrir necesidades, aclarar expectativas, registrar acuerdos, analizar restricciones y establecer criterios que permitan verificar si el software cumple su propósito.

1.2 Una definición simple

Podemos definir un requerimiento de software de la siguiente manera:

Un requerimiento de software es una condición, capacidad, característica o restricción que un sistema debe cumplir para satisfacer una necesidad de sus usuarios, clientes u otros interesados.

Esta definición contiene varias ideas importantes:

  • Condición: algo que debe cumplirse para que el sistema sea aceptable.
  • Capacidad: una acción o servicio que el sistema debe poder realizar.
  • Característica: una cualidad esperada, como seguridad, velocidad, facilidad de uso o disponibilidad.
  • Restricción: un límite que el proyecto debe respetar, por ejemplo una norma legal, una tecnología obligatoria o un plazo de entrega.
  • Necesidad: el problema, objetivo o situación que justifica construir o modificar el software.
  • Interesados: personas u organizaciones afectadas por el sistema o por sus resultados.

1.3 Requerimiento no es lo mismo que deseo

En un proyecto es común que usuarios y clientes expresen deseos, ideas, opiniones o soluciones posibles. Algunas de esas expresiones pueden convertirse en requerimientos, pero no todas tienen el mismo valor ni el mismo nivel de precisión.

Por ejemplo, un usuario podría decir: "quiero que el sistema sea rápido". Esa frase expresa una necesidad, pero todavía no es un requerimiento claro. Para convertirla en un requerimiento útil hay que precisar qué significa "rápido", en qué operación, bajo qué condiciones y cómo se medirá.

Ejemplo más claro: el sistema debe mostrar el resultado de una búsqueda de productos en menos de 2 segundos cuando existan hasta 10.000 productos cargados.

La diferencia es importante: un deseo puede orientar la conversación, pero un requerimiento debe poder comunicarse, analizarse, implementarse y verificarse.

1.4 ¿Para qué sirven los requerimientos?

Los requerimientos cumplen varias funciones dentro de un proyecto de software:

  • Ayudan a comprender el problema que se quiere resolver.
  • Permiten acordar el alcance entre cliente, usuarios y equipo de desarrollo.
  • Orientan el análisis, el diseño, la programación y las pruebas.
  • Reducen malentendidos entre personas con distintos conocimientos y expectativas.
  • Sirven como base para estimar esfuerzo, costo, prioridades y riesgos.
  • Facilitan decidir qué debe incluirse en una versión y qué puede quedar para después.
  • Permiten validar si el software entregado satisface lo solicitado.
  • Ayudan a administrar cambios cuando aparecen nuevas necesidades.

Cuando los requerimientos son claros, el equipo puede tomar mejores decisiones. Cuando son débiles, el proyecto avanza con suposiciones que tarde o temprano generan errores, retrabajo o conflictos.

1.5 Necesidad, requerimiento y solución

Para estudiar requerimientos conviene distinguir tres niveles: la necesidad, el requerimiento y la solución.

Elemento Pregunta que responde Ejemplo
Necesidad ¿Qué problema existe o qué objetivo se quiere alcanzar? La biblioteca pierde tiempo registrando préstamos en planillas manuales.
Requerimiento ¿Qué debe cumplir el sistema para ayudar a resolver ese problema? El sistema debe registrar préstamos de libros indicando socio, libro, fecha de retiro y fecha prevista de devolución.
Solución ¿Cómo se implementará ese requerimiento? Una pantalla web con un formulario, validaciones y almacenamiento en una base de datos.

Esta separación evita un error frecuente: confundir una solución propuesta con el requerimiento real. A veces un usuario pide una pantalla específica, un botón o una tecnología, pero detrás de ese pedido existe una necesidad que puede resolverse de varias maneras.

1.6 Tipos generales de requerimientos

Existen distintas formas de clasificar los requerimientos. Una clasificación inicial muy útil distingue entre requerimientos funcionales, no funcionales y restricciones.

Tipo Qué describe Ejemplo
Funcional Funciones, servicios o comportamientos que el sistema debe realizar. El sistema debe permitir registrar un nuevo cliente.
No funcional Cualidades que el sistema debe tener o niveles de calidad esperados. La consulta de clientes debe responder en menos de 3 segundos.
Restricción Condiciones externas o decisiones que limitan la solución. El sistema debe funcionar en los navegadores aprobados por la organización.

Más adelante estudiaremos cada tipo con mayor detalle. Por ahora, lo importante es comprender que un sistema no se define solamente por las funciones que ofrece, sino también por la calidad con que debe ejecutarlas y por las condiciones que debe respetar.

1.7 Ejemplos de requerimientos

Estos son ejemplos simples de requerimientos expresados con distinto enfoque:

  • Funcional: el sistema debe permitir que un usuario recupere su contraseña mediante un correo de verificación.
  • Funcional: el sistema debe calcular el importe total de una venta considerando productos, cantidades, descuentos e impuestos.
  • No funcional: el sistema debe estar disponible el 99,5% del tiempo durante el horario comercial.
  • No funcional: las páginas principales deben poder utilizarse desde dispositivos móviles.
  • Restricción: los comprobantes generados deben respetar el formato exigido por la normativa vigente.
  • Restricción: la aplicación debe integrarse con el sistema contable existente de la empresa.

Un buen documento de requerimientos suele combinar todos estos elementos, porque el comportamiento del sistema y sus condiciones de calidad deben analizarse juntos.

1.8 ¿Quiénes participan en los requerimientos?

Los requerimientos no surgen de una sola persona. Normalmente se construyen a partir del diálogo entre distintos interesados:

  • Usuarios finales: realizan tareas concretas con el sistema y conocen problemas operativos del trabajo diario.
  • Cliente o patrocinador: financia o impulsa el proyecto y define objetivos de negocio.
  • Responsables del área: conocen reglas, prioridades, procesos y restricciones de la organización.
  • Analista de requerimientos: releva, organiza, analiza, documenta y valida la información obtenida.
  • Equipo técnico: aporta criterios sobre factibilidad, riesgos, dependencias e impacto de las decisiones.
  • Equipo de pruebas: ayuda a definir criterios verificables y escenarios de aceptación.
  • Áreas legales, seguridad o auditoría: pueden establecer condiciones obligatorias cuando el sistema maneja información sensible o regulada.

La participación de estas personas permite detectar necesidades que no siempre aparecen en una primera conversación. También ayuda a evitar que el sistema se construya desde una mirada demasiado parcial.

1.9 Características de un buen requerimiento

Un requerimiento útil debe tener ciertas características mínimas. No siempre se logran perfectamente desde el primer intento, pero sirven como criterio para mejorar la especificación.

  • Claro: puede ser entendido por las personas involucradas sin interpretaciones confusas.
  • Completo: contiene la información necesaria para analizarlo e implementarlo.
  • Consistente: no contradice otros requerimientos del mismo sistema.
  • Verificable: permite comprobar si fue cumplido mediante revisión, prueba, inspección o medición.
  • Necesario: responde a una necesidad real y aporta valor al producto.
  • Factible: puede realizarse con los recursos, tiempos, tecnologías y restricciones del proyecto.
  • Trazable: puede relacionarse con su origen, con decisiones de diseño, con pruebas y con cambios posteriores.
Idea clave: un requerimiento no es bueno porque suena técnico, sino porque ayuda a construir y validar la solución correcta.

1.10 Problemas frecuentes cuando los requerimientos son débiles

Muchos problemas de software comienzan antes de programar. Cuando los requerimientos no están bien trabajados, pueden aparecer situaciones como estas:

  • El cliente esperaba una funcionalidad distinta a la que el equipo construyó.
  • Los desarrolladores interpretan de manera diferente una misma regla de negocio.
  • Se descubren restricciones legales o técnicas cuando el sistema ya está avanzado.
  • Las pruebas no pueden confirmar si una función está completa porque no existen criterios de aceptación.
  • El alcance crece sin control y el proyecto se vuelve difícil de planificar.
  • Se agregan cambios urgentes porque necesidades importantes no fueron detectadas a tiempo.
  • Se implementan funciones que nadie usa porque no respondían a una necesidad real.

La ingeniería de requerimientos no elimina todos los cambios ni toda la incertidumbre, pero reduce el riesgo de construir software basado en suposiciones equivocadas.

1.11 Un ejemplo sencillo

Supongamos que una institución educativa quiere un sistema para gestionar inscripciones a cursos. Una frase inicial podría ser: "necesitamos una página para inscribir alumnos". Esa frase es demasiado general.

Al analizarla, podrían aparecer requerimientos como los siguientes:

  • El sistema debe permitir registrar alumnos con nombre, documento, correo electrónico y teléfono.
  • El sistema debe mostrar la lista de cursos disponibles con cupo, fecha de inicio y horario.
  • El sistema debe impedir la inscripción cuando el curso no tenga cupo disponible.
  • El sistema debe enviar un correo de confirmación después de completar la inscripción.
  • El sistema debe permitir que un administrador consulte los alumnos inscriptos en cada curso.
  • La operación de inscripción debe completarse en menos de 5 segundos bajo carga normal.
  • Los datos personales de los alumnos deben ser accesibles solo para usuarios autorizados.

Este ejemplo muestra que una necesidad simple puede transformarse en varios requerimientos funcionales, no funcionales y restricciones.

1.12 Relación con las siguientes etapas del desarrollo

Los requerimientos son una base para muchas actividades posteriores del proyecto. A partir de ellos se elaboran modelos, casos de uso, historias de usuario, prototipos, diseños, pruebas y documentación técnica.

Por ejemplo, un requerimiento funcional puede convertirse en un caso de uso, una historia de usuario o un escenario de prueba. Un requerimiento no funcional de seguridad puede influir en la arquitectura, en los permisos, en el almacenamiento de datos y en las pruebas de vulnerabilidad.

Por esta razón, los requerimientos no deben verse como un trámite inicial que se completa una vez y luego se olvida. Deben mantenerse vivos, revisarse cuando cambia el contexto y conectarse con el resto de los artefactos del proyecto.

1.13 Qué debes recordar de este tema

  • Los requerimientos describen lo que un sistema debe cumplir para satisfacer necesidades reales.
  • No todo pedido inicial es automáticamente un requerimiento claro.
  • Un buen requerimiento debe poder entenderse, analizarse, implementarse y verificarse.
  • Los requerimientos pueden ser funcionales, no funcionales o restricciones.
  • La calidad de los requerimientos influye directamente en el diseño, la construcción, las pruebas y la aceptación del producto.
  • Los requerimientos se construyen mediante comunicación entre usuarios, cliente, analistas, equipo técnico y otros interesados.
  • Trabajar bien los requerimientos reduce ambigüedades, retrabajo, conflictos y errores de alcance.

1.14 Conclusión

Los requerimientos de software son el puente entre una necesidad y una solución. Permiten transformar problemas, objetivos y expectativas en condiciones comprensibles que orientan el trabajo del equipo y permiten evaluar el resultado.

Para quien comienza, la idea principal es esta: antes de construir software, debemos entender con claridad qué se necesita, por qué se necesita, quién lo necesita y cómo sabremos que fue cumplido.

En el próximo tema analizaremos con más detalle la importancia de los requerimientos en un proyecto de software y veremos cómo influyen en costos, tiempos, calidad, comunicación y satisfacción del cliente.