Научная статья на тему 'Применение метрик Холстеда для количественного оценивания характеристик программ ЭВМ'

Применение метрик Холстеда для количественного оценивания характеристик программ ЭВМ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1853
99
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МЕТРИКИ ХОЛСТЕДА / ОПЕРАТОР / ОПЕРАНД / ДЛИНА / СЛОВАРЬ ПРОГРАММЫ / УРОВЕНЬ ЯЗЫКА ПРОГРАММИРОВАНИЯ / ОБЪЕМ ПРОГРАММЫ / НАДЕЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ / HALSTEAD METRICS / OPERATOR / OPERAND / LENGTH / PROGRAM DICTIONARY / PROGRAMMING LANGUAGE LEVEL / PROGRAM VALUE / SOFTWARE RELIABILITY

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Аверьянов А. В., Кошель И. Н., Кузнецов В. В.

Использованы метрики Холстеда для статистического выражения алгоритмов на языках программирования в мнемокодах и машинных кодах. Объектом исследования являются три программы в мнемокодах и машинных кодах, реализующих разветвляющийся алгоритм, алгоритм, связанный с обработкой массива, и алгоритм, использующий подпрограмму. Установлено, что оценки длины программ существенно отличаются от значений, полученных в результате непосредственного анализа текстов программ. Доказано, что при переходе от программирования в мнемокодах к машинным кодам при реализации алгоритмов значительно увеличивается объем программ. Чем ниже уровень используемого языка программирования, тем больше объем программы, что в результате приводит к увеличению количества потенциальных ошибок и снижению надежности функционирования программного обеспечения.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Аверьянов А. В., Кошель И. Н., Кузнецов В. В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Application of Halstead metrics for quantitative estimation of computer program characteristics

Halstead metrics are applied to statistical characterization of algorithms in programming languages in mnemonic and machine codes. Three programs in mnemonic codes and machine codes are chosen as the studied objects; the programs implement a branching algorithm, an algorithm associated with array processing, and an algorithm using a subroutine, correspondingly. The derived estimates of the programs length are established to differ significantly from the values obtained as a result of direct analysis of program texts. It is proved that the transition from programming in mnemonic codes to machine codes in the implementation of algorithms significantly increases the program volume. The lower the level of the programming language used, the larger the volume of the program, which as a result leads to an increase in the number of potential errors and a decrease in the reliability of software functioning.

Текст научной работы на тему «Применение метрик Холстеда для количественного оценивания характеристик программ ЭВМ»

УДК 621.396.6

DOI: 10.17586/0021-3454-2019-62-11-970-975

ПРИМЕНЕНИЕ МЕТРИК ХОЛСТЕДА ДЛЯ КОЛИЧЕСТВЕННОГО ОЦЕНИВАНИЯ ХАРАКТЕРИСТИК ПРОГРАММ ЭВМ

А. В. Аверьянов, И. Н. Кошель, В. В. Кузнецов

Военно-космическая академия им. А.Ф. Можайского,197198, Санкт-Петербург, Россия

E-mail: Aver957@mail.ru

Использованы метрики Холстеда для статистического выражения алгоритмов на языках программирования в мнемокодах и машинных кодах. Объектом исследования являются три программы в мнемокодах и машинных кодах, реализующих разветвляющийся алгоритм, алгоритм, связанный с обработкой массива, и алгоритм, использующий подпрограмму. Установлено, что оценки длины программ существенно отличаются от значений, полученных в результате непосредственного анализа текстов программ. Доказано, что при переходе от программирования в мнемокодах к машинным кодам при реализации алгоритмов значительно увеличивается объем программ. Чем ниже уровень используемого языка программирования, тем больше объем программы, что в результате приводит к увеличению количества потенциальных ошибок и снижению надежности функционирования программного обеспечения.

Ключевые слова: метрики Холстеда, оператор, операнд, длина, словарь программы, уровень языка программирования, объем программы, надежность программного обеспечения

Основным средством определения количественных показателей надежности программного обеспечения (ПО) ЭВМ являются модели надежности, представляющие собой математические функции. Модели предназначены для оценки и предсказания значений различных метрик надежности ПО на всех этапах его жизненного цикла, а также для решения ряда других задач, возникающих в процессе разработки программ [1]. Существующие эмпирические модели надежности ПО основаны на анализе структурных особенностей комплексов программ и определяют зависимость показателей надежности от числа межмодульных связей, количества циклов в модулях, отношения числа прямолинейных участков программы к числу точек повторения и т.д. [2].

