вхідних умов. Слідує, правда, помітити, що через вельми велике число таких комбінацій, їх аналіз викликає істотні ускладнення. Але існує метод (метод функціональних діаграм), що дозволяє в цьому випадку систематичним образом вибрати високо ефективні тести. Корисним побічним ефектом цього методу є виявлення неповноти і суперечності у зовнішніх специфікаціях.
Функціональна діаграма - це текст на деякій формальній мові, на яку транслюється специфікація, складена на природному або напівформальному мовах. Далі буде називатися причиною окрема вхідна умова і слідством - вихідна умова або перетворення системи (тобто залишкова дія програми, викликана певною вхідною умовою або їх комбінацією). Наприклад, для програми оновлення файла зміна в ньому є перетворенням системи, а підтверджуюча ця зміна повідомлення - вихідною умовою.
Метод функціональних діаграм складається з шести основних етапів. На першому з них (необов'язковому) зовнішня специфікація великого розміру розбивається на окремі дільниці (наприклад, специфікація компілятора мови програмування розбивається на дільниці, що визначають синтаксичний контроль окремих операторів мови).
На другому етапі в специфікації виділяються причини і слідства, а на третьому - аналізується семантичний зміст специфікації і вона перетворюється в булевський граф, зв'язуючий причини і слідства і що називається функціональною діаграмою. На мал. 3 приведені базові символи для запису функціональних діаграм (кожний вузол функціональної діаграми може знаходитися в стані 1 - “існує" - або 0 - “не існує").
а) Тотожність: (а(1(>b(1) & (а(0(>b(0))))))
а b
би) Заперечення: (а(1(>b(0) & (a(0(>b(1))))))
~
а b
в) Диз'юнкція: (a(1(b(1(>з(1) & (a(0&b(>0 >з(0))))))))
а
( з
b
г) Кон'юнкція: (a(1&b(1(>з(1) & (a(0(b(0(>з(0)))))))))
а
& з
b
мал. 3
На четвертому етапі функціональна діаграма забезпечується коментарями, які задають обмеження на комбінації причин і слідств. На мал. 4 приведені знаки коментарів, задаючих ці обмеження.
а) Виключення однієї з причин:
а
Е (a(1(b(1)^~(a(1&b(1)) ( (a(0&b(0))))))))
b
б) Включення хоч би однієї причини:
а
I (a(1(b(1)&~(a(0&b(0) )))))
b
в) Існує одна і тільки одна причина:
а
ПРО (a(1(b(1)&~(a(1&b(1)&~(a(0&b(0) )))))))
b
г) Одна причина спричиняє за собою іншу:
а
R ~(a(1&b(0) ))
b
д) Одне слідство приховує в собі інше:
а
M (a(1&b(0)&(a(1&b(1) ))))
b
мал. 4
П'ятий етап - функціональна діаграма перетворюється в таблицю рішень:
вибирається слідство, яке встановлюється в 1;
знаходяться всі комбінації причин (з урахуванням обмежень),
які встановлюють вибране слідство в 1