Метрики сложности потока данных
ЦЕЛЬ РАБОТЫ: оценить сложность программных продуктов, используя метрики сложности потока данных.
Следующая группа метрик сложности программ - метрики сложности потока данных, т.е. использования, конфигурации и размещения данных в программах.
1. Метрика " модуль – глобальная переменная" Метрика " модуль – глобальная переменная". Обозначается как (p, r), где p - модуль, имеющий доступ к глобальной переменной r. В зависимости от наличия в программе реального обращения к переменной r формируются два типа пар " модуль – глобальная переменная": фактические и возможные. Возможное обращение к r с помощью p показывает, что область существования r включает в себя p. Характеристика Aup – количество переменных, показывает, сколько раз модули Up действительно получали доступ к глобальным переменным, а число PUp сколько раз они могли бы получить доступ, т.е. Pup – количество глобальных переменных, к которым мог бы получить доступ модуль. Отношение числа фактических обращений к возможным определяется . (1) Эта формула показывает приближенную вероятность ссылки произвольного модуля на произвольную глобальную переменную. Очевидно, чем выше эта вероятность, тем выше вероятность " несанкционированного" изменения какой-либо характеристики, что может существенно осложнить работы, связанные с модификацией программы. Пример: пусть в программе имеются 3 глобальные переменные (x, y, z) и 3 подпрограммы. Если предположить, что каждая подпрограмма имеет доступ к каждой из переменных, то получим девять возможных пар Pup = 3перем · 3подпрог = 9. Далее пусть первая подпрограмма обращается к одной переменной (x), вторая – к двум (y, z), а третья – не обращается ни к одной переменной, тогда. Aup = 1 + 2 + 0 = 3, следовательно, .
2. " спен" Следующей метрикой сложности потока данных является " спен". Определение спена основывается на локализации обращений к данным внутри каждой программной секции. «Спен» - это число утверждений, содержащих данный идентификатор между его первым и последним появлением в тексте. Идентификатор, появившийся n раз, имеет спен равный n-1. Усреднённый по всем идентификаторам, «Спен» даёт сложность программы. Пример: Пусть у нас имеется 7 идентификаторов. 2 - «Спен» 12, 2 - «Спен» 41 и 3 - «Спен» 80. (2) Следовательно, при построении трассы программы необходимо будет ввести в тело программы, по крайней мере, 50 контролирующих утверждений, что усложнит тестирование и отладку.
|