29. Especificación de requerimientos de software

29.1 Introducción

La especificación de requerimientos de software consiste en documentar de manera clara, organizada y verificable lo que el sistema debe cumplir. Es el resultado de transformar necesidades, reglas, restricciones y acuerdos en una referencia útil para el proyecto.

Una buena especificación ayuda a que usuarios, clientes, analistas, desarrolladores, testers y responsables del proyecto compartan una misma comprensión sobre lo que se construirá.

No existe un único formato válido. La especificación puede tomar la forma de un documento formal, una lista estructurada, historias de usuario, casos de uso, criterios de aceptación, modelos, prototipos o una combinación de artefactos.

29.2 ¿Qué significa especificar?

Especificar significa describir un requerimiento con suficiente claridad para que pueda ser entendido, analizado, construido, probado y validado.

Especificar no es escribir mucho; es escribir lo necesario para reducir ambigüedad y permitir decisiones correctas.

Una especificación útil debe responder qué se necesita, por qué, para quién, bajo qué condiciones, con qué restricciones y cómo se verificará.

29.3 Propósitos de la especificación

La especificación cumple varios propósitos:

  • Registrar acuerdos entre interesados.
  • Guiar diseño, construcción y pruebas.
  • Definir alcance y límites.
  • Reducir interpretaciones distintas.
  • Permitir estimaciones más razonables.
  • Servir como base para aceptación del producto.
  • Facilitar trazabilidad y gestión de cambios.
  • Conservar conocimiento del proyecto.

Si la especificación no ayuda a tomar decisiones o verificar resultados, probablemente necesita mejorar.

29.4 Audiencia de la especificación

Una especificación puede ser leída por personas con necesidades distintas.

Audiencia Qué necesita encontrar
Cliente o patrocinador Alcance, objetivos, prioridades, restricciones y criterios de aceptación.
Usuarios Funciones, flujos, reglas y resultados esperados.
Desarrolladores Datos, reglas, comportamiento, integraciones y condiciones técnicas.
Testers Criterios de aceptación, escenarios, excepciones y resultados esperados.
Responsables de proyecto Alcance, dependencias, riesgos, prioridades y cambios.
Auditoría o legal Restricciones, trazabilidad, registros, controles y cumplimiento normativo.

29.5 Nivel de detalle

El nivel de detalle debe ser suficiente para el contexto. Un sistema crítico, regulado o con muchos equipos puede requerir especificación más formal. Un proyecto pequeño puede usar documentos más livianos.

Factores que influyen en el detalle:

  • Complejidad del dominio.
  • Riesgo del sistema.
  • Cantidad de interesados.
  • Necesidad de auditoría.
  • Distribución del equipo.
  • Experiencia compartida.
  • Contrato o regulación aplicable.

El exceso de documentación puede ser costoso; la falta de documentación puede ser riesgosa. Hay que buscar equilibrio.

29.6 Contenido típico

Una especificación de requerimientos puede incluir:

  • Introducción y propósito.
  • Alcance del sistema.
  • Definiciones y glosario.
  • Interesados y usuarios.
  • Contexto del negocio.
  • Requerimientos funcionales.
  • Requerimientos no funcionales.
  • Reglas de negocio.
  • Restricciones.
  • Datos requeridos.
  • Interfaces externas.
  • Criterios de aceptación.
  • Supuestos, dependencias y riesgos.

29.7 Identificación de requerimientos

Cada requerimiento importante debería tener un identificador único. Esto facilita referencia, trazabilidad, revisión y cambios.

Ejemplos:

  • RF-001: Registrar cliente.
  • RF-002: Consultar cliente por documento.
  • RNF-001: Tiempo de respuesta de búsqueda.
  • RN-001: Límite de descuento sin aprobación.
  • RE-001: Integración con sistema contable.

La nomenclatura puede variar, pero debe ser consistente.

29.8 Estructura de un requerimiento

Un requerimiento puede documentarse con varios campos.

Campo Propósito
Identificador Permite referenciar el requerimiento.
Nombre Resume el requerimiento.
Descripción Explica qué debe cumplir el sistema.
Tipo Funcional, no funcional, regla, restricción, dato, interfaz.
Prioridad Indica importancia relativa.
Fuente Persona, documento o sistema que originó el requerimiento.
Criterios de aceptación Condiciones para verificar cumplimiento.
Dependencias Otros requerimientos o sistemas relacionados.
Estado Candidato, validado, aprobado, cambiado, descartado.

29.9 Ejemplo de requerimiento especificado

Identificador RF-014
Nombre Registrar reclamo
Tipo Funcional
Descripción El sistema debe permitir que un operador registre un reclamo indicando cliente, motivo, descripción y canal de ingreso.
Prioridad Alta
Criterios de aceptación No debe guardarse sin cliente ni motivo. Debe asignarse número único. El estado inicial debe ser abierto.
Reglas relacionadas RN-003: prioridad inicial según motivo.
Fuente Taller con atención al cliente.

29.10 Especificación formal e informal

La especificación puede ser más formal o más liviana según el contexto.

Enfoque Características Uso habitual
Formal Documento estructurado, revisiones, aprobaciones, trazabilidad detallada. Sistemas críticos, contratos, regulación, equipos grandes.
Liviano Historias, criterios, tableros, notas, prototipos y documentación mínima suficiente. Equipos ágiles, productos evolutivos, proyectos con alta colaboración.
Mixto Combina documentos base con historias, modelos y criterios de aceptación. Muy frecuente en proyectos reales.

