 
        
        Метрология
.docx
Цель работы: Изучение метрик оценки качества программного обеспечения.
Функция на языке MATLAB
Входные параметры:
n-длинна формируемого массива случайных чисел
nac-начало диапазона случайных чисел
kon-конец диапазона случайных чисел
k_med-количество элементов массива для подсчёта медианы
function [X] = RandomSumMediana(n,nac,kon,k_med)
if(n>0 & nac<kon & k_med>0)
for i=1:n
A(i)= round(nac + (kon-nac)*rand);
B(i)= round(nac + (kon-nac)*rand);
end
k=n;
for i=1:n
if(A(i)<0 & B(k)<0)
AB(i)=A(i)*B(k);
else
AB(i)=A(i)+B(k);
end
k=k-1;
end
j=0;
x_k=0;
for i=1:n
j=j+1;
BUF(j)=AB(i);
if(j==k_med | i==n )
x_k=x_k+1;
X(x_k)=median(BUF);
clear BUF;
j=0;
end
end
else
error('Параметры заданы неверно');
end
end

Рисунок 1. Результаты работы профилировщика


Рисунок 2. Результаты работы профилировщика – строки кода, на выполнение которых затрачено наибольшее время выполнения, а так же покрытие программы

Рисунок 3. Результаты работы профилировщика – строки кода, на выполнение которых затрачено наибольшее время выполнения
Блок-схема алгоритма:


Граф потока данных и линейно-независимые маршруты прохождения программы:

Таблица – перечень операторов и операндов, использующихся в программе
| № | Оператор | Операнд | Количество | 
| 1 | = | 
 | 16 | 
| 2 | + | 
 | 5 | 
| 3 | - | 
 | 3 | 
| 4 | : | 
 | 3 | 
| 5 | ; | 
 | 15 | 
| 6 | for | 
 | 3 | 
| 7 | < | 
 | 3 | 
| 8 | > | 
 | 2 | 
| 9 | () | 
 | 22 | 
| 10 | round | 
 | 2 | 
| 11 | rand | 
 | 2 | 
| 12 | median | 
 | 1 | 
| 13 | * | 
 | 3 | 
| 14 | clear | 
 | 1 | 
| 15 | error | 
 | 1 | 
| 16 | if | 
 | 3 | 
| 17 | & | 
 | 3 | 
| 18 | | | 
 | 1 | 
| 19 | == | 
 | 2 | 
| 20 | ' | 
 | 1 | 
| 21 | 
 | n | 5 | 
| 22 | 
 | nac | 3 | 
| 23 | 
 | kon | 3 | 
| 24 | 
 | k_med | 1 | 
| 25 | 
 | A | 3 | 
| 26 | 
 | B | 3 | 
| 27 | 
 | k | 5 | 
| 28 | 
 | AB | 3 | 
| 29 | 
 | BUF | 3 | 
| 30 | 
 | i | 12 | 
| 31 | 
 | j | 5 | 
| 32 | 
 | x_k | 4 | 
| 33 | 
 | X | 1 | 
| 34 | 
 | 0 | 3 | 
Оценивание структурной сложности программного модуля по метрике Маккейба:
Для определения цикломатического числа Z исходного графа программы используется полное количество его вершин n, количество связывающих его дуг Y и число связных компонент Q:
Z = Y - n + Q
Z = 25 – 19 + 1 = 7
Оценивание логической сложности программного модуля по метрике Джилба:
В приведенной программе 3 условные конструкции типа IF-THEN-ELSE, это число характеризует абсолютную сложность CL программы по метрике Джилба. Общее число операторов в программе составляет 92 оператора, относительная сложность программы равна cl = CL / 92 = 3 / 92 = 0.033.
Оценивание сложности программного модуля по метрике Холстеда:
n1 = 20 (число уникальных операторов программы, включая символы-разделители,
имена процедур и знаки операций - словарь операторов);
n2 = 14 (число уникальных операндов программы - словарь операндов);
N1 = 92 (общее число операторов в программе);
N2 = 54 (общее число операндов в программе);
1) полный словарь n = n1 + n2 = 20 + 14 = 34 определяет, что для описания данного алгоритма на данном языке программирования требуется 34 операторов и операндов;
2) поскольку в данном примере представлена программа небольшого объема, длина программы определяется прямым подсчетом, косвенная оценка не производится. При определении полной длины программы Nс = N1 + N2 = 92 + 54 = 146 показана связь между длиной программы и размером словаря, то есть из словаря n, который составляет 34 операндов и операторов составлена программа, полная длина N которой составляет 146 операндов и операторов;
3) объем текста программы V = Nc*log2n = 146*log234 = 743 бита
4) поскольку обычно потенциальный объем неизвестен, для определения качества программирования производится косвенная оценка L = 2*n2 / n1*N2 = 2*14/20*54 = 0,026. Так как L = 0,026 < 1, уровень качества программы достаточно высокий, так как общее количество операндов N2 достаточно близко к минимально необходимому объему словаря n2;
5) уровень языка программирования = L^2*V = 0,5 низкий (по сравнению с уровнем языка программирования Ассемблер, для которого λ = 0,88);
6) оценка интеллектуальных усилий на создание программы объемом V = 724 бита E=V/L=28659 характеризует среднее количество различаемых элементов, которые составляют программу и которые необходимо разработать;
7) трудоемкость разработки программы может быть определена по формуле:
Nc^2 * log2n) / 4S,
где S – интенсивность анализа и принятия решения по каждой компоненте, 5 < S < 20. Пусть S = 10, тогда 146^2 * log232) / 4*10 = 817 секунд.
	
