Скачиваний:
24
Добавлен:
01.05.2014
Размер:
119.81 Кб
Скачать

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

Легко убедиться, что метрические характеристики программы на языке Ассемблера принципиально отличаются от двух предыдущих. Это можно объяснить низким уровнем языка Ассемблера.