Один из наиболее распространенных подходов к прогнозированию надежности программ основывается на анализе их текста. Этот подход впервые был изложен в книге М. Х. Холстеда „Начала науки о программах" [3], предложенные им характеристики известны как „метрики Холстеда". Они относятся к эмпирическим моделям, которые можно построить на этапе проектирования ПО, когда уже осуществлена разбивка на модули и известна структура программ.

Согласно Холстеду, свойства любого алгоритма (или программы для ЭВМ), которые могут быть вычислены или измерены, включают следующие метрические характеристики [3]:

П1 — количество отдельных операторов;

П2 — количество отдельных операндов;

N1 — общее число всех операторов, появляющихся в данной программе;

N2 — общее число всех операндов, появляющихся в данной программе.

Через первичные метрические характеристики выражаются словарь

П = П1 + П2

(1)

и длина программы ЭВМ

N = Ni + N2.

(2)

Холстед предложил оценивать длину программы по формуле

N = П11°ё2 П1 + П210Б2 П2. (3)

В формуле (3) левой части N присвоен символ ,„" для того, чтобы отличать вычисленную длину от значения N (2), полученного в результате непосредственного анализа программы. Соотношение (3) рассматривается как приближенное. Очевидно, что N Ф N. Ответ на вопрос, насколько N дает точную оценку длины алгоритма в зависимости от использованного в нем словаря п (1), имеет важное практическое значение.

Проверку уравнения длины проведем с использованием трех программ в мнемокодах учебной ЭВМ, реализующих разветвляющийся алгоритм, алгоритм, связанный с обработкой массива, и алгоритм, использующий подпрограмму [4, 5]. Эти программы применялись при анализе программных моделей ЭВМ с использованием принципа Парето [6], а также для количественного оценивания частоты использования машинных команд ЭВМ [7].

Выбор указанных выше алгоритмов обосновывается еще и тем, что проверку уравнения (3) необходимо проводить прежде всего для небольших программ, чтобы неизвестные эффекты модульности не замаскировали основное проверяемое уравнение [3].

Мнемокоды трех исследуемых программ представлены в табл. 1. Первая программа реализует алгоритм вычисления среднего арифметического максимальных элементов трех заданных массивов чисел, вторая — алгоритм вычисления функции, третья — алгоритм вычисления суммы десяти элементов массива.

_Таблица 1

Номер команды 1. Программа с подпрограммой MAX 2. Программирование разветвляющегося процесса 3. Программирование цикла с переадресацией (обработка массива)

Мнемокоды Машинные коды Мнемокоды Машинные коды Мнемокоды Машинные коды

1 RD #85 21 1 085 IN 01 0 000 RD #40 21 1 040

2 WR R1 32 0 001 WR 30 22 0 030 WR 30 22 0 030

3 RD #14 21 1 014 SUB #16 24 1 016 RD #10 21 1 010

4 WR R2 32 0 002 JS 010 13 0 010 WR 31 22 0 031

5 CALL M 19 0 022 RD 30 21 0 030 RD #0 21 1 000

6 WR R6 32 0 006 SUB #11 24 1 011 WR 32 22 0 032

7 RD #100 22 1 100 WR 31 22 0 031 M1: RD 32 21 0 032

8 WR R1 32 0 001 MUL 31 25 0 031 ADD @30 23 2 030

9 RD #4 21 1 004 SUB #125 24 1 125 WR 32 22 0 032

10 WR R2 32 0 002 JMP 020 10 0 020 RD 30 21 0 030

11 CALL M 19 0 022 RD 30 21 0 030 ADD #1 23 1 001

12 WR R7 32 0 007 MUL 30 25 0 030 WR 30 22 0 030

13 RD #110 21 1 110 WR 31 22 0 031 RD 31 21 0 031

14 WR R1 32 1 001 RD 30 21 0 030 SUB #1 24 1 001

15 RD #9 21 1 009 MUL #72 25 1 072 WR 31 22 0 031

16 WR R2 32 0 002 ADD 31 23 0 031 JNZ M1 12 0 006

17 CALL M 19 0 022 ADI 10640 43 0 000 RD 32 21 0 032

10 6 400

