- •Оглавление
- •Часть 1.......................................................................................................3
- •Часть 2......................................................................................................................10
- •Часть 3.....................................................................................................................17
- •1.4 Вывод о качестве программы
- •Int main()
- •1.6 Скриншоты работы программы
- •Часть 2
- •2.1 Построение матрицы вызовов и достижимости
- •2.2 Построение графа вызовов
- •2.3 Определение количественных характеристик программы
- •2.4 Расчет сложности по Маккейбу
- •2.5 Расчет тестируемости
- •2.6 Расчет сложности по Холстеду
- •2.7 Вывод о качестве программы
- •Часть 3
- •3.1 Расчет трудоемкости разработки
- •Нормы времени на разработку пс средней сложности в зависимости от его исходного объема
- •Список литературы
1.6 Скриншоты работы программы
При а=5 конечное значение 300, выполенение действий завершилось на модуле 10
При а=500 конечное значение 2080, выполенение действий завершилось на модуле 7, результат вывел модуль 10
Часть 2
2.1 Построение матрицы вызовов и достижимости
|
вызываемые программные модули | |||||||||||
М1 |
М2 |
М3 |
М4 |
М5 |
М6 |
М7 |
М8 |
М9 |
М10 |
М11 |
М12 | |
M1 |
|
+ |
+ |
+ |
● |
● |
● |
● |
● |
● |
● |
● |
M2 |
|
|
|
|
+ |
+ |
|
|
|
|
|
|
M3 |
|
|
|
|
|
|
+ |
|
|
● |
● |
|
M4 |
|
|
|
|
|
|
|
+ |
+ |
|
|
● |
M5 |
|
|
|
|
|
|
|
|
|
+ |
|
|
M6 |
|
|
|
|
|
|
|
|
|
|
+ |
|
M7 |
|
|
|
|
|
|
|
|
|
|
+ |
|
M8 |
|
|
|
|
|
|
|
|
|
+ |
|
|
M9 |
|
|
|
|
|
|
|
|
|
|
|
+ |
M10 |
|
|
|
|
|
|
|
|
|
|
|
|
M11 |
|
|
|
|
|
|
|
|
|
|
|
|
M12 |
|
|
|
|
|
|
|
|
|
|
|
|
2.2 Построение графа вызовов
2.3 Определение количественных характеристик программы
Расчет иерархической сложности:
Иерархическая сложность графа рассчитывается по следующей формуле:
I=N/L,
где N – количество вершин в графе вызовов модулей;
L – количество уровней.
I = 12/4 = 3
Расчет структурной сложности:
Структурная сложность графа рассчитывается по следующей формуле:
S=D/N,
где D – количество ребер (стрелок) в графе вызовов модулей;
N – количество вершин.
S= 13/12 = 1,083
2.4 Расчет сложности по Маккейбу
Для вычисления цикломатического числа Маккейба Z(G) применяется формула:
Z(G) = e-v+2p
где e – число дуг (стрелок) ориентированного графа G; v – число вершин (модулей); 2p – число компонентов связности графа.
Число компонентов связности графа можно рассматривать как количество дуг (стрелок), которые необходимо добавить для преобразования графа в сильносвязнный. Сильносвязным называется граф, любые две вершины которого взаимно достижимы.
Для начала расчетов необходимо преобразовать граф в сильносвязанный, добавив дуги от М10, М11, М8, М12 к М1, поскольку данные модули не имеют обратной связи с М1:
Z(G) = 13-12+2*4=9
2.5 Расчет тестируемости
Оценка тестируемости ПС– (T) может быть проведена с использованием формул:
Nв
Т=[(1/Nв) · (∑1/Pi)]-1 ,
i=1
где NВ – количество путей вызовов в графе вызовов модулей;
Pi – тестируемость i-го пути вызовов.
k
Pi=[∑1/A( Mj )]-1,
j=1
где k – количество модулей в пути вызовов;
А (Мj) – доступность модуля Мj, принадлежащего пути Рi,.
n
А (Мj)=∑ А (Мx)/ C (Мx),
x=1
где А (Мx) – доступность x-го модуля, вызывающего Мj;
C (Мx) – количество всех модулей, которые вызывает Мx;
n – количество модулей, которые вызывают Mj;
А (М)=1, если модуль М является самым верхним (головным) модулем.
Расчет доступности:
A (M1) = 1 (главный модуль);
Модули 2-4 вызываются только модулем 1 и имеют одинаковое число входящих вызовов. Следовательно, коэффициенты их доступности равны.
A (M2) = A (M3) = A(M4)= 1/3
А(М7)= А(М10)= А(М11) = 1/3
Модули 5, 6, 8, 9 вызываются модулями (2 и 4) с равными коэффициентами доступности и имеют одинаковое число входящих вызовов. Следовательно, коэффициенты их доступности равны.
A(M5)= A(M6)= A(M8) = A(M9) = 1/6
А(М12)= 1/6
Расчет тестируемости i-го пути вызова
P1: (1:1+1:(1/3)+1:(1/6)+1:(1/3))-1 =1/13
P2: (1:1+1:(1/3)+1:(1/6)+1:(1/3))-1 =1/13
P3: (1:1+1:(1/3)+1:(1/3)+1:(1/3))-1 =1/10
P4: (1:1+1:(1/3)+1:(1/3)+1:(1/3))-1 =1/10
P5: (1:1+1:(1/3)+1:(1/6)+1:(1/3))-1 =1/13
P6: (1:1+1:(1/3)+1:(1/6))-1 =1/10
Расчет оценки тестируемости
Т = [1/6 * (13 + 13+ 10 + 10 + 13 + 10 )]-1 = 0,09