Las tablas de decisión son una representación visual concisa para especificar qué acciones realizar en función de las condiciones dadas. Son algoritmos cuya salida es un conjunto de acciones. La información expresada en las tablas de decisión también podría representarse como árboles de decisión o en un lenguaje de programación como una serie de declaraciones if-then-else y switch-case .
Descripción general
Cada decisión corresponde a una variable, relación o predicado cuyos posibles valores se enumeran entre las alternativas de condición. Cada acción es un procedimiento u operación a realizar, y las entradas especifican si (o en qué orden) se realizará la acción para el conjunto de alternativas de condición a las que corresponde la entrada.
Para que sean más concisos, muchas tablas de decisión incluyen en sus alternativas Condición A no les importa símbolo. Puede ser un guión [1] [2] [3] o un espacio en blanco, [4] aunque se desaconseja el uso de un espacio en blanco, ya que puede indicar simplemente que la tabla de decisiones no se ha terminado. [ cita requerida ] Uno de los usos de las tablas de decisión es revelar las condiciones bajo las cuales ciertos factores de entrada son irrelevantes en las acciones que se tomarán, lo que permite omitir estas pruebas de entrada y, por lo tanto, simplifica los procedimientos de toma de decisiones. [5]
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Las tablas anteriores transmiten información idéntica, pero la segunda tabla usa un guión como símbolo de "no importa" por brevedad. |
Aparte de la estructura básica de cuatro cuadrantes, las tablas de decisión varían ampliamente en la forma en que se representan las alternativas de condición y las entradas de acción. [6] [7] Algunas tablas de decisión usan valores simples de verdadero / falso para representar las alternativas a una condición (similar a if-then-else), otras tablas pueden usar alternativas numeradas (similar a switch-case), y algunas tablas incluso utilizar la lógica difusa o representaciones probabilísticas para las alternativas de condición. [8] De manera similar, las entradas de acción pueden representar simplemente si se va a realizar una acción (verifique las acciones a realizar), o en tablas de decisión más avanzadas, la secuencia de acciones a realizar (enumerar las acciones a realizar).
Una tabla de decisiones se considera equilibrada [4] o completa [3] si incluye todas las combinaciones posibles de variables de entrada. En otras palabras, las tablas de decisiones equilibradas prescriben una acción en cada situación en la que se proporcionan las variables de entrada. [4]
Ejemplo
La tabla de decisiones de entrada limitada es la más sencilla de describir. Las alternativas de condición son valores booleanos simples y las entradas de acción son marcas de verificación, que representan cuáles de las acciones de una columna determinada se deben realizar.
Una empresa de asistencia técnica redacta una tabla de decisiones para diagnosticar problemas de la impresora en función de los síntomas que les describen sus clientes por teléfono.
La siguiente es una tabla de decisiones equilibrada .
Reglas | |||||||||
---|---|---|---|---|---|---|---|---|---|
Condiciones | Impresiones de impresora | No | No | No | No | sí | sí | sí | sí |
Una luz roja está parpadeando | sí | sí | No | No | sí | sí | No | No | |
La impresora es reconocida por la computadora | No | sí | No | sí | No | sí | No | sí | |
Comportamiento | Verifique el cable de alimentación | - | |||||||
Verifique el cable de la impresora-computadora | - | ||||||||
Asegúrese de que el software de la impresora esté instalado | - | ||||||||
Revise / reemplace la tinta | - | ||||||||
Compruebe si hay atascos de papel | - |
Por supuesto, esto es solo un ejemplo simple (y no necesariamente corresponde a la realidad de la resolución de problemas de la impresora), pero aun así, demuestra cómo las tablas de decisión pueden escalar a varias condiciones con muchas posibilidades.
Beneficios de la ingeniería de software
Las tablas de decisión, especialmente cuando se combinan con el uso de un lenguaje específico de dominio , permiten a los desarrolladores y expertos en políticas trabajar a partir de la misma información, las propias tablas de decisión.
Las herramientas para convertir declaraciones if anidadas de lenguajes de programación tradicionales en tablas de decisión también se pueden utilizar como herramienta de depuración. [9] [10]
Las tablas de decisiones han demostrado ser más fáciles de entender y revisar que el código, y se han utilizado de manera extensa y exitosa para producir especificaciones para sistemas complejos. [11]
Historia
En las décadas de 1960 y 1970, una variedad de lenguajes "basados en tablas de decisiones", como Filetab, eran populares para la programación empresarial.
Tablas de decisiones integradas en el programa
Las tablas de decisión pueden integrarse, y a menudo lo están, en programas de computadora y utilizarse para "impulsar" la lógica del programa. Un ejemplo simple podría ser una tabla de búsqueda que contiene un rango de posibles valores de entrada y un puntero de función a la sección de código para procesar esa entrada.
Aporte | Puntero de función |
---|---|
"1" | Función 1 (inicializar) |
"2" | Función 2 (proceso 2) |
"9" | Función 9 (terminar) |
Tablas de control
Se pueden codificar múltiples condiciones de manera similar para encapsular toda la lógica del programa en forma de una tabla de decisiones o tabla de control "ejecutable" . En la práctica, puede haber varias tablas de este tipo, que operan en diferentes niveles y, a menudo, están vinculadas entre sí (ya sea por punteros o por un valor de índice).
Implementaciones
Ver también
Referencias
- ^ LI Jing (1 de abril de 2015). "Tutorial SEEM 3430: Tablas de decisión" (PDF) . pag. 23 . Consultado el 11 de noviembre de 2017 .
- ^ "Creación de una tabla de decisiones en reglas de negocio" . Centro de ayuda de Oracle . El 6 de agosto de 2017 . Consultado el 11 de noviembre de 2017 .
- ^ a b Ross, Ronald G. (2005). "Tablas de decisión, parte 2 ~ la ruta hacia la integridad" . Diario de reglas comerciales . 6 (8) . Consultado el 11 de noviembre de 2017 .
- ^ a b c Snow, Paul (19 de julio de 2012). "Tablas de decisión" . DTRules: un motor de reglas de tablas de decisiones basado en Java . Consultado el 11 de noviembre de 2017 .
- ^ LI Jing , 2015 , p. 24-25.
- ^ Rogers, William T. "Ejemplos de tablas de decisión: seguro médico" . Análisis y Diseño de Sistemas de la Universidad Saint Xavier . Archivado desde el original el 29 de marzo de 2007.
- ^ "Copia archivada" . Archivado desde el original el 30 de mayo de 2012 . Consultado el 7 de julio de 2010 .Mantenimiento de CS1: copia archivada como título ( enlace )
- ^ Moja, Geert; Witlox, Frank; Timmermans, Harry; Vanthienen, Jan (1996). "Modelado de elección de ubicación mediante tablas de decisión difusa" . Nuevas fronteras en lógica difusa y computación: conferencia bienal de 1996 de la Sociedad de Procesamiento de Información Difusa de América del Norte - NAFIPS . Conferencia Bienal de la Sociedad Norteamericana de Procesamiento de Información Difusa. Berkeley, CA: IEEE. págs. 80–84. doi : 10.1109 / NAFIPS.1996.534708 . ISBN 0-7803-3225-3.
- ^ "Un ejemplo real de CCIDE"
- ^ "Experiencia con el procesador de tablas de decisiones Cope" . Archivado desde el original el 4 de mayo de 2017 . Consultado el 7 de julio de 2010 .
- ^ Udo W. Pooch, "Traducción de tablas de decisión", Encuestas de computación de ACM, volumen 6, número 2 (junio de 1974) Páginas: 125-151 ISSN 0360-0300
- ^ "FORTAB: un lenguaje de tabla de decisión para aplicaciones informáticas científicas" , 1962, Rand
- ^ Alexander Williams (2015). "Analizador de tabla de decisiones de Ruby"
Otras lecturas
- Dwyer, B. y Hutchings, K. (1977) "Optimización de diagrama de flujo en Cope, una tabla de decisiones de elección múltiple" Aust. Comp. J. Vol. 9 núm. 3 p. 92 (septiembre de 1977).
- Fisher, DL (1966) "Tablas de datos, documentación y decisiones" Comm ACM Vol. 9 No. 1 (enero de 1966) pág. 26–31.
- General Electric Company (1962) GE-225 TABSOL manual de referencia y manual de aplicación GF-224 TABSOL CPB-l47B (junio de 1962).
- Grindley, CBB (1968) "El uso de tablas de decisión dentro de la sistemática" Comp. J. Vol. 11 núm. 2 p. 128 (agosto de 1968).
- Jackson, MA (1975) Principios del diseño de programas Academic Press
- Myers, HJ (1972) "Compilación de código optimizado a partir de tablas de decisión" IBM J. Res. & Development (septiembre de 1972) p. 489–503.
- Pollack, SL (1962) "DETAB-X: Un lenguaje informático mejorado orientado a los negocios" Rand Corp. Memo RM-3273-PR (agosto de 1962)
- Schumacher, H. y Sevcik, KC (1976) "El enfoque sintético para la conversión de tablas de decisión" Comm. ACM Vol. 19 No. 6 (junio de 1976) p. 343–351
- CSA, (1970): Z243.1–1970 para Tablas de decisiones, Asociación Canadiense de Estándares
- Jorgensen, Paul C. (2009) Modelado del comportamiento del software: el enfoque de un artesano. Publicaciones de Auerbach, CRC Press. Capítulo 5.
enlaces externos
- Software RapidGen para versiones de Windows, Unix, Linux y OpenVMS de herramientas de programación y compiladores basados en tablas de decisiones
- Software LogicGem para procesador de tablas de decisiones de Windows para perfeccionar la lógica y las reglas comerciales