18 ADD R7 33 0 007 DIVI100168 46 0 000 OUT 02 0 000

10 0 168

19 ADD R6 33 0 006 OUT 02 0 000 HLT 09 0 000

20 DIV #3 26 1 003 HLT 09 0 000

21 OUT 02 0 000

22 HLT 09 0 000

23 RD @R1 31 4 001

24 WR R3 32 0 003

25 L2: RD @R1+ 31 5 001

26 WR R4 32 0 004

Продолжение табл. 1

Номер команды 1. Программа с подпрограммой MAX 2. Программирование разветвляющегося процесса 3. Программирование цикла с переадресацией (обработка массива)

Мнемокоды Машинные коды Мнемокоды Машинные коды Мнемокоды Машинные коды

27 SUB R3 34 0 003

28 RD R3 31 0 003

29 JS L1 13 0 031

30 MOV R3,R4 30 0 034

31 L1: JRNZ R2,L2 17 0 025

32 RD R3 31 0 003

33 RET 08 0 000

Мнемокоды подпрограммы МАХ — поиска максимального элемента массива с соответствующими отдельным командам комментариями — приведены в табл. 2.

_Таблица 2

Команда Примечания

М: RD @R1 WR R3 Загрузка первого элемента массива в регистр Я3

L2: RD @R1+ WR R4 Чтение элемента массива и модификация адреса Сравнение и замена, если Я3 < Я4

SUB R3

JS L1

L1: JRNZ R2, L2 Цикл

RD R3 Чтение результата в аккумулятор

RET Возврат в основную программу

Все управляющие структуры в программах, например JS..., JNZ..., JRNZ..., классифицируются как операторы. Метки М:, L1: и L2 — не переменные и не константы, поэтому они не являются операндами, а относятся к составным частям операторов CALL M, JS Li, JRNZ R2, L2.

Первичные метрические характеристики пь п2, N1, N2, словарь п, длина N и приближенное значение оценки длины N для трех исследуемых программ в мнемокодах приведены в табл.3.

Таблица 3

Программа в мнемокодах П1 П2 п N1 n2 N N N - N V, бит

Программирование разветвляющегося процесса 12 8 20 20 9 29 67 38 125

Программирование цикла с переадресацией 7 13 20 20 15 35 68 33 151

Программа с подпрограммой 12 32 44 52 41 93 203 110 508

Представленные в табл. 3 результаты показывают, что оценки N длины программ существенно отличаются от значений N полученных в результате непосредственного анализа текста программ. Это противоречит утверждению, что „Й дает довольно точную оценку длины алгоритма в виде простой зависимости от использованного в нем словаря" [3].

Объяснение этого противоречия заключается в следующем:

— приведенное в [3] обоснование справедливости соотношения (3) соответствует программам, написанным на языках высокого уровня Алгол, Фортран, ПЛ/1;

— соотношение (3) справедливо прежде всего для длинных программ: например, для 120 программ, написанных на ПЛ/1, с общим числом операторов, превышающим 100 000, коэффициент корреляции между N и N составляет 0,98; таким образом, для больших программ корреляция между N и N достаточно велика [8].

Важной метрической характеристикой алгоритма является его размер. Соответствующая метрическая характеристика размера при любой реализации (программы) алгоритма называется объемом V программы, выраженным в битах:

V = N 1о§2 п.

Для рассматриваемых трех алгоритмов объемы программ приведены в табл. 3.

Если конкретный алгоритм переводится с одного языка на другой, то объем программы меняется. Действительный объем V увеличивается или уменьшается в зависимости от развитости используемых языков программирования. Например, при переводе алгоритма с Фортрана в машинный код некой конкретной ЭВМ объем программы увеличивается. Для 8-разрядных микропроцессоров машинные коды команд имеют длину 1, 2 или 3 байта. Первый байт указывает код операции, а последующие — ее операнды (непосредственные значения, ссылки на регистры или адреса памяти) [9, 10]. Выполнение программы начинается с первой машинной инструкции (команды) и осуществляется последовательно от инструкции к инструкции (естественный порядок выборки команд).

Первичные метрические характеристики, а также параметры N, N и V для трех исследуемых программ в машинных кодах приведены в табл. 4, а машинные коды программ — в табл. 1. Необходимо отметить, что в модели учебной ЭВМ используется десятичная система счисления для кодирования команд и представления данных.

Таблица 4