El formato debe servir al proyecto, no convertirse en un fin en sí mismo.

29.11 Requerimientos funcionales

Los requerimientos funcionales deben especificar acciones, datos, reglas, actores y resultados esperados.

Ejemplo de redacción:

El sistema debe permitir que un vendedor registre un pedido para un cliente activo, indicando productos, cantidades y forma de entrega. El pedido podrá guardarse como borrador o confirmarse si cumple las reglas de validación.

Cuando el comportamiento es complejo, puede complementarse con escenarios o casos de uso.

29.12 Requerimientos no funcionales

Los requerimientos no funcionales deben especificarse de forma medible cuando sea posible.

Ejemplo:

La consulta de pedidos debe responder en menos de 2 segundos para búsquedas sobre hasta 500.000 pedidos, con 100 usuarios concurrentes en horario comercial.

Evitar frases como "rápido", "seguro" o "amigable" sin criterios de verificación.

29.13 Reglas, datos e interfaces

La especificación debe incluir elementos que complementan los requerimientos:

  • Reglas de negocio: condiciones, cálculos y restricciones del dominio.
  • Datos: entidades, atributos, validaciones, origen y dueño del dato.
  • Interfaces externas: sistemas, servicios, archivos o dispositivos con los que se interactúa.

Estos elementos pueden documentarse en secciones separadas y referenciarse desde los requerimientos funcionales.

29.14 Trazabilidad

La trazabilidad permite relacionar requerimientos con su origen, decisiones, diseño, pruebas y cambios.

En una especificación conviene registrar:

  • Fuente del requerimiento.
  • Objetivo o necesidad asociada.
  • Reglas relacionadas.
  • Dependencias.
  • Criterios de aceptación.
  • Pruebas relacionadas.
  • Cambios posteriores.

La trazabilidad será estudiada con más profundidad en temas posteriores.

29.15 Versionado de la especificación

La especificación puede cambiar. Por eso, debe existir alguna forma de controlar versiones.

Conviene registrar:

  • Fecha de actualización.
  • Autor o responsable del cambio.
  • Descripción del cambio.
  • Requerimientos afectados.
  • Motivo del cambio.
  • Estado de aprobación.

Sin versionado, distintas personas pueden trabajar con versiones diferentes de la verdad.

29.16 Validación de la especificación

Una especificación debe validarse con interesados adecuados. Documentar no garantiza que el contenido sea correcto.

Validar implica revisar si:

  • Los requerimientos reflejan necesidades reales.
  • El alcance es correcto.
  • Las reglas están bien interpretadas.
  • Los datos son suficientes.
  • Las restricciones fueron consideradas.
  • Los criterios de aceptación son verificables.
  • No hay contradicciones importantes.

29.17 Especificación y comunicación

La especificación es una herramienta de comunicación. Debe ser comprensible para quienes deben usarla.

Para mejorar comunicación conviene:

  • Usar lenguaje claro.
  • Definir términos del dominio.
  • Organizar información por temas.
  • Evitar duplicaciones.
  • Incluir ejemplos cuando aclaren.
  • Separar requerimientos de decisiones técnicas.
  • Mantener actualizada la documentación.

Una especificación que nadie entiende o consulta pierde valor.

29.18 Errores frecuentes

Al especificar requerimientos, suelen aparecer estos errores:

  • Documentar pedidos sin análisis previo.
  • Escribir requerimientos ambiguos.
  • Mezclar necesidades, soluciones y tareas técnicas sin distinguirlas.
  • No incluir criterios de aceptación.
  • No identificar fuente ni prioridad.
  • No actualizar la especificación cuando cambian acuerdos.
  • Duplicar requerimientos en secciones distintas.
  • Usar un nivel de detalle inadecuado para el contexto.

29.19 Buenas prácticas

Algunas buenas prácticas son:

  • Especificar requerimientos después de analizarlos y refinarlos.
  • Usar identificadores únicos.
  • Escribir en lenguaje claro y verificable.
  • Incluir criterios de aceptación.
  • Registrar fuente, prioridad, estado y dependencias.
  • Separar tipos de requerimientos.
  • Mantener trazabilidad.
  • Validar la especificación con interesados adecuados.
La especificación debe ser suficientemente clara para construir y probar, pero suficientemente flexible para evolucionar cuando el proyecto cambia.

29.20 Qué debes recordar de este tema

  • La especificación documenta requerimientos de forma clara, organizada y verificable.
  • Debe servir a varias audiencias: negocio, desarrollo, pruebas, gestión y control.
  • No existe un único formato válido.
  • Cada requerimiento importante debería tener identificador, tipo, descripción y criterios de aceptación.
  • La especificación puede incluir reglas, datos, interfaces, restricciones y supuestos.
  • El versionado evita trabajar con información desactualizada.
  • Documentar no reemplaza validar.

29.21 Conclusión

La especificación de requerimientos de software convierte acuerdos y análisis en una referencia útil para el proyecto. Su valor está en comunicar con claridad qué debe cumplir el sistema y cómo se verificará.

Una buena especificación no depende de ser extensa, sino de ser clara, completa para su propósito, verificable y mantenible.

En el próximo tema estudiaremos las características de un buen requerimiento, profundizando en criterios como claridad, completitud, consistencia, factibilidad, verificabilidad y trazabilidad.