# Entscheidungstabelle

Entscheidungstabellen sind eine vieler Möglichkeiten, komplexe Regelwerke in übersichtlicher Weise darzustellen. Unter einer Regel ist dabei eine Vorschrift zu verstehen, welche Aktionen bei Vorliegen einer gegebenen Kombination von Bedingungen durchzuführen sind. Ein Regelwerk ist eine Zusammenstellung unterschiedlicher Regeln.

## Einsatz

Entscheidungstabellen werden eingesetzt, um komplexe Abhängigkeiten zwischen mehreren Bedingungen und den jeweils auszuführenden Aktionen übersichtlich, vollständig und widerspruchsfrei darzustellen. Anwendungsbeispiele sind der Entwurf von Computerprogrammen, speicherprogrammierbaren Steuerungen (SPS), Testdatenkonstellationen und viele andere. Ergänzend wird das Regelwerk oft durch einen übersichtlicheren Entscheidungsbaum graphisch oder in Matrizen dargestellt. Die Tabelle(n) sind jedoch systematischer und können deshalb leichter als der Baum auf Widerspruchsfreiheit und Vollständigkeit überprüft werden. Dabei darf der Arbeitsaufwand bei der Formulierung, bei der Abstimmung mit den Beteiligten und der Kontrolle nicht unterschätzt werden. Dafür ergibt sich eine enorme Erleichterung bei der Projektabwicklung, dem Änderungsdienst und der Kostenkalkulation.
Entscheidungstabellen werden auch in einem Business-Rule-Management-System (BRMS) verwendet, um sowohl die Definition und die automatische Ausführung von Regelwerken (Business-Rules) zu ermöglichen. Die Entscheidungstabellen werden dort in einem Business-Rule-Repository verwaltet.

## Struktur

Eine Entscheidungstabelle besteht aus vier Teilbereichen:
* Einer Auflistung der zu berücksichtigenden Bedingungen
* Einer Auflistung der möglichen Aktionen
* Einem Bereich, in dem die möglichen Bedingungskombinationen zusammengestellt sind
* Einem Bereich, in dem jeder Bedingungskombination die jeweils durchzuführenden Aktivitäten zugeordnet sind.
| Tabellenbezeichnung | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 |
| Bedingungen |||||||||
| 1 Lieferfähig? | j | j | j | j | n | n | n | n |
| 2 Angaben vollständig? | j | j | n | n | j | j | n | n |
| 3 Bonität in Ordnung? | j | n | j | n | j | n | j | n |
| Aktionen |||||||||
| A Lieferung mit Rechnung | x | | | | | | | |
| B Lieferung als Nachnahme | | x | | | | | | |
| C Angaben vervollständigen | | | x | x | | | | |
| D Mitteilen: nicht lieferbar | | | | | x | x | x | x |
Die Spalten R1 bis R8 bezeichnen die jeweiligen Regeln. Am Beispiel der Regel 7 sei erläutert, wie die Regeln zu lesen sind: Wenn die Bedingung 3 erfüllt ist, die Bedingungen 1 und 2 hingegen nicht, dann ist die Aktion D auszuführen.

## Eigenschaften

Im Folgenden werden vier Kriterien zur Beurteilung von Entscheidungstabellen dargestellt.

### Vollständigkeit

Eine Entscheidungstabelle ist vollständig, wenn sämtliche möglichen Bedingungskombinationen erfasst sind. Bei n Bedingungen sind dies $2^{n}$ Kombinationen. Man erkennt, dass die Zahl der möglichen Kombinationen mit der Anzahl der Bedingungen exponentiell wächst – bei zehn Bedingungen gibt es bereits $2^{10}$ = 1024 Kombinationen. In den meisten Fällen führt dies jedoch nicht zu einer gleich hohen Anzahl an Regeln, da Regeln oft redundant sind. Wenn trotz aller Sorgfalt oder durch geänderte Umstände eine Entscheidungstabelle nicht (mehr) alle Fälle abdeckt, kommt man am Ende ohne Ergebnis und Aktion aus der letzten Bedingungsspalte. Daher ist es sinnvoll, vor allem für Computerprogramme, nach der letzten Bedingungsspalte eine zusätzliche Spalte (z. B. „RF“) mit allen Bedingungen n einzuführen. Läuft das Programm in diese Spalte, kann als Aktion ein Hinweis ausgegeben werden, z. B. „Fehler – Entscheidungstabelle unvollständig“.

### Konsolidierung