Программа в машинных кодах П1 П2 п N1 N N N - N V, бит

Программирование разветвляющегося процесса 13 11 24 20 22 42 86 44 193

Программирование цикла с переадресацией 9 17 26 20 108 128 98 30 602

Программа с подпрограммой 15 42 57 48 52 100 285 185 583

Анализ полученных результатов показывает, что при переходе от программирования в мнемокодах к машинным кодам при реализации алгоритмов значительно увеличивается объем V программ (при программировании цикла с переадресацией почти в четыре раза). Объем V является одной из важных для практики метрик Холстеда, так как определяет число потенциальных (переданных) ошибок, введенных в программу. Если выразить число ошибок в виде соотношения [3]

В = Ш000,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

то получим значения В, приведенные в табл. 5.

Таблица 5

Программа Программа в мнемокодах Программа в машинных кодах

Программирование разветвляющегося процесса 0,042 0,064

Программирование цикла с переадресацией 0,050 0,201

Программа с подпрограммой 0,170 0,194

На основании вышеизложенного и полученных оценок метрических характеристик можно сделать следующие выводы.

1. Для небольших программ в мнемокодах объемом несколько сотен бит оценки N их длины могут существенно отличаться от значений N полученных в результате непосредственного анализа текста программ. Поэтому для таких программ целесообразно использовать метрики, выражающие их словарь и длину, полученные в результате прямого подсчета количества отдельных операторов и операндов, а также общего числа всех операторов и операндов.

2. Переход при программировании от мнемокодов к машинным кодам (языку низшего уровня) приводит к значительному росту объемов программ, реализующих исследуемые алгоритмы решения задач.

3. Число потенциальных ошибок, введенных в программу при программировании, является важнейшей характеристикой, определяющей надежность функционирования ПО ЭВМ. Чем ниже уровень используемого языка программирования, тем больше объем программы, что в результате приводит к увеличению количества потенциальных ошибок и уменьшению надежности программ.

список литературы

1. Мороз Г. Б. Пуассоновские модели роста надежности программного обеспечения и их приложение. Аналитический обзор // Управляющие системы и машины. 1996. № 1—2. С. 69—84.

2. Эксплуатация средств вычислительной техники. Ч. 1. Аппаратные средства вычислительной техники: Учебник / Под ред. Г. В. Кремеза. СПб: ВКА им. А. Ф. Можайского, 2013. 505 с.

3. ХолстедМ. Х. Начала науки о программах / Пер. с англ. М.: Финансы и статистика, 1981. 128 с.

4. Жмакин А. П. Архитектура ЭВМ. СПб: БХВ-Петербург, 2010. 352 с.

5. Басыров А. Г. Организация ЭВМ и систем: практикум. СПб: ВКА им. А. Ф. Можайского, 2012. 83 с.

6. Аверьянов А. В., Белая Т. И., Молчанов О. Е. Анализ программных моделей учебных ЭВМ с использованием принципа Парето // Естественные и технические науки. 2016. № 6. С. 160—164.

7. Аверьянов А. В., Калюжный А. В. Применение анализа Парето для количественного оценивания частоты использования машинных команд ЭВМ // Изв. вузов. Приборостроение. 2019. Т. 62, № 2. С. 101—105.

8. Надежность автоматизированных систем: практикум / Сост.: К. А. Эсаулов, А. В. Аверьянов, В. В. Кузнецов. СПб: ВКА им. А. Ф. Можайского, 2014. 71 с.

9. Микропроцессорные средства вычислительной техники. Ч. 1. Микропроцессоры / Под общ. ред. О. Е. Молчанова. Л.: ВИКИ им. А.Ф. Можайского, 1990. 168 с.

10. Абель П. Ассемблер. Язык и программирование для IBM PC: Пер. с англ. Киев: НТИ, 2003. 734 с.

Сведения об авторах

Алексей Васильевич Аверьянов — канд. техн. наук, доцент; ВКА им. А. Ф. Можайского, кафедра информационно-вычислительных систем и сетей; E-mail: Aver957@mail.ru Игорь Николаевич Кошель — ВКА им. А. Ф. Можайского, кафедра информационно-вычислительных

систем и сетей; начальник факультета; E-mail: kin1470@mail.ru Вадим Викторович Кузнецов — канд. техн. наук, доцент; ВКА им. А. Ф. Можайского, кафедра информационно-вычислительных систем и сетей; E-mail: vadimkuznetsov@mail.ru

