Очень важной и полезной особенностью среды 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 к общему числу операторов:
Метрика Вудворда
Узловая мера (число узлов передач управления)
На полях листинга рисуются линии передачи управления от одного оператора к другому (предполагается, что один оператор занимает ровно одну строчку). Число пересечений этих линий даёт значений метрики или характеристику не структурированности программы.
Применение метрик
Применение метрик программного кода позволяет разработчикам и руководителям проектов оценивать различные свойства создаваемого или уже существующего программного обеспечения, прогнозировать объем работ, давать количественную характеристику тех или иных проектных решений, качества разработанных систем и их частей, характеризовать сложность или надежность программного обеспечения.
Типичный сценарий использования метрик при разработке имодификации программного обеспечения таков:
Конечно, при разработке программ применение любых метрик (особенно количественных) должно применятся с осторжностью и осмотрительностью и носит скорее рекомендательный характер.