Метрики сложности программ.
При оценке сложности программ, как правило, выделяют три основные
группы метрик:
- метрики размера программ
- метрики сложности потока управления программ
- метрики сложности потока данных
Метрики размера программ.
Оценки этой группы наиболее просты и, очевидно, поэтому получили широкое распространение. Традиционной характеристикой размера программ является количество строк исходного текста. Под строкой понимается любой оператор программы, поскольку именно оператор, а не отдельно взятая строка является тем интеллектуальным "квантом" программы, опираясь на который можно строить метрики сложности ее создания.
Непосредственное измерение размера программы, несмотря на свою простоту, дает хорошие результаты. Конечно, оценка размера программы недостаточна для принятия решения о ее сложности, но вполне применима для классификации программ, существенно различающихся объемами. При уменьшении различий в объеме программ на первый план выдвигаются оценки других факторов, оказывающих влияние на сложность. Таким образом, оценка размера программы есть оценка по номинальной шкале, на основе которой определяются только категории программ без уточнения оценки для каждой категории.
Одной из наиболее распространенных оценок размера программ является метрикаХолстеда.
МЕТРИКИ ХОЛСТЕДА.
Основу метрики Холстеда составляют четыре измеряемых характеристики программы:
n1 - число уникальных операторов программы, включая символы-разделители, имена процедур и знаки операций (словарь операторов);
n2 - число уникальных операндов программы (словарь операндов);
N1 - общее число операторов в программе;
N2 - общее число операндов в программе.
Опираясь на эти характеристики, получаемые непосредственно при анализе исходных текстов программ, М. Холстед вводит следующие оценки:
словарь программы: n =n1+n2,
длина программы: N=N1+N2 (1)
объем программы: V=N*log2(n) (бит) (2)
Метрики сложности потока управления программ.
Вторая группа оценок сложности программ - метрики сложности потока управления программ. Как правило, с помощью этих оценок оперируют либо плотностью управляющих переходов внутри программ, либо взаимосвязями этих переходов.