Министерство образования Республики Беларусь
Учреждение образования
«Белорусский государственный университет
информатики и радиоэлектроники»
Факультет компьютерных систем и сетей
Кафедра программного обеспечения информационных технологий
ОТЧЁТ
по лабораторной работе
«Построение метрики уровня языка программирования»
по курсу МССвИР
Анализируемый язык программирования – Pascal
Язык написания программного средства – С#
Проверил: Данилова Г.В. |
Выполнил: студент гр. 851001 Касперович В.Л.
|
Минск, 2010
Содержание
|
Стр. |
|
3 |
|
4 |
|
7 |
3.1 Описание функциональной части программы |
7 |
3.2. Описание интерфейса |
8 |
|
13 |
|
14 |
Приложение А. Исходный код главного модуля программы |
15 |
Приложение Б. Пример кода, проанализированного данным ПС. |
29 |
Приложение В. Пример базы данных статистики вычислений уровня языка программирования. |
30 |
-
Введение
Широкое внедрение информационных технологий во все сферы деятельности человека приводит к разработке огромного количества программных средств (ПС) различного функционального назначения. Это вызывает необходимость в создании международных и национальных стандартов в области программных средств, систем и связанных с ними процессов. Применение стандартов позволяет унифицировать процессы разработки, эксплуатации и сопровождения ПС, что способствует повышению качества процессов и самих ПС и повышению конкурентоспособности ПС на внутреннем и внешнем рынках.
Метрология и стандартизация программного обеспечения необходима для повышения качества программных продуктов (ПП). В частности, разработан набор метрик, которые служат для оценки различных качественных параметров ПС, включая сложность программы, уровень языка программирования, количество возможных ошибок и др. Исходя из значений, полученных при применении данных метрик, можно судить о качестве ПС.
В данной работе рассматривается метрика «Уровень языка программирования», которая, в общем случае, оценивает среднюю сложность программирования на данном языке.
-
Теоретические сведения
Для оценки языка программирования издавна существовало понятие уровня языка. Однако оно могло иметь только относительное значение, поскольку отсутствовал абсолютный измеритель. Такой измеритель был предложен М. Холстедом, который в своем понимании уровня языка использовал понятия, заложенные им в такие метрические характеристики программ, как уровень программы и объем программы.
Для вычисления этих величин используются четыре измеряемых характеристики программы:
1 — число уникальных операторов программы, включая символы-разделители, имена процедур и знаки операций (словарь операторов);
2— число уникальных операндов программы (словарь операндов);
N1 — общее число операторов в программе;
N2 — общее число операндов в программе.
Опираясь на эти характеристики, получаемые непосредственно при анализе исходных текстов программ, М. Холстед вводит следующие оценки:
словарь программы:
, (2.1)
длину программы:
, (2.2)
объём программы:
. (2.3)
Количество символов, используемых при реализации некоего алгоритма, определяется в числе прочих параметров, и словарем программы , представляющим собой минимально необходимое число символов, обеспечивающих реализацию алгоритма. Объем программы V характеризует число двоичных разрядов, т. е. бит, необходимых для записи программы. Под битом подразумевается логическая единица информации – символ, оператор, операнд, т. е. то, чем непосредственно оперирует программист при создании программ.
При измерении уровня языка программирования также используется величина * — теоретический словарь программы, т. е. словарный запас, необходимый для написания программы, с учетом того, что необходимая функция уже реализована в данном языке и, следовательно, программа сводится к вызову этой функции. Величина * определяется по следующей формуле:
, (2.4)
где – количество реализованных в языке программирования (имплиментарных) функций, использованных в данной программе; – количество параметров данных функций.
Исходя из этого, М. Холстед вводит оценку :
, (2.5)
с помощью которой описывается потенциальный объем программы, соответствующий максимально компактному тексту программы, реализующей данный алгоритм.
Используя данные величины, можно получить численное значение величины метрики уровня языка программирования.
По аналогии с высказыванием, согласно которому уровень программы, реализуемой конкретным алгоритмом, не зависит от используемого языка программирования, М. Холстед утверждает, что изменение алгоритма при кодировании на одном и том же языке, в одинаковой степени увеличивая потенциальный объем программы, снижает ее уровень. На этом основании была выдвинута гипотеза о постоянстве для одного языка программирования выражения
, (2.6)
где - оценка уровня языка; L—уровень программы, который задаётся формулой ; V* — потенциальный объем программы.
Используя выражения для вычисления уровня программы, можно записать:
. (2.7)
Данная метрика не является строго фиксированной для языка. Она зависит, в том числе, от поставленной задачи, конкретного алгоритма, а также от квалификации программиста.
Постоянство определяется синхронным изменением объема программы при изменении ее потенциального объема. Иными словами, увеличение объема программы должно быть на два порядка больше увеличения количества информации по внешним связям. Следовательно, алгоритмически сложные программы вычисления единичных значений переменных будут давать значительно более низкое значение , чем программы вычисления большого объема информации по элементарным соотношениям. Если программа использует только стандартные инструкции языка и не связана с созданием управляющих структур (развилок и циклов), уровень языка такой программы будет значительно выше среднестатистического.
Таким образом, предлагаемая М. Холстедом метрическая характеристика сильно зависит от уровня программы и ее специфики. Поэтому трактовать эту метрику следует как уровень языка программирования в контексте области применения, т. е. определять среднее значение уровня языка на основании статистических данных по программам конкретной проблемной области. Только при сравнении со средним значением уровня языка можно сделать вывод о применимости языка программирования к реализации программ данной проблемной области, с одной стороны, и об уровне использования языковых средств — с другой. Оба вывода должны делаться на основании локальных средних значений для типологических рядов программ.
Эмпирически уровень языка программирования можно определить следующим образом: чем больше функций реализовано в языке программирования, а следовательно, чем большее количество задач можно решить, используя лишь встроенные возможности языка программирования, тем выше уровень данного языка.