- •2007 Г.
- •1. Формулировка задания
- •2. Разработка вычислительного алгоритма
- •3. Реализация вычислительного алгоритма
- •3.1 Язык Паскаль
- •Преобразованная программа:
- •3.2 Язык c
- •Преобразованная программа:
- •3.3 Язык Assembler
- •Преобразованная программа:
- •4. Расчёт метрических характеристик
- •4.1 Язык Паскаль
- •4.2 Язык c
- •4.3 Язык Assembler
- •4. Выводы
4.2 Язык c
Сначала произведём ручной расчёт метрических характеристик по Холстеду:
№ |
Операторы |
Количество |
|
|
Операнды |
Количество | ||
1 |
const |
3 |
|
1 |
n |
9 | ||
2 |
int |
3 |
|
2 |
8 |
1 | ||
3 |
= |
19 |
|
3 |
x |
6 | ||
4 |
typedef |
1 |
|
4 |
y |
5 | ||
5 |
float |
6 |
|
5 |
y_calc |
2 | ||
6 |
ary |
3 |
|
6 |
i |
17 | ||
7 |
void linfit1 |
1 |
|
7 |
a |
3 | ||
8 |
(), {} |
17 |
|
8 |
b |
3 | ||
9 |
for |
3 |
|
9 |
sum_x |
6 | ||
10 |
< |
3 |
|
10 |
sum_y |
6 | ||
11 |
++ |
3 |
|
11 |
sum_xy |
4 | ||
12 |
[] |
6 |
|
12 |
sum_x2 |
4 | ||
13 |
_[] |
1 |
|
13 |
sum_y2 |
3 | ||
14 |
+= |
5 |
|
14 |
xi |
6 | ||
15 |
* |
9 |
|
15 |
yi |
6 | ||
16 |
- |
4 |
|
16 |
sxy |
3 | ||
17 |
/ |
8 |
|
17 |
sxx |
4 | ||
18 |
randomize |
1 |
|
18 |
syy |
2 | ||
19 |
random |
2 |
|
19 |
0 |
8 | ||
20 |
linfit1 |
1 |
|
20 |
2000 |
2 | ||
|
Итого |
99 |
|
21 |
100 |
2 | ||
|
|
|
|
|
Итого |
102 | ||
|
|
|
|
|
|
| ||
Метрики Холстеда |
| |||||||
Число уникальных операторов (n1): |
20 |
| ||||||
Число уникальных операндов (n2): |
21 |
| ||||||
Общее число операторов (N1): |
99 |
| ||||||
Общее число операндов (N2): |
102 |
| ||||||
Словарь программы (n): |
41 |
| ||||||
Экспериментальная длина программы (Nэ): |
201,0000 |
| ||||||
Теоретическая длина программы (Nт): |
178,6763 |
| ||||||
Объём программы (V): |
1076,8776 |
| ||||||
Потенциальный объём (V*): |
11,6096 |
| ||||||
Граничный объём (V**): |
15.6844 |
| ||||||
Уровень программы (L): |
0,0108 |
| ||||||
Сложность программы (C): |
92,9343 |
| ||||||
Ожидание уровня программы (L^): |
0,0206 |
| ||||||
Интеллектуальное содержание программы (I): |
22,1710 |
| ||||||
Работа по программированию (Е): |
100078,8659 |
| ||||||
Время кодирования (T): |
10007,8866 |
| ||||||
Ожидаемое время кодирования (T^): |
5230,5483 |
| ||||||
Уровень языка программирования (Lam): |
0,1250 |
| ||||||
Уровень ошибок (В): |
0,7130 |
| ||||||
Ожидаемый уровень ошибок (В^): |
0,3590 |
|
Теперь произведём расчёт метрических характеристик по Холстеду при помощи программ Parser_C.exeиMetrics.exe.
parser_c -i c1.cpp -o c1.lxm –t
metrics -i c1.lxm -o result_c.txt -f -n 3 -s 10
Ниже приведены результаты роботы программы:
Statistics for module c1.lxm
=====================================
The number of different operators : 20
The number of different operands : 19
The total number of operators : 85
The total number of operands : 87
Dictionary ( D) : 39
Length ( N) : 172
Length estimation ( ^N) : 167.149
Volume ( V) : 909.089
Potential volume ( *V) : 11.6096
Limit volume (**V) : 15.6844
Programming level ( L) : 0.0127706
Programming level estimation ( ^L) : 0.0218391
Intellect ( I) : 19.8537
Time of programming ( T) : 7118.59
Time estimation ( ^T) : 4045.27
Programming language level (lambda) : 0.148262
Work on programming ( E) : 71185.9
Error ( B) : 0.572543
Error estimation ( ^B) : 0.30303
Table:
====================================
Operators:
| 1 | 4 | ()
| 2 | 9 | *
| 3 | 1 | +
| 4 | 2 | ++
| 5 | 5 | +=
| 6 | 12 | ,
| 7 | 4 | -
| 8 | 6 | /
| 9 | 2 | <
| 10 | 16 | =
| 11 | 4 | []
| 12 | 1 | _[]
| 13 | 4 | ary
| 14 | 3 | const
| 15 | 4 | float
| 16 | 2 | for
| 17 | 3 | int
| 18 | 1 | linfit1
| 19 | 1 | typedef
| 20 | 1 | void
====================================
Operands:
| 1 | 7 | 0
| 2 | 1 | 8
| 3 | 3 | a
| 4 | 3 | b
| 5 | 12 | i
| 6 | 8 | n
| 7 | 6 | sum_x
| 8 | 4 | sum_x2
| 9 | 4 | sum_xy
| 10 | 6 | sum_y
| 11 | 3 | sum_y2
| 12 | 4 | sxx
| 13 | 3 | sxy
| 14 | 2 | syy
| 15 | 4 | x
| 16 | 6 | xi
| 17 | 3 | y
| 18 | 2 | y_calc
| 19 | 6 | yi