Скачиваний:
21
Добавлен:
15.06.2014
Размер:
183.02 Кб
Скачать
  1. Описание программы

Для измерения метрики уровня языка программирования была написана программа на языке С#, анализирующая исходные коды программ на языке Pascal. К ПС были сформулированы следующие требования:

  • ПС должно адекватно оценивать уровень заданной программы на языке Pascal, для этого должны быть использованы формулы (2.1–2.7), а также подсчитаны необходимые ля этого данные программного кода;

  • ПС должно накапливать статистическую информацию об измеренных значениях уровня языка программирования в базе данных, с подсчётом среднего значения;

  • ПС должно быть совместимо с различными версиями ОС Windows и платформы .NET;

  • ПС должно обладать удобным графическим пользовательским интерфейсом.

    1. Описание функциональной части пс

Исходный код главного программного модуля ПС приведен в приложении А.

Для написания программы была использована среда разработки программных приложений MS Visual Studio 2010, платформа .NET 4.0, язык программирования С#. Изначально была обеспечена совместимость с платформой .NET 3.0.

Программа имеет событийную архитектуру.

При запуске приложения производится загрузка файлов *.urf, содержащих имплиментарные функции модулей System, Crt, Dos, Graph языка Pascal. Модули Overlay, Turbo3 и Graph3 не включаются по причине их устарелости (программы с использованием этих модулей обеспечивают совместимость с версией TP 3.0). В случае, если данные файлы не найдены, выводится сообщение, и ПС прекращает выполнение.

Анализировать программы можно двумя способами: вводя текст исходного кода в окно программы или загружая его из файла *.pas.

После ввода кода программы ПС загружает его в память и разбирает. Разбор кода осуществляется функцией Analyze, которая вызывает в свою очередь для каждой строки кода функцию ParseString. Данная функция выделяет из строки кода токены, и в соответствии с грамматикой языка Pascal разбивает строку на операторы, операнды, разделители, имена функций и знаки операций. Результат сохраняется в таких структурах данных, как:

dictOperand(хранит словарь операндов);

dictOperator(хранит словарь операторов);

numOperand(хранит количество обращений к каждому операнду);

numOperator(хранит количество обращений к каждому оператору).

На основании этих данных формируются значения размерность массива dictOperand; размерность массива dictOperator; сумма элементов массива numOperand; сумма элементов массива numOperator.

Также подсчитывается количество функций, реализованных в языке программирования, и их аргументов, и эти значения используются зля вычисления значения . После чего по формулам (2.1–2.7) подсчитывается значение уровня языка программирования, которое и является результатом работы программы.

В программе реализован ряд функций, необходимых для работы с базой данных результатов вычислений, которая имеет формат *.pll, а именно: открытие БД, добавление элемента, вывод среднего значения (статистики) уровня языка программирования, а также функции справки.

    1. Описание интерфейса пс

При запуске интерфейс программы имеет вид, показанный на рис.3.1.

Рис.3.1. Интерфейс ПС при загрузке

После ввода исходного кода в окно редактора путём открытия файла с помощью меню или нажатием кнопки ПС имеет следующий вид:

Рис.3.2. Интерфейс ПС с загруженным исходным кодом

Анализ кода производится с помощью нажатия кнопки (Analyze) или выбора соответствующего пункта меню. В результате вычислений выводится сообщение следующего типа:

Рис.3.3. Сообщение о подсчитанном уровне ЯП

С помощью кнопки (Open Result Database) или соответствующего пункта меню можно открыть базу результатов вычислений уровня ЯП. При этом будет выведено следующее сообщение:

Рис.3.4. Сообщение о среднем уровне ЯП, хранящемся в БД

Новая БД создается нажатием кнопки (Open Result Database) или выбором соответствующего пункта меню.

Загрузка подсчитанного результата уровня ЯП производится нажатием кнопки (Open Result Database) или выбором соответствующего пункта меню. При этом производится пересчет среднего уровня ЯП в данной БД, о чем выводится сообщение следующего типа:

