Lista de revisión de reglas de decisión (para analistas y revisores)
Una lista de revisión para una regla de decisión antes de ponerla en producción, escrita para analistas y revisores más que para programadores. Cada punto nombra una página de esta referencia donde el motor muestra la comprobación, y la regla de entrada de abajo lleva los pares de independencia en los que se apoyan la mayoría de los puntos.
Nombres y significado. Cada condición tiene un nombre que se lee como un enunciado y una descripción de una línea en el glosario; no hay dos nombres que se parezcan o difieran solo en mayúsculas; los umbrales son entradas de umbral con su comparación registrada, o condiciones con nombre decididas fuera de la regla, y las fechas se deciden fuera de la regla. Estructura. Cada grupo mixto de AND y OR está entre paréntesis; cada excepción es un AND NOT en el nivel sobre el que debe prevalecer; «o» es inclusivo salvo que la regla diga otra cosa; «solo si» y «a menos que» se tradujeron con la condición en el lado correcto de la flecha.
Comportamiento. La regla no es ni siempre verdadera ni siempre falsa, y las comprobaciones lo dicen sin marca de vacuo; los supuestos, si los hay, son consistentes; las filas VERDADERAS de la tabla de verdad coinciden con la lista del dueño de quién cumple, y sus filas FALSAS con la lista de quién no; cualquier versión anterior se comparó y las filas que difieren se revisaron contra la petición de cambio. Pruebas. Cada condición tiene un par de independencia (el informe de abajo muestra los pares de la regla de entrada, cuatro escenarios para tres condiciones); los resultados esperados vinieron del requisito; los contraejemplos pasados están en el conjunto de pruebas; una ejecución de mutación no deja ningún mutante no equivalente superviviente.
Entrega. El código exportado lleva el resumen criptográfico de la regla de la que se generó; un resultado «No determinado» en cualquier punto de la cadena se trata como un fallo al decidir, no como un aprobado; el dueño de la regla ha confirmado la lectura en lenguaje natural. Ninguno de estos puntos exige que quien revisa calcule nada: el motor calcula, quien revisa compara.
Ejemplo
allow := (member OR invited) AND NOT banned · salida
Comprobaciones exactas
Tabla de verdad (8 filas)
| # | member | invited | banned | allow |
|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO |
| 1 | FALSO | FALSO | VERDADERO | FALSO |
| 2 | FALSO | VERDADERO | FALSO | VERDADERO |
| 3 | FALSO | VERDADERO | VERDADERO | FALSO |
| 4 | VERDADERO | FALSO | FALSO | VERDADERO |
| 5 | VERDADERO | FALSO | VERDADERO | FALSO |
| 6 | VERDADERO | VERDADERO | FALSO | VERDADERO |
| 7 | VERDADERO | VERDADERO | VERDADERO | FALSO |
Lectura en lenguaje claro
Principianteallow es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos)
2. banned es falso
En todos los demás casos, allow es falso.
Sobre los operadores:
- AND (Y) solo es verdadero cuando todas sus partes son verdaderas.
- OR (O) es inclusivo: es verdadero en cuanto al menos una parte es verdadera, también cuando lo son varias.
- NOT (NO) invierte un valor: lo verdadero pasa a ser falso y lo falso, verdadero.
Intermedioallow es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos)
2. banned es falso
En todos los demás casos, allow es falso.
Avanzadoallow es verdadero exactamente cuando se cumplen las dos condiciones siguientes [conjunción ∧]:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos) [disyunción inclusiva ∨]
2. banned es falso [negación ¬]
En todos los demás casos, allow es falso.
Notación formal: (member ∨ invited) ∧ ¬banned
Diagrama lógico
MC/DC
| Entrada | Estado | Par de independencia (solo esa entrada cambia) |
|---|---|---|
| member | found | member=F, invited=F, banned=F → F | member=T, invited=F, banned=F → T |
| invited | found | member=F, invited=F, banned=F → F | member=F, invited=T, banned=F → T |
| banned | found | member=F, invited=T, banned=F → T | member=F, invited=T, banned=T → F |
El error habitual
Revisar la regla leyéndola y asintiendo. Cada punto de la lista es una comparación entre lo que la regla hace y lo que alguien quería decir, y la primera mitad de esa comparación es una tabla que quien revisa no tuvo que construir.
Preguntas
¿Qué puntos pueden automatizarse?
Los de comportamiento y pruebas: comprobaciones, consistencia, comparación de versiones, pares de independencia y ejecuciones de mutación son todos salida del motor, y la CLI los ejecuta en integración continua. Los nombres, el significado y la confirmación del dueño son trabajo humano.
¿Qué es lo imprescindible para una regla pequeña?
Poner entre paréntesis los grupos mixtos, confirmar las filas VERDADERAS con el dueño, y conservar una prueba por par de independencia. Para tres condiciones son cuatro pruebas, y el informe de la regla de entrada de abajo es la plantilla.
Relacionado
Véase también
- Escribir reglas de negocio en lenguaje claro que se traduzcan a lógica
- Pares de independencia MC/DC, ejemplo resuelto con el informe de cobertura del motor
- Pruebas de regresión para reglas de decisión que cambian
- Pruebas de mutación para reglas booleanas: mutantes de operador, negación y literal
- Nombres confundibles: l, 1, I, O y 0 en los nombres de variables
- Los supuestos inconsistentes hacen que todas las pruebas pasen
- Un tiempo agotado no es un aprobado: resultados «No determinado»
- De expresión booleana a Python, SQL, SMT-LIB y LaTeX
Pruebas y reglas
Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.