Старший архитектор программного обеспечения: Маккейб, цикломатическая сложность
Старший архитектор программного обеспечения: Маккейб, цикломатическая сложность
1. Объяснение концепции
Метод Мак Кейба — это способ расчета сложности программного обеспечения. Он в основном измеряет сложность кода путем подсчета количества циклов в графе потока управления программы (CFG). Его основным индикатором является цикломатическая сложность, которая используется для оценки сложности программы, ее тестируемости и ремонтопригодности. Конкретная формула расчета выглядит следующим образом:
в:
(E) представляет количество ребер (Edges) в графе.
(N) представляет количество узлов (Узлов) в графе.
( P ) количество, которое представляет диаграмму подключенных количество компонентов (обычно 1 для одной программы).
Вот конкретные шаги:
Нарисуйте граф потока управления: Используйте каждый базовый блок программы (часть кода, выполняемую последовательно) в качестве узла, а передачу потока управления (например, условный переход, переход из цикла) в качестве ребра для построения графа потока управления.
Подсчитайте количество узлов ( N ): статистика Общее количество узлов в графе потока управления.
Вычислите количество ребер ( E ): статистика контролирует общее количество ребер в потоковом графе.
Определим количество связных компонентов ( P ): Обычно это 1 для одной программы или количество подграфов статистики, если имеется несколько связанных подграфов.
Примените формулу для расчета цикломатической сложности: Использовать формулу ( CC = E - N + 2P ) Вычислите цикломатическую сложность.
Пример
Предположим следующий псевдокод:
Язык кода:javascript
копировать
if (condition1) {
// block A
} else {
// block B
}
// block C
while (condition2) {
// block D
}
Схема управления выглядит следующим образом:
Количество узлов ( N = 4 ) (A, B, C, D)
Количество сторон ( E = 5 )(condition1 -> A, condition1 -> B, A -> C, B -> C, C -> D, D -> C)
Количество связанных компонентов ( P = 1 )
Расчет цикломатической сложности:
[ CC = E - N + 2P = 6 - 4 + 2 = 4 ]
Это указывает на то, что цикломатическая сложность этого кода равна 4.
Чем выше цикломатическая сложность, тем выше сложность кода и потенциальная сложность обслуживания. В общем, цикломатическую сложность лучше всего поддерживать на низком уровне, чтобы улучшить читаемость и удобство сопровождения кода.
2. Название
Объединенное место должно дополнять узлы, поэтому 9 и 10 должны дополнять два узла. Обратите внимание, что начало и конец также являются узлами.
Следовательно, всего 14 ребер — 12 узлов +2 = 4, выбор Б.