# Beslissingstabel

Beslissingstabellen zijn tabellen die gebruikt kunnen worden om op nauwkeurige en eenvoudige wijze ingewikkelde verbanden weer te geven.
Beslissingstabellen verbinden net als flowcharts voorwaarden (condities) met beslissingen die wel of niet (Y/N) uitgevoerd moeten worden.

## Structuur

Een beslissingstabel is normaal gesproken verdeeld in vier gedeelten.
Beslissingstabel :
| Voorwaarden | Alternatieven |
| Beslissing | Acties |
* In het voorwaardengedeelte staan de relevante voorwaarden, ook wel condities, oorzaken of variabelen genoemd, zoals "De printer werkt niet" of "Het rode licht knippert" of "Temperatuur".
* In het alternatievengedeelte staat of de voorwaarden wel of niet (Y/N) realiteit zijn. Ook zouden hier ranges aangegeven kunnen worden. Als de voorwaarde bijvoorbeeld de watertemperatuur is, kunnen hier waarden staan als "beneden de 0 graden", "tussen de 0 en 100 graden" of "boven de 100 graden".
* In het beslissingsgedeelte staat welke beslissing mogelijk is, zoals: "Controleer de stroom".
* In het actiegedeelte staat wanneer (onder welke geldige voorwaarden) de beslissing wordt geadviseerd. (Y)
Veel beslissingstabellen gebruiken bij de alternatieven de tilde (~), die betekent dat iets niet van belang is. Dit kan beslissingstabellen vereenvoudigen.
Met uitzondering van de vier kwadranten zijn er veel verschillen in beslissingstabellen. Sommige beslissingstabellen gebruiken eenvoudige "waar/niet waar"- of Y/N-waarden, andere hebben ranges. Ook in het actiegedeelte kan het ingewikkelder door bijvoorbeeld tegelijkertijd verschillende beslissingen te adviseren. Beslissingstabellen kunnen gebruikt worden wanneer er voldoende informatie bekend is.

## Voorbeeld

De eenvoudige beslissingstabel is het eenvoudigst te beschrijven. De alternatieven zijn de booleaanse waarden Y/N, net als de beslissingen.
Een technische beheerafdeling maakt de volgende beslissingstabel voor haar medewerkers om printerproblemen te analyseren, gebaseerd op telefonisch verkregen informatie van hun klanten.
Het volgende is een gebalanceerde beslissingstabel.
Printerprobleem :
| | | Rules | Rules | Rules | Rules | Rules | Rules | Rules | Rules |
| Voorwaarden | Printer werkt niet | Y | Y | Y | Y | N | N | N | N |
| Voorwaarden | Er knippert een rood licht | Y | Y | N | N | Y | Y | N | N |
| Voorwaarden | De printer wordt niet herkend | Y | N | Y | N | Y | N | Y | N |
| Beslissing | Controleer de stroomaansluiting | | | X | | | | | |
| Beslissing | Controleer de verbinding met de computer | X | | X | | | | | |
| Beslissing | Controleer de printersoftware | X | | X | | X | | X | |
| Beslissing | Controleer/vervang de inkt | X | X | | | X | X | | |
| Beslissing | Controleer of het papier niet verstopt zit | | X | | X | | | | |
Dit is natuurlijk maar een eenvoudig voorbeeld, maar het toont wel aan hoe beslissingstabellen werken.
Een beslissingstabel is te controleren op volledigheid. Doordat de voorwaarden booleaans zijn (Y/N), is het aantal mogelijke 'rules' 2 tot de macht aantal voorwaarden. Als er minder rules zijn, dan dekt de tabel niet alle mogelijke situaties af. Het is goed gebruik om dat wel te doen, en expliciet te maken dat er in die gevallen niets hoeft te gebeuren. In bovenstaand voorbeeld is dat bij de meest rechterrule (N-N-N) het geval. Als er meer rules zijn dan mogelijk, dan is de tabel 'overcompleet', en daarmee dubbelzinnig.

## Voordelen

Zeker als ze in gebruikerstaal (jip-en-janneketaal) geschreven zijn, vereenvoudigen beslissingstabellen het overleg, bijvoorbeeld tussen gebruikers en informatieanalisten bij de ontwikkeling en implementatie van een informatiesysteem. Ook later, als er getest moet worden, zijn ze heel handig.
Er is gebleken dat beslissingstabellen eenvoudiger te begrijpen zijn dan brokken tekst. Ze worden daarom vaak gebruikt om complexe systemen inzichtelijk en begrijpelijk te maken.
Beslissingstabbellen worden ook in software regelmatig opgenomen. In het volgende eenvoudige voorbeeld wordt een tabel gebruikt.
Statische beslissingstabel :
| Input | Function Pointer |
| '1' | start proces 1) |
| '2' | proces 2 |
| '9' | proces 9 |