Decision table

I define a decision table as a compact table that captures a complex decision. I use it to show which actions follow which combinations of condition values. First, I list the conditions. Second, I list the possible actions. Then, I build rules that link conditions to actions. Finally, I check the table for completeness and consistency.

A decision table has four main parts. First, it has condition names. Second, it has condition values or ranges. Third, it has rule columns. Fourth, it has action rows. For example, I place a condition in the left column. Next, I show possible values across rule columns. Then, I mark which actions apply for each rule. In addition, I may use a “don’t care” mark. Thus, I simplify many similar rules into one.

I apply decision tables in requirements engineering. For example, I use them to document configuration choices and variants. In addition, I use them to support overruling decisions. Therefore, a decision maker can compare all options easily. Moreover, I use decision tables to communicate the reasoning behind a selected option. As a result, stakeholders can accept or challenge the decision with clear facts.

I also use decision tables for test design. For instance, I derive test cases from each rule. Thus, I ensure that tests cover all relevant combinations. In addition, I use decision tables to detect missing rules and conflicting rules. Consequently, I find gaps early and reduce rework later.

When I create a decision table, I follow clear steps. First, I scope the decision and identify stakeholders. Next, I list all relevant conditions and actions. Then, I limit the number of conditions. Otherwise, the table may explode in size. After that, I enumerate meaningful values for each condition. Then, I combine values into rules. Finally, I simplify rules by merging similar ones and by using “don’t care” where possible.

I use transition words to guide readers. For example, first I prepare the inputs. Then I draft the initial table. Next I validate the table with experts. After that, I document the final choice and the reasons. Therefore, the decision table becomes a stable work product. Moreover, I link the table to requirements baselines. In addition, I mark the stability, urgency, and status of related requirements. Thus, I support version and change management.

I provide tips to increase value. First, I keep conditions atomic and testable. Second, I avoid ambiguous terms. Third, I involve experts early. Fourth, I document assumptions explicitly. Fifth, I maintain a change log for the table. Consequently, the table stays useful over time.

I recognize limits. Although decision tables reduce ambiguity, they may grow large. Therefore, I consider alternatives, such as splitting the decision into variants. Alternatively, I use hierarchical tables or decision trees. Nevertheless, I prefer a decision table when I need clear, traceable, and testable mappings from conditions to actions.

In short, I use decision tables to make complex decisions explicit, repeatable, and verifiable. They help me balance effort and stakeholder needs. They also help me justify decisions and document reasons. Finally, they improve communication, testing, and change management in requirements engineering.

Scroll to Top
WordPress Cookie Plugin by Real Cookie Banner