Метрики

ASM Visual ››
Parent Previous

Очень важной и полезной особенностью среды ASM VISUAL является возможность рассчёта метрик исходного кода.



Наряду с простейшими метриками, базирующимися на определении количественных характеристик, связанных с размером программы и используемых для прогнозирования трудозатрат и сроков разработки промежуточных этапов в IDE реализован расчёт метрик сложности потоков управления программ.



Давайте рассмотрим их подробнее.


Перед тем как непосредственно описывать сами метрики, для лучшего понимания будет описан управляющий граф программы и способ его построения.


Пусть представлена некоторая программа. Для данной программы строится ориентированный граф, содержащий лишь один вход и один выход, при этом вершины графа соотносят с теми участками кода программы, в которых имеются лишь последовательные вычисления, и отсутствуют операторы ветвления и цикла, а дуги соотносят с переходами от блока к блоку и ветвями выполнения программы. Условие при построении данного графа: каждая вершина достижима из начальной, и конечная вершина достижима из любой другой вершины


Метрика 'Подсчет точек пересечения'


Поток управления программы считается более сложным, если возникают точки пересечения дуг передачи управления.


В графе программы, где каждому оператору соответствует вершина, т. е. не исключены линейные участки, при передаче управления от вершины a к b номер оператора a равен min(a,b), а номер оператора b - max(a,b). Точка пересечения дуг появляется, если


min(a,b) < min(p,q) < max(a,b) & max(p,q) > max(a,b) |

min(a,b) < max(p,q) < max(a,b) & min(p,q) < min(a,b).


Иными словами, точка пересечения дуг возникает в случае выхода управления за пределы пары вершин (a,b).


Поток управления программы считается более сложным, если возникают точки пересечения дуг передачи управления. Количество точек пересечения дуг графа программы дает характеристику не структурированности программы.



Метрика Джилба


Логическая сложность программы определяется как насыщенность программы выражениями типа IF-THEN-ELSE. При этом вводятся две характеристики: CL - абсолютная сложность программы, характеризующаяся количеством операторов условия; cl - относительная сложность программы, характеризующаяся насыщенностью программы операторами условия, т. е. cl определяется как отношение CL к общему числу операторов:


Метрика Вудворда


Узловая мера (число узлов передач управления)


На полях листинга рисуются линии передачи управления от одного оператора к другому (предполагается, что один оператор занимает ровно одну строчку). Число пересечений этих линий даёт значений метрики или характеристику не структурированности программы.


Применение метрик


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


Типичный сценарий использования метрик при разработке имодификации программного обеспечения таков:

  1. Для уже существующей программы в соответствии с принятыми для ее оценки метриками вычисляется набор мер, характеризующих ее сложность, трудоемкость разработки и анализа, стилистику, надежность и т.д. в соответствии с теми стандартами, которые приняты в данной компании или организации. Предполагается, что уже существующий код соответствует эталонным значениям используемого набора мер.
  2. После внесения изменений в программу оценка ее метрических характеристик выполняется повторно. Новые значения мер сравниваются как с эталонными значениями, так и с характеристиками программы до модификации. Таким образом, не только выполняется проверка нового программного кода на соответствие стандартам разработчика, но и оценивается влияние изменений на ранее достигнутые показатели (сложности, надежности, понятности и т.д.) программного продукта.
  3. Принимается решение о возможности и целесообразности включения нового кода в проект. Оцениваются трудозатраты и персональный вклад разработчиков на внесение изменений в программу.


Конечно, при разработке программ применение любых метрик (особенно количественных) должно применятся с осторжностью и осмотрительностью и носит скорее рекомендательный характер.