Eine Entscheidungstabelle ist konsolidierbar, wenn mehrere Regeln zu einer zusammengefasst werden können. In dem oben dargestellten Grundmuster können beispielsweise die Regeln R5, R6, R7 und R8 zusammengefasst werden: Da die durchzuführenden Aktionen nur von der Bedingung 1 abhängt und die Bedingungen 2 und 3 irrelevant sind, lassen sie sich durch eine einzige Regel darstellen:
| Tabellenbezeichnung | R5 (neu) |
| Bedingungen ||
| Bedingung 1 | n |
| Bedingung 2 | – |
| Bedingung 3 | – |
| Aktionen ||
| Aktion 1 | |
| Aktion 2 | |
| Aktion 3 | |
| Aktion 4 | x |
Die waagerechten Striche werden als „Irrelevanzanzeiger“ oder “Don’t care-Zeichen” bezeichnet. Sie zeigen an, dass die Bedingungen 2 und 3 für die Festlegung der durchzuführenden Aktion irrelevant sind, sofern die Bedingung 1 erfüllt ist.
Allgemein gibt es für die Konsolidierung wiederum zwei Regeln: Führen 1. zwei Regeln zur selben Aktion oder Aktionsfolge UND unterscheiden sich diese 2. nur in einer Bedingungsanzeige, so können diese beiden Regeln konsolidiert werden. Anstelle der unterschiedlichen Bedingungsanzeiger tritt in der konsolidierten Regel der Irrelevanzzeiger.

### Redundanz

Eine Entscheidungstabelle ist redundant, wenn mehrere Regeln identische Fälle enthalten. Ein Fall ist eine Bedingungskombination (z. B. hier: "j,n,n"), die kein “don’t care” (Irrelevanzanzeiger) aufweist. In der folgenden Tabelle enthält die Regel R4 ("j,j,n" und "j,n,n") auch den Fall der Regel R3. Dabei führen beide Regeln zu denselben Aktionen, deswegen liegt Redundanz vor, andernfalls Widerspruch. Also kann die Regel R3 entfallen, ohne dass ein Informationsverlust eintritt.
| Tabellenbezeichnung | R3 | R4 |
| Bedingungen |||
| Bedingung 1 | j | j |
| Bedingung 2 | n | – |
| Bedingung 3 | n | n |
| Aktionen |||
| Aktion 1 | | |
| Aktion 2 | | |
| Aktion 3 | x | x |
| Aktion 4 | x | x |
| Aktion 5 | | |

### Widerspruchsfreiheit (Konsistenz)

Sobald eine Entscheidungstabelle Irrelevanzzeiger enthält, besteht die Möglichkeit, dass die Tabelle inkonsistent wird. Auch hierzu ein Beispiel:
| Tabellenbezeichnung | R3 | R4 |
| Bedingungen |||
| Bedingung 1 | j | j |
| Bedingung 2 | n | n |
| Bedingung 3 | - | n |
| Aktionen |||
| Aktion 1 | | |
| Aktion 2 | | |
| Aktion 3 | x | x |
| Aktion 4 | x | |
| Aktion 5 | | |
Die Regel R3 besagt, dass die Aktionen 3 und 4 ausgeführt werden sollen, sobald die Bedingung 1 erfüllt und Bedingung 2 nicht erfüllt ist. Die Regel R4 besagt hingegen, dass nur die Aktion 3 ausgeführt werden soll, wenn zusätzlich Bedingung 3 nicht erfüllt ist. Beide Regeln widersprechen sich also, die Entscheidungstabelle ist daher inkonsistent.

## Entscheidungstabellen zur Testdatenermittlung

Nachdem Entscheidungstabellen erstellt und validiert wurden, kann man sie zur Testdatengenerierung nutzen. Im Folgenden sind Strategien genannt, wie Testdaten generiert werden können und wie eine Testsuite sinnvoll eingeschränkt werden kann.
* All-Explicit Variants
* All-Variants, All-True, All-False, All-Primes
* Each-Condition/All-Conditions
* Binary Decision Diagram (BDD) Determinants
* Variable Negation (*wird nicht darauf eingegangen)
* Nonbinary Variable Domain Analysis
Bei allen Verfahren stellt sich immer die Problematik zwischen Testumfang und den Kosten für den jeweiligen Test. Die Schwierigkeit bei Entscheidungstabellen liegt darin, dass ihre Erstellung sehr aufwändig ist. Software enthält viele Bedingungen und in der Regel sind die Spezifikationen unvollständig, so dass eine Herleitung einer Entscheidungstabelle zu aufwändig ist. Hat man erstmal eine Entscheidungstabelle erstellt, lassen sich die genannten Teststrategien automatisiert anwenden.
Umfangreiche bzw. komplizierte Abläufe kann man leichter in Entscheidungstabellen erfassen, indem man mehrere zusammenhängende Entscheidungstabellen erstellt. Dazu werden Aktionen, die selbst in weitere Unteraktionen aufgegliedert werden können, als eigene Entscheidungstabellen dargestellt. Die Abzweigung aus der ersten Entscheidungstabelle erfolgt dann dort z. B. durch die Aktion „weiter in ET 2“. Es ist dabei hilfreich, die erste Entscheidungstabelle so zu gestalten, dass sie in erster Linie den direkten, schnellsten oder am häufigsten beschrittenen Ablauf darstellt, die Abzweigungen die jeweils weniger häufig beschrittenen. Dadurch ergibt sich eine Art Hierarchie der Entscheidungstabellen. Das gesamte System aus Abläufen wird dadurch übersichtlich.