Mesa de decisão - Decision table

Golf dataset.png

As tabelas de decisão são uma representação visual concisa para especificar quais ações executar, dependendo de determinadas condições. Eles são algoritmos cuja saída é um conjunto de ações. As informações expressas em tabelas de decisão também podem ser representadas como árvores de decisão ou em uma linguagem de programação como uma série de instruções if-then-else e switch-case .

Visão geral

Cada decisão corresponde a uma variável, relação ou predicado cujos valores possíveis estão listados entre as alternativas de condição. Cada ação é um procedimento ou operação a ser executado, e as entradas especificam se (ou em que ordem) a ação deve ser executada para o conjunto de alternativas de condição a que a entrada corresponde.

Para torná-los mais concisos, muitas tabelas de decisão incluem em suas alternativas de condição um símbolo de não importa . Pode ser um hífen ou um espaço em branco, embora o uso de um espaço em branco seja desencorajado, pois pode simplesmente indicar que a tabela de decisão não foi concluída. Um dos usos das tabelas de decisão é revelar as condições sob as quais certos fatores de entrada são irrelevantes nas ações a serem tomadas, permitindo que esses testes de entrada sejam ignorados e, assim, simplificando os procedimentos de tomada de decisão.

Demonstração do símbolo “não me importo”
Regras
Condições Sentindo-se com energia? sim Não sim Não
Está chovendo? sim sim Não Não
Ações Fique dentro. Pode ser Pode ser
Vá correr. Pode ser
Cuide do jardim. Pode ser Pode ser
Regras
Condições Sentindo-se com energia? - sim Não
Está chovendo? sim Não Não
Ações Fique dentro. Pode ser
Vá correr. Pode ser
Cuide do jardim. Pode ser Pode ser
As tabelas acima transmitem informações idênticas, mas a segunda tabela usa um hífen como um símbolo de indiferença para abreviar.

Além da estrutura básica de quatro quadrantes, as tabelas de decisão variam amplamente na forma como as alternativas de condição e as entradas de ação são representadas. Algumas tabelas de decisão usam valores verdadeiros / falsos simples para representar as alternativas para uma condição (semelhante a if-then-else), outras tabelas podem usar alternativas numeradas (semelhante a switch-case), e algumas tabelas até mesmo usam lógica difusa ou representações probabilísticas para alternativas de condição. De maneira semelhante, as entradas de ação podem simplesmente representar se uma ação deve ser executada (verifique as ações a serem executadas) ou em tabelas de decisão mais avançadas, a sequência de ações a serem executadas (numerar as ações a serem executadas).

Uma tabela de decisão é considerada balanceada ou completa se incluir todas as combinações possíveis de variáveis ​​de entrada. Em outras palavras, as tabelas de decisão balanceadas prescrevem uma ação em cada situação em que as variáveis ​​de entrada são fornecidas.

Exemplo

A tabela de decisão de entrada limitada é a mais simples de descrever. As alternativas de condição são valores booleanos simples e as entradas de ação são marcas de verificação, representando quais ações em uma determinada coluna devem ser executadas.

Uma empresa de suporte técnico escreve uma tabela de decisão para diagnosticar problemas da impressora com base nos sintomas descritos a eles por telefone de seus clientes.

A seguir está uma tabela de decisão equilibrada .

Solucionador de problemas de impressora
Regras
Condições Impressões da impressora Não Não Não Não sim sim sim sim
Uma luz vermelha está piscando sim sim Não Não sim sim Não Não
A impressora é reconhecida pelo computador Não sim Não sim Não sim Não sim
Ações Verifique o cabo de alimentação Pode ser -
Verifique o cabo impressora-computador Pode ser Pode ser -
Certifique-se de que o software da impressora esteja instalado Pode ser Pode ser Pode ser Pode ser -
Verificar / substituir tinta Pode ser Pode ser Pode ser -
Verifique se há atolamento de papel Pode ser Pode ser -

