Метрики сложности программных средств

 

Рассмотрим следующий фрагмент кода:

 

//умножение вектора на вектор

for(int i=0;i<g_N;i++)

{

temp+= _x[i]*x[i];

temp1+= x[i]*x[i];

x[i] = _x[i];

_x[i] = 0;

}

//непосредственно расчет максимального

//собственного числа матрицы

g_l=temp/temp1;

fl = FABS(_l-g_l);

 

Рассчитаем для него метрики размера программ, метрику Мак-Кейба и метрику комментированности. Расчеты с пояснениями приведены ниже.

 

Метрики размера программ

Измерение первичных понятий

Приведем перечень операторов (Таблица 3) и операндов (Таблица 4.) для данного фрагмента кода.

Таблица 3.

Число вхождений операторов

Оператор i f1i
for    
=    
<    
++    
(),{}    
[]    
+=    
*    
/    
FABS    
  Ŋ1=10 N1=24

 


Таблица 4.

Число вхождений операндов

Операнд i f2i
i    
     
g_N    
temp    
temp1    
x    
_x    
g_l    
_l    
  Ŋ2=9 N2=27

 

Таким образом, длина приведенного фрагмента программы составляет:

N=N1+N2=24+27=51.

Метрика длины

Теоретическая длина рассматриваемого фрагмента кода составляет:

Метрика объема

Рассчитаем реальный объем данного фрагмента кода:

Теперь рассчитаем потенциальный объем данного фрагмента кода:

Метрика уровня реализации

Метрика качества программирования равна:

Определим уровень программы с помощью аппроксимальной оценки:

Метрика интеллектуального содержания

Определим метрику интеллектуального содержания:

Определим количество элементарных решений необходимых для написания данного фрагмента кода:

Метрика Мак-Кейба

Построим граф для данного фрагмента кода.

Рисунок 4. Граф для рассматриваемого фрагмента кода

 

Вычислим цикломатическое число Мак-Кейба:

,

где е – число дуг ориентированного графа,

v – число вершин графа,

p – число компонентов связности графа.

Для графа (рис.4) е = 13, v = 11, p = 1. В таком случае число Мак-Кейба равно

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

Рассмотрим тестовые прогоны программы, соответствующие полученному цикломатическому числу Мак-Кейба:

1) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=0,01.Данные введены с клавиатуры. Вывод результата осуществляется на экран. В основной функции, вычисляющей максимальное собственное число, цикл while пройден несколько раз.

2) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=0,01. Данные введены из файла. Вывод результата осуществляется на экран. В основной функции, вычисляющей максимальное собственное число, цикл while пройден несколько раз.

3) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=10. Данные введены с клавиатуры. Вывод результата осуществляется в файл. В основной функции, вычисляющей максимальное собственное число, цикл while пройден 1 раз.

4) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=10. Данные введены из файла. Вывод результата осуществляется в файл. В основной функции, вычисляющей максимальное собственное число, цикл while пройден 1 раз.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: