Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод.рекомендации по разработке и стандартизац...doc
Скачиваний:
27
Добавлен:
27.11.2019
Размер:
310.78 Кб
Скачать

5. Цикломатическое число Мак-Кейба

Для вычисления цикломатического числа Мак-Кейба Z(G) применяется формула Z(G) = |E| -|V| +2p,

где |E| - число дуг графа G, |V| - число вершин, а p - число компонентов связности графа.

Число компонентов связности графа можно оценить как количество дуг, которые необходимо добавить для преобразования графа в сильносвязный. Cильносвязным называется граф, любые две вершины которого взаимно достижимы. Для графов корректных программ, т. е. графов, не имеющих недостижимых от точки входа участков и "висячих" точек входа и выхода, сильносвязный граф, как правило, получается путем замыкания одной дугой вершины, обозначающей конец программы, на вершину, обозначающую точку входа в эту программу.

Для программы представленной на рисунках Z(G) = 20 - 14+2 = 8

По сути Z(G) определяет число линейно независимых контуров в сильносвязном графе. Иначе говоря, цикломатическое число Мак-Кейба показывает требуемое количество проходов для покрытия всех контуров сильносвязного графа или количество тестовых прогонов программы, необходимых для исчерпывающего тестирования по критерию "работает каждая ветвь". Цикломатическое число зависит только от количества предикатов (точек ветвления графа), сложность проверяемых условий при этом не учитывается.

6. Минимальное покрытие дуг графа

Структурная сложность программного модуля может быть определена путем расчета количества маршрутов в программе и сложности каждого маршрута. Эти показатели в совокупности определяют сложность набора тестов для проверки программных модулей. Таким образом сложность программного модуля оценивается суммарным количеством вершин с проверкой условий, проходимым по всем маршрутам.

Первый критерий (простейший) состоит в выборе минимального множества маршрутов программы, охватывающих все последовательности передач управления и учитывающих исполнение программы по каждому направлению при ветвлении. По этому критерию граф программы по управлению должен быть покрыт минимальным набором путей, проходящих через каждый оператор ветвления по каждой дуге хотя бы один раз. При этом в процессе тестирования гарантируется выполнение всех переходов между операторами программы и каждого оператора не менее одного раза.

Однако минимальное число маршрутов, выделяемых по первому критерию, не обеспечивает исполнения каждого оператора при различных сочетаниях предшествующих условий и последовательностей операторов, образующих весь набор маршрутов, проходящих через данное ветвление передачи управления.

В приведенном примере управляющего графа для минимального покрытия дуг достаточно построить следующие 4 маршрута (выделены вершины с проверкой условий):

М1 1 - 2 - 14

М2 1 - 3 - 4 - 6 - 8 - 6 - 8 – 14

М3 1 - 3 - 5 - 7 - 9 - 10 - 11 - 12 - 13 – 14

М4 1 - 3 - 4 - 5 - 7 - 9 - 10 - 9 - 10 - 11 - 7 - 9 - 10 - 11 - 12 - 14

Структурная сложность по критерию минимального покрытия дуг вычисляется следующим образом

Smin = 1 + 5 + 5 + 9 = 20.

7. Базовые маршруты на основе цикломатического числа

Оценка программы выполняется аналогично предыдущему случаю, только маршруты в графе выбираются по другим способом. В данном случае требуется проверка каждого линейно-независимого цикла в максимально связном графе программы. Это соответствует однократной проверке каждого линейно-независимого ациклического маршрута и каждого линейно-независимого цикла, в совокупности образующих базовые маршруты. Линейно-независимым называется такой маршрут (цикл), который хотя бы одной вершиной или дугой отличается от других маршрутов (циклов). Число базовых маршрутов равно цикломатическому числу Мак-Кейба.

В частности для структурированных программ цикломатическое число на 1 больше количества вершин, в которых происходит ветвление. Структурированными в данном случае считаются программы, которые не имеют циклов с несколькими выходами, а также не имеют переходов внутрь циклов или условных операторов.

Для приведенного примера управляющего графа можно построить следующие базовые маршруты на основе цикломатического числа (выделены вершины с проверкой условий):

М1: 6 - 8;

М2: 9 - 10;

М3: 7 - 9 - 10 - 11;

М4: 1 - 2 - 14;

М5: 1 - 3 - 4 - 6 - 8 - 14;

М6: 1 - 3 - 5 - 7 - 9 - 10 - 11 - 12 - 14;

М7: 1 - 3 - 4 - 5 - 7 - 9 - 10 - 11 - 12 - 13 - 14;

М8: 1 - 3 - 4 - 5 - 7 - 9 - 10 - 11 - 12 - 14;

Структурная сложность по критерию базовых маршрутов на основе цикломатического числа вычисляется следующим образом

Smin = 1 + 1 + 2 + 1 + 4 + 5 + 6 + 6 = 26.