Рис.3.5. Сообщение о среднем уровне языка программирования с учётом только что полученного текущего значения

Для закрытия БД служит кнопка (Close Database), для закрытия файла с исходным кодом – кнопка (Close Source Code). Эти действия также можно выполнить с помощью меню.

Меню Help cодержит информацию об использованной метрике, краткое руководство пользователя и информацию о разработчике. Ниже приводится данная информация и вид соответствующих диалоговых окон.

– использованная метрика:

PLL definition bases on Halstead's formulas. We use the following calculations:

program language: h = h1 + h2;

program length: N = N1+N2;

where h1 is the number of unique operators, including separators, procedure identifiers and operation signs (operator vocabulary); h2 is the number of unique operands (operand vocabulary); N1 is total operator quantity; N2 is total operand quantity.

program theoretical volume: V = N log2h.

Also we use h* which stands for theoretical program vocabulary (the quantity of functions already implemented in the PL (h1*) and their arguments(h2*): h* = h1* + h2*). Using this value we get potential program volume: V* = h* log2h*, which shows the volume of the most optimal code implementing the needed algorithm.

PLL is calculated according to the formula λ = (V*)2/V.

– краткое руководство пользователя:

Programming Language Level Metrics (PLLM) is a piece of software that allows calculation of PLL according to Halstead's formulas. This program works with Pascal source codes, which are loaded to program like *.PAS files.

The interface

Consists of a menu and a textbox where code for analyzing is shown. You may not change the code directly in the window - you should change source file.

Surfing the menu

File menu

-Open Source Code

You should use this item to choose *.PAS file with Pascal source code. After your choice the code will be loaded to the program.

-Analyze

Becomes active after code opening. Performs the code analyzing with result - PLL of this program shown as a MessageBox. This parameter may vary in interval [0,10].

-Create Database

Creates a DB file (*.PLL), which will contain PLL values of several measurings. The data in such files is stored like following script:

totallines=N

PLL=B

C1

C2

...

CN

where N is number of measurements, information about their results is stored in values C1..CN; B is average PLL level for this DB.

-Open Result Database

Opens an existing DB file (*.PLL), which will contain PLL values of several measurings. The PLL coefficient is shown after "Open Result DB" action.

-Add To Database

Adds the current calculated PLL to opened DB. The average PLL quotient is recalculated taking the inserted value into consideration, and the result is shown and added to *.PLL file.

-Close Database

Closes opened current DB. The handle is destroyed and for adding a new item you should reopen existing DB or create a new one.

-Close Source Code

Closes the *.Pas file and cleanes the screen, preparing the program for following calculations.

-Exit

Closes the application.

Help menu

-Metrics Help

Shows this information.

-About.

Shows brief information about the program and the developer.

Have fun!

---------

V.L. Kasperovich, 28.11.2010 16:24

Рис. 3.6. Интерфейс справочной системы программы PLLM

  1. Выводы

При использовании данной программы были проведены статистические исследования уровня языка программирования Pascal. Полученные результаты показывают, что средний уровень ЯП Pascal лежит в интервале [2,15..2,45]. Это довольно высокоуровневый язык (его уровень выше, чем, например PL/1 (1,53), но ниже, чем у современных объектно-ориентированных языков программирования, таких, как C#, Delphi или С++). Уровень языка программирования Pascal показывает его универсальность: при наличии всего около 200 имплиментарных функций данный ЯП пригоден для решения довольно широкого круга проблем. Учитывая, что Pascal был создан как язык для обучения основам алгоритмизации и программирования, такой высокий уровень может быть обусловлен также тем, что для исследования были использованы учебные программы, для написания которых встроенных средств данного языка было вполне достаточно.

При исследовании уровень языка колебался в пределах от 0,163 до 23,358 для различных программ. Это обусловлено причинами, изложенными в п.2, в частности, нестабильностью данной метрики и не инвариантностью её по отношению к разным программам.