26. Detección de ambigüedades, contradicciones y omisiones

26.1 Introducción

Uno de los objetivos principales del análisis de requerimientos es mejorar su calidad. Para lograrlo, es necesario detectar ambigüedades, contradicciones y omisiones.

Estos problemas pueden parecer pequeños al leer una especificación, pero suelen generar interpretaciones diferentes, retrabajo, defectos, conflictos con usuarios y demoras en la aceptación del producto.

Detectarlos temprano es mucho más barato que descubrirlos cuando el sistema ya fue diseñado, desarrollado o entregado.

26.2 ¿Qué es una ambigüedad?

Una ambigüedad aparece cuando un requerimiento puede interpretarse de más de una forma razonable.

Un requerimiento ambiguo no comunica una expectativa única. Cada persona puede entender algo distinto y creer que entendió correctamente.

Ejemplo ambiguo:

  • El sistema debe permitir consultar pedidos recientes.

La palabra "recientes" puede significar pedidos del día, de la semana, del mes o de los últimos 30 días. El requerimiento necesita precisión.

26.3 Ejemplos de ambigüedad

Requerimiento ambiguo Problema Versión más clara
El sistema debe ser rápido. No indica operación ni tiempo esperado. La búsqueda de clientes debe responder en menos de 2 segundos con hasta 100.000 clientes.
El usuario podrá modificar datos importantes. No define usuario ni datos importantes. El supervisor podrá modificar el límite de crédito de un cliente activo.
El sistema debe mostrar reportes completos. No indica contenido, filtros ni formato. El reporte mensual debe incluir ventas por vendedor, zona, producto e importe total.
El sistema debe notificar al responsable. No define quién es responsable ni por qué canal. El sistema debe enviar un correo al supervisor asignado cuando un reclamo de prioridad alta quede sin atender por más de 2 horas.

26.4 Palabras que generan ambigüedad

Algunas palabras son señales de posible ambigüedad si no se acompañan con criterios concretos.

  • Rápido.
  • Fácil.
  • Intuitivo.
  • Seguro.
  • Reciente.
  • Completo.
  • Adecuado.
  • Optimizado.
  • Flexible.
  • Importante.

Estas palabras no están prohibidas, pero deben aclararse con medidas, condiciones, ejemplos o criterios verificables.

26.5 ¿Qué es una contradicción?

Una contradicción ocurre cuando dos o más requerimientos, reglas o restricciones no pueden cumplirse al mismo tiempo.

Ejemplo:

  • El sistema debe permitir que los clientes cancelen pedidos confirmados.
  • Los pedidos confirmados no pueden cancelarse ni modificarse.

Ambas afirmaciones no pueden ser verdaderas sin una regla adicional que las diferencie, como plazo, estado, tipo de pedido o autorización especial.

26.6 Tipos de contradicciones

Las contradicciones pueden aparecer de varias formas.

Tipo Ejemplo
Entre requerimientos funcionales Un requerimiento permite editar facturas emitidas y otro lo prohíbe.
Entre reglas de negocio Una regla permite descuentos hasta 30% y otra exige aprobación desde 20%.
Entre alcance y requerimiento El alcance excluye pagos en línea, pero un requerimiento los incluye.
Entre seguridad y usabilidad Se exige autenticación en cada operación, pero también completar la tarea sin interrupciones.
Entre normativa y operación Los usuarios quieren eliminar datos, pero la normativa exige conservarlos.

26.7 ¿Qué es una omisión?

Una omisión ocurre cuando falta información necesaria para comprender, construir, probar o aceptar un requerimiento.

Ejemplo incompleto:

El sistema debe permitir registrar reclamos.

Faltan datos obligatorios, estados, reglas de prioridad, permisos, validaciones, notificaciones, criterios de aceptación y excepciones. La función está nombrada, pero no suficientemente especificada.

26.8 Ejemplos de omisiones

Requerimiento incompleto Información omitida
El sistema debe permitir registrar usuarios. Datos obligatorios, roles, validación de correo, estado inicial, permisos.
El sistema debe calcular descuentos. Fórmula, límites, productos incluidos, autorización, redondeo.
El sistema debe enviar notificaciones. Evento disparador, destinatario, canal, contenido, errores de envío.
El sistema debe generar reportes. Datos, filtros, formato, periodicidad, permisos, totales.

26.9 Causas frecuentes

Estos problemas pueden originarse por varias razones:

  • Suposiciones no declaradas.
  • Lenguaje informal o demasiado general.
  • Distintos interesados con visiones diferentes.
  • Falta de conocimiento del dominio.
  • Reglas implícitas no documentadas.
  • Presión por avanzar rápido.
  • Documentación desactualizada.
  • No revisar casos alternativos y excepciones.

Reconocer las causas ayuda a elegir mejores técnicas de revisión.

26.10 Técnicas para detectar ambigüedades

Algunas técnicas útiles son:

  • Buscar palabras vagas o subjetivas.
  • Pedir ejemplos concretos.
  • Preguntar cómo se verificará el requerimiento.
  • Revisar si dos personas interpretan lo mismo.
  • Transformar frases generales en criterios medibles.
  • Identificar actores, datos, reglas y condiciones.

Si un requerimiento no puede probarse ni explicarse con ejemplos, probablemente necesita refinamiento.

26.11 Técnicas para detectar contradicciones

Para detectar contradicciones conviene comparar requerimientos entre sí y con otros artefactos.

  • Revisar requerimientos por proceso o módulo.
  • Comparar reglas de negocio relacionadas.
  • Contrastar requerimientos con alcance y exclusiones.
  • Revisar permisos por rol.
  • Analizar estados y transiciones.
  • Revisar restricciones legales o técnicas.
  • Hacer revisiones con interesados de distintas áreas.

