лекция. Сборник лекций по МДК _Технология разработки программного обеспе. Курс лекций для специальности спо базовой подготовки
Скачать 4.41 Mb.
|
Объектно-ориентированные метрики для измерения характеристик системМетрики для измерения характеристик программных систем тесно связаны с понятиями языка, на котором он были созданы. Поскольку при разработке и сопровождении системы необходимо будет оперировать этими понятиями, метрики должны позволять измерить эти понятия. Далее в этом разделе рассматриваются метрики для объектно-ориентированных языков программирования. Описываемые метрики часто используются в статьях и книгах соответствующей тематики. Для многих из них имеются общепринятые названия и их сокращения. Поэтому для метрик будет приводится также соответствующее название и сокращение на английском языке. Количество строчек кода (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. Число классов – получателей сообщений данного класса (Fan-out, Fan-in)Число классов – получателей сообщений данного класса (Fan-out, the number of other collaborating classes irrespective of the number of references) - число дуг в простейшей модели передачи сообщений, выходящих из вершины, соответствующей классу, т.е. число классов, к методам которых есть обращения в методах данного класса. Для заданного модуля А, метрика Fan-out покажет количество классов которые используют модуль А, тогда как метрика Fan-in покажет количество модулей которое использует модуль А. Определение Fan-in - число вершин, из которых входят дуги в данную вершину в простейшей модели взаимодействия компонентов |