Поступила в редакцию 03.06.19 г.

Ссылка для цитирования: Аверьянов А. В., Кошель И. Н., Кузнецов В. В. Применение метрик Холстеда для количественного оценивания характеристик программ ЭВМ // Изв. вузов. Приборостроение. 2019. Т. 62, № 11. С. 970—975.

APPLICATION OF HALSTEAD METRICS FOR QUANTITATIVE ESTIMATION OF COMPUTER PROGRAM CHARACTERISTICS

A. V. Averyanov, I. N. Koshel, V. V. Kuznetsov

A. F. Mozhaisky Military Space Academy,197198, St. Petersburg, Russia E-mail: Aver957@mail.ru

Halstead metrics are applied to statistical characterization of algorithms in programming languages in mnemonic and machine codes. Three programs in mnemonic codes and machine codes are chosen as the studied objects; the programs implement a branching algorithm, an algorithm associated with array processing, and an algorithm using a subroutine, correspondingly. The derived estimates of the programs length are established to differ significantly from the values obtained as a result of direct analysis of program texts. It is proved that the transition from programming in mnemonic codes to machine codes in the implementation of algorithms significantly increases the program volume. The lower the level of the programming language used, the larger the volume of the program, which as a result leads to an increase in the number of potential errors and a decrease in the reliability of software functioning.

Keywords: Halstead metrics, operator, operand, length, program dictionary, programming language level, program value, software reliability

REFERENCES

1. Moroz G.B. Upravlyayushchiye sistemy i mashiny, 1996, no. 1-2, pp. 69-84. (in Russ.)

2. Kremez G.V., ed., Ekspluatatsiya sredstv vychislitel'noy tekhniki. Chast' 1. Apparatnyye sredstva vychislitel'noy tekhniki (Operation of Computer Equipment. Part 1. Computer Hardware), St. Petersburg, 2013, 505 р. (in Russ.)

3. Halstead M.H. Elements of Software Science, NY, Elsevier, 1977, 127 р.

4. Zhmakin A.P. Arkhitektura EVM (Computer Architecture), St. Petersburg, 2010, 352 р. (in Russ.)

5. Basyrov A.G. Organizatsiya EVM i sistem: praktikum (Organization of Computers and Systems: Workshop), St. Petersburg, 2012, 83 р. (in Russ.)

6. Aver'yanov A.V., Belaya T.I., Molchanov O.E. Estestvennye i tekhnickeskiye nauki, 2016, no. 6, pp. 160-164. (in Russ.)

7. Aver'yanov A.V., Kalyuzhnyy A.V. Journal of Instrument Engineering, 2019, no. 2(62), pp. 101-105. (in Russ.)

8. Esaulov K.A., Aver'yanov A.V., Kuznetsov V.V. Nadezhnost' avtomatizirovannykh sistem: praktikum (Reliability of Automated Systems: Workshop), St. Petersburg, 2014, 71 р. (in Russ.)

9. Molchanov O.E., ed., Mikroprotsessornyye sredstva vychislitel'noy tekhniki. Chast' 1. Mikroprotsessory (Microprocessor-Based Computing Equipment. Part 1. Microprocessors), Leningrad, 1990, 168 р. (in Russ.)

10. Abel P. IBM PC Assembler Language and Programming, Prentice Hall, 1987.

Data on authors

Alexey V. Averyanov — PhD, Associate Professor; A. F. Mozhaisky Military Space Academy, Department of Information Systems and Networks; E-mail: Aver957@mail.ru Igor N. Koshel — A. F. Mozhaisky Military Space Academy, Department of Information Sys-

tems and Networks; Head of the Faculty; E-mail: kin1470@mail.ru Vadim V. Kuznetsov — PhD, Associate Professor; A. F. Mozhaisky Military Space Academy, Department of Information Systems and Networks; E-mail: vadimkuznetsov@mail.ru

For citation: Averyanov A. V., Koshel I. N., Kuznetsov V. V. Application of Halstead metrics for quantitative estimation of computer program characteristics. Journal of Instrument Engineering. 2019. Vol. 62, N 11. P. 970—975 (in Russian).

DOI: 10.17586/0021-3454-2019-62-11-970-975

i Надоели баннеры? Вы всегда можете отключить рекламу.