Las contradicciones muchas veces aparecen cuando se juntan visiones que fueron relevadas por separado.

26.12 Técnicas para detectar omisiones

Para detectar omisiones, conviene revisar cada requerimiento desde varias perspectivas.

  • ¿Quién ejecuta la función?
  • ¿Qué datos necesita?
  • ¿Qué reglas aplican?
  • ¿Qué ocurre si algo falla?
  • ¿Qué permisos se requieren?
  • ¿Qué estados cambian?
  • ¿Qué notificaciones se generan?
  • ¿Qué se debe auditar?
  • ¿Cómo se prueba?

Las omisiones suelen detectarse recorriendo escenarios y flujos alternativos.

26.13 Revisión por pares

Una revisión por pares consiste en que otra persona revise los requerimientos para detectar problemas que el autor no vio.

Puede participar:

  • Otro analista.
  • Un desarrollador.
  • Un tester.
  • Un usuario experto.
  • Un responsable de negocio.
  • Un especialista en seguridad, legal o auditoría.

Cada perfil detecta problemas distintos. Por eso, las revisiones multidisciplinarias suelen ser más efectivas.

26.14 Listas de verificación

Una lista de verificación ayuda a revisar requerimientos de forma ordenada.

Ejemplo de preguntas:

  • ¿El requerimiento tiene un objetivo claro?
  • ¿Se identifica el actor o usuario?
  • ¿Se conocen los datos requeridos?
  • ¿Hay criterios de aceptación?
  • ¿Existen reglas de negocio asociadas?
  • ¿Se consideraron errores y excepciones?
  • ¿Contradice algún requerimiento existente?
  • ¿Puede verificarse?
  • ¿Está dentro del alcance?

Las listas reducen olvidos en revisiones repetitivas.

26.15 Ejemplo de revisión completa

Requerimiento inicial:

El sistema debe permitir cerrar reclamos rápidamente.

Problemas detectados:

  • Ambigüedad: "rápidamente" no define tiempo ni proceso.
  • Omisión: no indica quién puede cerrar reclamos.
  • Omisión: no indica condiciones para cerrar.
  • Omisión: no indica qué datos deben registrarse al cierre.

Versión refinada:

El sistema debe permitir que un usuario con rol supervisor cierre un reclamo en estado resuelto, registrando fecha, hora, usuario responsable y comentario de cierre.

26.16 Registro de problemas detectados

Cuando se detecta un problema en un requerimiento, conviene registrarlo de forma clara.

Requerimiento Problema Tipo Acción
El sistema debe ser fácil de usar. No define tarea ni criterio de facilidad. Ambigüedad Definir tarea, usuario y medida observable.
Pedidos confirmados pueden cancelarse. Contradice regla que impide modificar pedidos confirmados. Contradicción Revisar con negocio condiciones de cancelación.
Registrar pagos. Faltan datos, estados, permisos y errores posibles. Omisión Refinar con administración y equipo técnico.

26.17 Relación con criterios de aceptación

Los criterios de aceptación ayudan a detectar ambigüedades y omisiones. Si no se pueden escribir criterios claros para un requerimiento, probablemente el requerimiento no está suficientemente entendido.

Ejemplo:

  • Requerimiento: el sistema debe permitir buscar productos.
  • Preguntas: ¿por qué campos?, ¿con coincidencia exacta o parcial?, ¿qué datos se muestran?, ¿qué ocurre si no hay resultados?
  • Criterios derivados: búsqueda por código, nombre o categoría; mostrar precio y stock; informar si no hay resultados.

26.18 Errores frecuentes

Al revisar requerimientos, suelen cometerse estos errores:

  • Leer rápido y asumir que se entiende.
  • No pedir ejemplos concretos.
  • Dejar palabras vagas sin aclaración.
  • No revisar requerimientos relacionados entre sí.
  • Validar solo con una persona.
  • No registrar dudas.
  • No revisar casos negativos.
  • Confundir acuerdo verbal con requerimiento claro.

26.19 Buenas prácticas

Algunas buenas prácticas son:

  • Buscar términos vagos y pedir definición.
  • Convertir expectativas en criterios verificables.
  • Revisar requerimientos junto con reglas, datos, alcance y restricciones.
  • Usar escenarios para descubrir excepciones.
  • Realizar revisiones con perfiles diferentes.
  • Registrar problemas detectados y responsables de resolverlos.
  • Validar cambios con interesados adecuados.
  • No avanzar a implementación con requerimientos críticos ambiguos.
La ambigüedad no resuelta no desaparece: se transforma en interpretación durante el diseño, el desarrollo o las pruebas.

26.20 Qué debes recordar de este tema

  • Una ambigüedad permite más de una interpretación razonable.
  • Una contradicción impide cumplir dos condiciones al mismo tiempo.
  • Una omisión deja fuera información necesaria.
  • Palabras vagas deben aclararse con criterios concretos.
  • Las contradicciones suelen aparecer al comparar requerimientos entre áreas.
  • Los escenarios y criterios de aceptación ayudan a descubrir problemas.
  • Detectar estos problemas temprano reduce retrabajo.

26.21 Conclusión

Detectar ambigüedades, contradicciones y omisiones es una actividad central para mejorar la calidad de los requerimientos. Estos problemas afectan la comprensión compartida y pueden causar errores costosos si se descubren tarde.

La revisión cuidadosa, los ejemplos concretos, los criterios de aceptación y la participación de distintos perfiles ayudan a convertir requerimientos débiles en requerimientos más claros y verificables.

En el próximo tema estudiaremos la priorización de requerimientos, necesaria para decidir qué se construirá primero cuando existen muchas necesidades y recursos limitados.