Claro, este é apenas um exemplo simples (e não corresponde necessariamente à realidade da solução de problemas da impressora), mas mesmo assim, demonstra como as tabelas de decisão podem ser dimensionadas para várias condições com muitas possibilidades.

Benefícios da engenharia de software

As tabelas de decisão, especialmente quando combinadas com o uso de uma linguagem específica de domínio , permitem que desenvolvedores e especialistas em políticas trabalhem a partir das mesmas informações, as próprias tabelas de decisão.

Ferramentas para renderizar instruções if aninhadas de linguagens de programação tradicionais em tabelas de decisão também podem ser usadas como uma ferramenta de depuração.

As tabelas de decisão provaram ser mais fáceis de entender e revisar do que o código e foram usadas extensivamente e com sucesso para produzir especificações para sistemas complexos.

História

Nas décadas de 1960 e 1970, uma variedade de linguagens "baseadas em tabelas de decisão", como Filetab, eram populares para programação de negócios.

Tabelas de decisão incorporadas ao programa

As tabelas de decisão podem ser, e frequentemente são, embutidas em programas de computador e usadas para "conduzir" a lógica do programa. Um exemplo simples pode ser uma tabela de pesquisa contendo uma gama de valores de entrada possíveis e um ponteiro de função para a seção do código para processar essa entrada.

Tabela de decisão estática
Entrada Ponteiro de Função
"1" Função 1 (inicializar)
"2" Função 2 (processo 2)
"9" Função 9 (encerrar)

Tabelas de controle

Múltiplas condições podem ser codificadas de maneira semelhante para encapsular toda a lógica do programa na forma de uma tabela de decisão ou tabela de controle "executável" . Pode haver várias dessas tabelas na prática, operando em níveis diferentes e frequentemente vinculadas umas às outras (por ponteiros ou por um valor de índice).

Implementações

  • Filetab , originalmente do NCC
  • DETAB / 65, 1965, ACM
  • FORTAB de Rand em 1962, projetado para ser embutido em FORTRAN
  • Existe uma implementação Ruby usando MapReduce para encontrar as ações corretas com base em valores de entrada específicos.

Veja também

Referências

Leitura adicional

  • Dwyer, B. e Hutchings, K. (1977) "Flowchart Optimization in Cope, a Multi-Choice Decision Table" Aust. Comp. J. Vol. 9 No. 3 p. 92 (setembro de 1977).
  • Fisher, DL (1966) "Data, Documentation and Decision Tables" Comm ACM Vol. 9 No. 1 (janeiro de 1966) p. 26–31.
  • General Electric Company (1962) Manual de referência GE-225 TABSOL e manual de aplicação GF-224 TABSOL CPB-l47B (junho de 1962).
  • Grindley, CBB (1968) "The Use of Decision Tables within Systematics" Comp. J. Vol. 11 No. 2 p. 128 (agosto de 1968).
  • Jackson, MA (1975) Principles of Program Design Academic Press
  • Myers, HJ (1972) "Compiling Optimized Code from Decision Tables" IBM J. Res. & Development (setembro de 1972) p. 489–503.
  • Pollack, SL (1962) "DETAB-X: Uma linguagem de computador orientada para negócios aprimorada" Rand Corp. Memo RM-3273-PR (agosto de 1962)
  • Schumacher, H. e Sevcik, KC (1976) "The Synthetic Approach to Decision Table Conversion" Comm. ACM Vol. 19 No. 6 (junho de 1976) p. 343-351
  • CSA, (1970): Z243.1–1970 para Decision Tables, Canadian Standards Association
  • Jorgensen, Paul C. (2009) Modeling Software Behavior: A Craftsman's Approach. Publicações Auerbach, CRC Press. Capítulo 5.

links externos

  • Software RapidGen para versões Windows, Unix, Linux e OpenVMS de ferramentas de programação e compiladores baseados em tabelas de decisão
  • Software LogicGem para processador de tabela de decisão do Windows para aperfeiçoar regras de lógica e negócios