- •Оглавление
- •Часть 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 Расчет трудоемкости разработки
- •Нормы времени на разработку пс средней сложности в зависимости от его исходного объема
- •Список литературы
Министерство образования и науки Российской Федерации
Тверской государственный технический университет
Кафедра информационных систем
Расчетно-графическая работа
по дисциплине «Стандартизация программных средств»
Задание № 10
Выполнил: %username%
группа ИСТ
Проверил: Котов С.Л.
Тверь 20xx г.
Оглавление
Часть 1.......................................................................................................3
1.1 Построение модульной структуры программы......................................3
1.2 Построение списка путей вызовов...........................................................3
1.3 Определение количественных характеристик программы....................4
1.4 Вывод о качестве программы...................................................................6
1.5 Разработка программы на основе заданной матрицы............................7
1.6 Скриншоты работы программы...............................................................9
Часть 2......................................................................................................................10
2.1 Построение матрицы вызовов и достижимости...................................10
2.2 Построение графа вызовов.....................................................................10
2.3 Определение количественных характеристик программы..................11
2.4 Расчет сложности по Маккейбу.............................................................11
2.5 Расчет тестируемости..............................................................................12
2.6 Расчет сложности по Холстеду..............................................................14
2.7 Вывод о качестве программы.................................................................16
Часть 3.....................................................................................................................17
3.1 Расчет трудоемкости разработки...........................................................17
Список литературы...............................................................................................25
Часть 1
1.1 Построение модульной структуры программы
В соответствии с представленной матрицей вызовов и достижимости, модульная структура программы будет выглядеть следующим образом:
1.2 Построение списка путей вызовов
В соответствии с построенной модульной структурой программы составляем список путей вызовов:
Р1: М1-М2-М5-М10
P2: M1-M2-M6-M11
P3: M1-M3-M7-M10
P4: M1-M3-M7-M11
P5: M1-M4-M9-M12
P6:M1-M4-M8
1.3 Определение количественных характеристик программы
Расчет иерархической сложности:
Иерархическая сложность программы рассчитывается по следующей формуле:
I=N/L,
где N – количество вершин в графе вызовов модулей;
L – количество уровней.
I = 12/4 = 3
Расчет структурной сложности:
Структурная сложность программы рассчитывается по следующей формуле:
S=D/N,
где D – количество ребер (стрелок) в графе вызовов модулей;
N – количество вершин.
S= 13/12 = 1,083
Расчет тестируемости:
Оценка тестируемости ПС– (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
Расчет энтропии вызовов
,
где Li – количество модулей (длина) i-го пути в графе вызовов;
N – количество тестовых путей.
E = -1,79