- •Оглавление
- •Часть 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 Расчет трудоемкости разработки
- •Нормы времени на разработку пс средней сложности в зависимости от его исходного объема
- •Список литературы
2.6 Расчет сложности по Холстеду
Основу метрики Холстеда составляют четыре измеряемые характеристики программы:
η1 – число уникальных, различных операторов программы, включая символы-разделители, знаки операций, имена процедур и функций (словарь операций).
η2 – число уникальных, различных операндов программы (словарь операндов).
N1 – общее количество операторов в программе.
N2 – общее количество операндов в программе.
Опираясь на эти характеристики, получаемые непосредственно при анализе исходных текстов программ, рассчитываются следующие оценки:
словарь программы: η = η1 + η2
длину программы: N = N1+N2
объем программы: V = Nlog2 η
Для начала расчетов необходимо составить словарь операторов и операндов:
словарь операторов | |
операторы |
число операторов |
= |
23 |
<= |
3 |
>= |
1 |
< |
1 |
> |
3 |
* |
8 |
+ |
3 |
&& |
1 |
; |
33 |
if |
7 |
goto |
12 |
cin |
1 |
cout |
6 |
getch |
1 |
main |
1 |
() |
9 |
{} |
1 |
η1 = 17 |
N1 = 114 |
словарь операндов | |
операнды |
число операндов |
a |
9 |
b |
6 |
c |
3 |
d |
6 |
e |
3 |
f |
3 |
g |
3 |
h |
3 |
m |
3 |
j |
3 |
k |
3 |
l |
3 |
M2 |
2 |
M3 |
2 |
M4 |
2 |
M5 |
2 |
M6 |
2 |
M7 |
2 |
M8 |
2 |
M9 |
2 |
M10 |
3 |
M11 |
2 |
M12 |
2 |
int |
2 |
η2 = 24 |
N2= 73 |
словарь программы: η = 17+24= 41
длина программы: N = 114+73= 187
объем программы: V = 1001,9
2.7 Вывод о качестве программы
Выводы: во второй части расчетно-графической работы написана программа, соответствующая модульной структуре, построенной в первой части. Подтверждает это граф вызовов, матрица вызовов и достижимости, тестируемость. По тексту программы выполнен её статический анализ. Иерархическая сложность характеризует среднюю ширину уровня в графе вызовов, т.е. количество проектных решений, принимаемых на отдельном шаге разработки программы, будет равно 3. Структурная сложность позволяет сопоставить количество ребер в графе вызовов модулей и количество вершин. Результат сопоставления составляет 1,083. Таким образом, составляемые величины равны (13/12), что позволяет сделать вывод о достаточной простоте модульной структуры программы. Исходя из расчетов недоступными модулями можно признать М5, М6, M8, M9, М12. Значение коэффициента доступности для указанных модулей составляет 1/6. Наивысший коэффициент доступности равный 1 имеет модуль М1. В соответствии с этим при отладке программных модулей большая трудность может возникнуть в модулях М5, М6, M8, M9, М12. Наиболее простой и быстрой будет отладка модуля М1. Сложность по Маккейбу показывает количество тестовых прогонов программы, необходимых для исчерпывающего тестирования по каждому пути. Таким образом, количество тестовых прогонов будет равно 9. Исходя из сложности по Холстеду можно сделать вывод, что в программе содержатся 41 уникальных операторов и операндов, их общее число равно 187, а объем программы составляет 1001,9.