Метрики сложности потока управления программ
Вторая наиболее представительная группа оценок сложности программ – это
метрики сложности потока управления программ. Типичными представителями этой
группы является метрика МакКейба. Как правило, с ее помощью оперируют либо
плотностью управляющих переходов внутри программ, либо взаимосвязями этих
переходов. И в том и в другом случае стало традиционным представление программ в виде
управляющего ориентированного графа
G = {V, E}
где V – вершины, соответствующие операторам; Е – дуги, соответствующие переходам.
Метрика МакКейба.
Впервые графическое представление программ было предложено Т. Дж. МакКейбом
[
4
]. В ее основе лежит идея оценки сложности ПО по числу базисных путей в управляющем
графе, т.е. таких путей, компонуя которые можно получить всевозможные пути из входа
графа в выходы. Основной метрикой сложности МакКейб предлагает считать
цикломатическую сложность графа программы, или, как ее еще называют,
цикломатическое число МакКейба, характеризующее трудоемкость тестирования
программы.
Для вычисления цикломатического числа МакКейба Z(G) применяется формула
Z(G) = m – n + 2r,
(6.2)
где m – количество дуг (ребер) ориентированного графа G; n – количество вершин; r –
количество компонент связности графа.
Количество компонент связности графа можно рассматривать как количество дуг,
которые необходимо добавить для преобразования графа в сильносвязный. Сильносвязным
называется граф, любые две вершины которого взаимно достижимы. Для графов
корректных программ, т.е. графов, не имеющих недостижимых от точки входа участков и
«висячих» точек входа и выхода, сильносвязный граф, как правило, получается путем
замыкания дугой вершины, обозначающей конец программы, на вершину, обозначающую
точку входа в эту программу. По сути, Z(G) определяет количество линейно независимых
контуров в сильносвязном графе. Иначе говоря, цикломатическое число МакКейба
показывает требуемое количество проходов для покрытия всех контуров сильносвязного
графа или количество тестовых прогонов программы, необходимых для исчерпывающего
тестирования по критерию «работает каждая ветвь».
К достоинствам меры относят простоту ее вычисления и повторяемость результата,
а также наглядность и содержательность интерпретации. В качестве недостатков можно
отметить: нечувствительность к размеру ПО, нечувствительность к изменению структуры
ПО, отсутствие корреляции со структурированностью ПО, отсутствие различия между
конструкциями «развилка» и «цикл», отсутствие чувствительности к вложенности циклов.
Недостатки цикломатической меры привело к появлению ее модификаций, а также
принципиально иных мер сложности.
4
Watson, Arthur Н. Structured Testing: ATesting Methodology Using Cyclomatic Complexity Metric [Электронный
ресурс] / Arthur H. Watson, Thomas J. McCabe // NIST Special Publication 500-235.—1996. — URL:
http://hissa.nist.gov/HHRFdata/ Artifacts/ITLdoc/235/title.htm.
|