Таблицы решений — это краткое визуальное представление для указания того, какие действия следует выполнять в зависимости от заданных условий. Таблица решений — это термин, используемый для таблицы управления или таблицы переходов состояний в области моделирования бизнес-процессов ; они обычно форматируются как транспонирование способа, которым они форматируются в программной инженерии .
Каждое решение соответствует переменной, отношению или предикату, возможные значения которых перечислены среди альтернатив условий. Каждое действие — это процедура или операция для выполнения, а записи указывают, должно ли (или в каком порядке) выполняться действие для набора альтернатив условий, которым соответствует запись.
Чтобы сделать их более краткими, многие таблицы решений включают в свои альтернативы условий символ « неважно» . Это может быть дефис [1] [2] [3] или пробел, [4] хотя использование пробела не рекомендуется, поскольку это может просто указывать на то, что таблица решений не была завершена. [ необходима цитата ] Одно из применений таблиц решений — выявить условия, при которых определенные входные факторы не имеют значения для действий, которые необходимо предпринять, что позволяет пропустить эти входные тесты и тем самым оптимизировать процедуры принятия решений. [5]
Помимо базовой структуры из четырех квадрантов, таблицы решений значительно различаются по способу представления альтернатив условий и записей действий. [6] [7] Некоторые таблицы решений используют простые значения «истина/ложь» для представления альтернатив условию (аналогично if-then-else), другие таблицы могут использовать пронумерованные альтернативы (аналогично switch-case), а некоторые таблицы даже используют нечеткую логику или вероятностные представления для альтернатив условий. [8] Аналогичным образом записи действий могут просто представлять, должно ли быть выполнено действие (отметьте действия для выполнения), или в более сложных таблицах решений — последовательность действий для выполнения (пронумеруйте действия для выполнения).
Таблица решений считается сбалансированной [4] или полной [3] , если она включает в себя все возможные комбинации входных переменных. Другими словами, сбалансированные таблицы решений предписывают действие в каждой ситуации, где предоставляются входные переменные. [4]
Таблица решений с ограниченным входом является самой простой для описания. Альтернативы условий — это простые булевы значения, а записи действий — это галочки, представляющие, какие из действий в данном столбце должны быть выполнены.
Следующая сбалансированная таблица решений представляет собой пример того, как компания технической поддержки составляет таблицу решений, позволяющую сотрудникам технической поддержки эффективно диагностировать проблемы с принтерами на основе симптомов, описанных им по телефону клиентами.
Это всего лишь простой пример, и он не обязательно соответствует реальности устранения неполадок принтера. Тем не менее, он демонстрирует, как таблицы решений могут масштабироваться для нескольких условий со многими возможностями.
Таблицы решений, особенно в сочетании с использованием предметно-ориентированного языка , позволяют разработчикам и экспертам по политике работать с одной и той же информацией — самими таблицами решений.
Инструменты для преобразования вложенных операторов if из традиционных языков программирования в таблицы решений также могут использоваться в качестве инструмента отладки. [9] [10]
Таблицы решений оказались более простыми для понимания и анализа, чем код, и широко и успешно использовались для создания спецификаций для сложных систем. [11]
В 1960-х и 1970-х годах для бизнес-программирования был популярен ряд языков, «основанных на таблицах решений», таких как Filetab .
Таблицы решений могут быть, и часто так и есть, встроены в компьютерные программы и используются для «управления» логикой программы. Простым примером может быть таблица поиска, содержащая диапазон возможных входных значений и указатель функции на раздел кода для обработки этого ввода.
Несколько условий могут быть закодированы аналогичным образом, чтобы инкапсулировать всю логику программы в форме «исполняемой» таблицы решений или таблицы управления . На практике может быть несколько таких таблиц, работающих на разных уровнях и часто связанных друг с другом (либо указателями, либо значением индекса).