logo search
Лабор

Контрольные вопросы

  1. Что такое граф? Состав графа, разновидности графов. Поясните как теория графов применяется для оценки программного продукта.

  2. Что такое цикломатическая сложность графа? Что показывает число Маккейба?

  3. Опишите алгоритм нахождения метрики "граничных значений" при оценке сложности программы.

  4. Опишите метрику Джилба, как на ваш взгляд она влияет на общую оценку программного продукта.

ЛИТЕРАТУРА

  1. Изосимов А.В., Рыжко А.Л. Метрическая оценка качества программ. – М.: Издательство МАИ, 1989.

Лабораторная работа №7

Метрики сложности потока данных

ЦЕЛЬ РАБОТЫ: оценить сложность программных продуктов, используя метрики сложности потока данных.

Следующая группа метрик сложности программ - метрики сложности потока данных, т.е. использования, конфигурации и размещения данных в программах.

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,

следовательно, .