Для иллюстрации шагов данного способа используем конкретную программу — процедуру вычисления среднего значения:
процедура сред;
1 i:= 1;
1 введено:= 0;
1 колич:= 0;
1 сум:= 0;
вып пока 2 -вел(i) <> stop и введено <=500 - 3
4 введено:= введено + 1;
если 5 -вел(i) >= мин и вел(i) <= макс - 6
7 то колич:= колич + 1;
7 сум:= сум + вел(i);
8 конец если;
8 i:= i + 1;
9 конец вып;
10 если колич > 0
11 то сред:= сум / колич;
12 иначе сред:= stop;
13 конец если;
13 конец сред;
Заметим, что процедура содержит составные условия (в заголовке цикла и условном операторе). Элементы составных условий для наглядности помещены в рамки.
Шаг 1. На основе текста программы формируется потоковый граф:
q нумеруются операторы текста (номера операторов показаны в тексте процедуры);
q производится отображение пронумерованного текста программы в узлы и вершины потокового графа (рис. 6.7).
Рис. 6.7. Потоковый граф процедуры вычисления среднего значения
Шаг 2. Определяется цикломатическая сложность потокового графа — по каждой из трех формул:
|
|
1) V(G) = 6 регионов;
2) V(G) = 17 дуг - 13 узлов + 2 = 6;
3) V(G) = 5 предикатных узлов + 1 = 6.
Шаг 3. Определяется базовое множество независимых линейных путей:
Путь 1: 1-2-10-11-13; /вел=stор, колич>0.
Путь 2: 1-2-10-12-13;/вел=stop, колич=0.
Путь 3: 1-2-3-10-11-13; /попытка обработки 501-й величины.
Путь 4: 1-2-3-4-5-8-9-2-... /вел<мин.
Путь 5: 1-2-3-4-5-6-8-9-2-... /вел>макс.
Путь 6: 1-2-3-4-5-6-7-8-9-2-... /режим нормальной обработки.