Скорректированная сложность вершин графа программы



Вершина графа программы Скорректированная сложность вершины графа Вершина графа программы Скорректированная сложность вершины графа
1) 10 1. 1
2) 2 2. 1
3) 3 3. 1
4) 3 4. 1
5) 1 5. 1
6) 1 6. 0

ЗАДАНИЕ

Для одной из своих программ:

Рассчитать метрики сложности потоков управления

a. цикломатическое число Маккейба Z(G);

b. Метрики Джилба (CL);

c. относительную сложность (S0),

предварительно представив ее в виде управляющего ориентированного графа.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

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

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

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

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

ЛИТЕРАТУРА

Изосимов А.В., Рыжко А.Л. Метрическая оценка качества программ. – М.: Издательство МАИ, 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,

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

 

2. "спен"

Следующей метрикой сложности потока данных является "спен".

Определение спена основывается на локализации обращений к данным внутри каждой программной секции.

«Спен» - это число утверждений, содержащих данный идентификатор между его первым и последним появлением в тексте.

Идентификатор, появившийся n раз, имеет спен равный n-1.

Усреднённый по всем идентификаторам, «Спен» даёт сложность программы.

Пример: Пусть у нас имеется 7 идентификаторов.

2 - «Спен» 12, 2 - «Спен» 41 и 3 - «Спен» 80.

                                  (2)

Следовательно, при построении трассы программы необходимо будет ввести в тело программы, по крайней мере, 50 контролирующих утверждений, что усложнит тестирование и отладку.

 

Метрика Чепина.

 

Другой метрикой сложности потока данных является метрика Чепина.

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

Все множество переменных, составляющих список ввода-вывода разбивается на 4 группы:

1. множество Р – это переменные вводимые для расчётов и обеспечения вывода. (Примером может служить используемая в программах лексического анализатора переменная, содержащая строку исходного текста программы, т.е. сама переменная не модифицируется, а только содержит исходную информацию).

2. множество М – модифицируемые или создаваемые внутри программы переменные.

3. множество С – переменные, участвующие в управлении работой программного модуля (управляющие переменные).

4. множество Т – переменные, не используемые в данной программе (паразитные переменные).

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

Далее вводится значение метрики Чепина:

                   Q = а1P + а2М + а3С + а4Т,                            (3)

где α1, α2, α3, α4 – весовые коэффициенты, используемые для отражения различного влияния на сложность программы каждой функциональной группы.

По мнению автора метрики: α1 = 1, α2 = 2, α3 = 3, α4 = 0,5.

Таким образом наибольший вес, равный трем, имеет функциональная группа С, т.к. она влияет на поток управления. Весовой коэффициент группы Т не равен нулю, поскольку "паразитные" переменные не увеличивают сложность программы, но затрудняют ее понимание.

С учетом весовых коэффициентов выражение (3) примет вид

Q = P + 2М + 3С +0,5Т               (4)

Следует отметить, что рассмотренные метрики сложности программ основаны на анализе исходных текстов программ и графов, что обеспечивает единый подход к автоматизации их расчета

 

ЗАДАНИЕ

 

Для одной из своих программ рассчитать:

1. Отношение числа фактических переменных к возможным RUp;

2. Метрики Чепина, (T,P,С, M, Q);

3. Спен (Scp).

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

Что называется метриками сложности? Что такое "Спен"?

Что показывает метрика "Модуль – глобальная переменная", опишите принцип нахождения этой метрики.

Как построить поцесс тестирования и отладки на основе метода "Спена"?

Как оценить информационную прочность отдельного программного модуля? Метрика Чепина.

ЛИТЕРАТУРА

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

 

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


Дата добавления: 2020-04-08; просмотров: 307; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!