4. Расчёт метрических характеристик
Для языка Паскаль можно воспользоваться программами автоматизации расчёта метрических характеристик по Холстеду Parser_Pas.exeиMetrics.exe. Ниже приведены результаты работы программыMetrics.exe:
Operators: |
Operands: |
| 1 | 5 | () или begin..end | 2 | 5 | * | 3 | 4 | + | 4 | 3 | - | 5 | 4 | / | 6 | 10 | = | 7 | 6 | [] | 8 | 1 | for | 9 | 1 | program | 10 | 1 | writeln
|
| 1 | 1 | ', b=' | 2 | 1 | 'Approximated with y=ax+b where a = ' | 3 | 4 | 0 | 4 | 1 | 1 | 5 | 1 | cfit1A | 6 | 6 | k | 7 | 4 | n | 8 | 3 | resa | 9 | 2 | resb | 10 | 7 | sumx | 11 | 4 | sumx2 | 12 | 4 | sumxy | 13 | 5 | sumy | 14 | 4 | x | 15 | 2 | y
|
Summary:
=====================================
The number of different operators : 10
The number of different operands : 15
The total number of operators : 40
The total number of operands : 49
Dictionary ( D) : 25
Length ( N) : 89
Length estimation ( ^N) : 91.8226
Volume ( V) : 413.303
Potential volume ( *V) : 19.6515
Limit volume (**V) : 38.2071
Programming level ( L) : 0.0475474
Programming level estimation ( ^L) : 0.0612245
Intellect ( I) : 25.3043
Time of programming ( T) : 482.914
Time estimation ( ^T) : 386.929
Programming language level (lambda) : 0.934377
Work on programming ( E) : 8692.45
Error ( B) : 0.14092
Error estimation ( ^B) : 0.137768
Для языка Си можно воспользоваться программами автоматизации расчёта метрических характеристик по Холстеду Parser_C.exeиMetrics.exe. Ниже приведены результаты работы программыMetrics.exe:
Operators:
|
Operands:
|
| 1 | 5 | () или {} | 2 | 5 | * | 3 | 1 | ++ | 4 | 4 | += | 5 | 3 | - | 6 | 4 | / | 7 | 4 | << | 8 | 1 | <= | 9 | 7 | = | 10 | 6 | [] | 11 | 1 | for | 12 | 1 | main |
| 1 | 1 | ", b=" | 2 | 1 | "Approximated with y=ax+b where a = " | 3 | 4 | 0 | 4 | 1 | 1 | 5 | 1 | cout | 6 | 9 | k | 7 | 4 | n | 8 | 3 | resa | 9 | 2 | resb | 10 | 6 | sumx | 11 | 3 | sumx2 | 12 | 3 | sumxy | 13 | 4 | sumy | 14 | 4 | x | 15 | 2 | y |
Summary:
=====================================
The number of different operators : 12
The number of different operands : 15
The total number of operators : 42
The total number of operands : 48
Dictionary ( D) : 27
Length ( N) : 90
Length estimation ( ^N) : 101.623
Volume ( V) : 427.94
Potential volume ( *V) : 19.6515
Limit volume (**V) : 38.2071
Programming level ( L) : 0.0459211
Programming level estimation ( ^L) : 0.0520833
Intellect ( I) : 22.2885
Time of programming ( T) : 517.723
Time estimation ( ^T) : 515.419
Programming language level (lambda) : 0.902418
Work on programming ( E) : 9319.02
Error ( B) : 0.147613
Error estimation ( ^B) : 0.142647
Легко убедиться, что метрические характеристики программ на языках Паскаль и Си практически идентичны. Это можно объяснить близостью синтаксических конструкций языков.
К сожалению, программных средств автоматизации подсчёта метрических характеристик для языка Ассемблера найти не удалось, поэтому все метрики были посчитаны вручную. Результаты этой занимательной работы приведены ниже:
Операторы |
Операнды |
|
Метрики Холстеда | |||
Оператор |
Кол-во |
Операнд |
Кол-во |
|
| |
|
|
|
Число уникальных операторов (n1): |
18 | ||
add |
6 |
bp-2 |
4 |
|
Число уникальных операндов (n2): |
21 |
cmp |
1 |
bp-4 |
1 |
|
Общее число операторов (N1): |
87 |
fadd |
4 |
bp-6 |
7 |
|
Общее число операндов (N2): |
122 |
fdiv |
1 |
bp-8 |
1 |
|
| |
fdivr |
3 |
bp-10 |
5 |
|
Алфавит (n): |
39 |
fild |
3 |
bp-12 |
1 |
|
Экспериментальна длина программы (Nэ): |
209 |
fld |
7 |
bp-14 |
4 |
|
Теоретическая длина программы (Nт): |
161.73 |
fmul |
5 |
bp-16 |
1 |
|
Объём программы (V): |
1096.82 |
fsubr |
3 |
bp-18 |
4 |
|
Потенциальный объём (V*): |
19.65 |
fstp |
6 |
bp-22 |
2 |
|
Уровень программы (L): |
0.02 |
fwait |
5 |
bp-26 |
1 |
|
Сложность программы (S): |
55.82 |
inc |
1 |
bp-28 |
6 |
|
Ожидание уровня программы (L^): |
0.02 |
jg @@6 |
1 |
bp-108 |
4 |
|
Интеллект программы (I): |
22.21 |
jmp @4@114 |
1 |
bp-188 |
2 |
|
Работа по программированию (Е): |
61221.74 |
jmp @4@170 |
1 |
ax |
18 |
|
Время кодирования (T): |
3401.21 |
lea |
6 |
bx |
24 |
|
Ожидане времени кодирования (T^): |
3008.99 |
mov |
27 |
cl |
12 |
|
Уровень языка программирования (Lam): |
0.35 |
shl |
6 |
si |
9 |
|
Уровень ошибок (В): |
0.37 |
|
"0" |
8 |
|
|
| |
Итого: |
87 |
"1" |
2 |
|
|
|
|
"2" |
6 |
|
|
| |
|
|
|
| |||
Итого: |
122 |
|
|
|
Легко убедиться, что метрические характеристики программы на языке Ассемблера принципиально отличаются от двух предыдущих. Это можно объяснить низким уровнем языка Ассемблера.