Объектно-ориентированные метрики для измерения характеристик систем



 

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

Количество строчек кода (LOC)

Метрика (Lines of Сode) для подсчета исполняемых строчек кода. Метрика позволяет измерить не пустые и не закомментированные строчки кода. Может существовать несколько вариаций: LOCf - количество строчек кода в функциях, LOCm – в модулях (при ОО проектировании – модуль = класс), или LOCp – количество строк кода во всем проекте. Эта метрика одна из первых и наиболее часто используемых, так как, опираясь на нее, можно получить грубую оценку об изменениях в проекте.

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

Цикломатическая сложность Мак-Кейба (MVG)

Топологическая мера сложности - цикломатическая мера Мак-Кейба. В ее основе лежит идея оценки сложности ПО по числу базисных путей в ее управляющем графе, т.е. таких путей, компонуя которые можно получить всевозможные пути из входа графа в выходы. Цикломатическое число l (G) орграфа G с n-вершинами, m-дугами и p-компонентами связности есть величина l (G) = m - n + p.

Существует теорема о том, что число базисных путей в орграфе равно его цикломатическому числу, увеличенному на единицу. При этом, цикломатической сложностью ПО Р с управляющим графом G называется величина n (G) = l (G) +1 = m - n + 2. Практически цикломатическая сложность ПО равна числу предикатов плюс единица, что позволяет вычислять ее без построения управляющего графа простым подсчетом предикатов. Данная мера отражает психологическую сложность ПО. К достоинствам меры относят простоту ее вычисления и повторяемость результата, а также наглядность и содержательность интерпретации. В качестве недостатков можно отметить: нечувствительность к размеру ПО, нечувствительность к изменению структуры ПО, отсутствие корреляции со структурированностью ПО, отсутствие различия между конструкциями Развилка и Цикл, отсутствие чувствительности к вложенности циклов.

Формальное определение цикломатической сложности – это подсчет линейно независимых частей в графе потока управления полученного из программы. Примерное приближение может быть получено путем подсчета ключевых слов языка и операторов. Можно показать, что это будет достаточно точное приближение во многих случаях. В случае С++ подсчет идет по следующим маркерам - 'if', 'while', 'for', 'switch', 'break', '&&', '||'. Необходимо обратить внимание, что булевские операторы добавляют дополнительные ветвления в код, при том что не все булевское выражение может быть выполнено в зависимости от составляющих частей операнда. Кроме того, обработка switch оператора достаточно проблематично: не все case могут указывать на один блок кода, следовательно, подсчет таких операторов может немного завысить итоговое значение.

 

Количество комментариев (COM)

Метрика для подсчета комментированных строчек кода(Comment Lines). Это грубая мера сравнимая с LOC показывающая объем комментариев внутри региона кода. Подобную меру достаточно сложно использовать отдельно от LOC, но при использовании отношений к LOC или MVG подобный коэффициент покажет пропорциональное отношение комментариев к исполняемому коду или его сложности. L_C = LOC/COM; M_C = MVG/COM.


Дата добавления: 2021-03-18; просмотров: 112; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!