Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Метрики стилистики и понятности программ






Следующие пять характеристик являются продолжением метрики Холстеда.

1. Для измерения теоретической длины программы N’ М. Холстед вводит аппроксимирующую формулу:

N'= n1*log2(n1) + n2*log2(n2)

 

где n1 - словарь операторов; n2 - словарь операндов программы.

Вводя эту оценку, Холстед исходит из основных концепций теории информации, по аналогии с которыми частота использования операторов и операндов в программе пропорциональна двоичному логарифму количества их типов. Таким образом, выражение представляет собой идеализированную аппроксимацию N, т. е. справедливо для потенциально корректных программ, свободных от избыточности или несовершенств (стилистических ошибок). Несовершенствами можно считать следующие ситуации:

а) последующая операция уничтожает результаты предыдущей без их использования;

б) присутствуют тождественные выражения, решающие совершенно одинаковые задачи;

в) одной и той же переменной назначаются различные имена и т. п.

Подобные ситуации приводят к изменению N без изменения n.

М. Холстед утверждает, что для стилистически корректных программ отклонение в оценке теоретической длины N’ от реальной N не превышает 10%.

Можно использовать N’ как эталонное значение длины программы со словарем n. Длина корректно составленной программы N, т. е. программы, свободной от избыточности и имеющей словарь n, не должна отклоняться от теоретической длины программы N’ более чем на 10%. Таким образом, измеряя n1, n2, N1 и N2 и сопоставляя значения N и N’ для некоторой программы, при более чем 10%-ном отклонении можно говорить о наличии в программе стилистических ошибок, т. е. несовершенств.

На практике N и N’ часто существенно различаются.


 

2. Другой характеристикой, принадлежащей к метрикам корректности программ, по М. Холстеду, является уровень качества программирования L (уровень программы):

L=V'/V

где V и V’ /определены выше.

Исходным для введения этой характеристики является предположение о том, что при снижении стилистического качества программирования уменьшается содержательная нагрузка на каждый компонент программы и, как следствие, расширяется объем реализации исходного алгоритма. Учитывая это, можно оценить качество программирования на основании степени расширения текста относительно потенциального объема V’. Очевидно, для идеальной программы L =1, а для реальной - всегда L < 1.

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

L'= (2 n2)/ (n1*N2) - уровень качества программирования, основанный лишь на параметрах реальной программы без учета теоретических параметров,

4. Располагая характеристикой L’, Холстед вводит характеристику I, которую рассматривает как интеллектуальное содержание конкретного алгоритма, инвариантное по отношению к используемым языкам реализации: I = L’ * V.

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

I = L’V = LV = V’V/V = V’.

Эквивалентность I и V’ свидетельствует о том, что мы имеем дело с характеристикой информативности программы.


 

Введение характеристики I позволяет определить умственные затраты на создание программы. Процесс создания программы условно можно представить как ряд операций:

1) осмысление предложения известного алгоритма;

2) запись предложения алгоритма в терминах используемого языка программирования, т. е. поиск в словаре языка соответствующей инструкции, ее смысловое наполнение и запись.

Используя эту формализацию в методике Холстеда, можно сказать, что написание программы по заранее известному алгоритму есть N’-кратная выборка операторов и операндов из словаря программы n, причем число сравнений (по аналогии с алгоритмами сортировки) составит log2(n).

Если учесть, что каждая выборка-сравнение содержит, в свою очередь, ряд мысленных элементарных решений, то можно поставить в соответствие содержательной нагрузке каждой конструкции программы сложность и число этих элементарных решений. Количественно это можно характеризовать с помощью характеристики L, поскольку 1/L имеет смысл рассматривать как средний коэффициент сложности, влияющий на скорость выборки для данной программы. Тогда оценка необходимых интеллектуальных усилий по написанию программы может быть измерена как

E=N' * log2(n/L)

 

Таким образом, E характеризует число требуемых элементарных решений при написании программы.

Однако следует заметить, что E адекватно характеризует лишь начальные усилия по написанию программ, поскольку при построении E не учитываются отладочные работы, которые требуют интеллектуальных затрат иного характера.

Суть интерпретации этой характеристики состоит в оценке не затрат на разработку программы, а затрат на восприятие готовой программы. При этом вместо теоретической длины программы N’ используется ее реальная длина:

E' = N * log2(n/L).

Характеристика E' введена исходя из предположения, что интеллектуальные усилия на написание и восприятие программы очень близки по своей природе. Однако если при написании программы стилистические погрешности в тексте практически не должны отражаться на интеллектуальной трудоемкости процесса, то при попытке понять такую программу их присутствие может привести к серьезным осложнениям. Эта посылка достаточно хорошо согласуется с нашими выводами относительно взаимосвязи N и N’, изложенными выше.


 

Преобразуя формулу для E, получаем

E’ = V ‘ V / V’.

Такое представление E', а соответственно и E, так как E = E', наглядно иллюстрирует целесообразность разбиения программ на отдельные модули, поскольку интеллектуальные затраты оказываются пропорциональными квадрату объема программы, который всегда больше суммы квадратов объемов отдельных модулей.

Еще некоторые метрики указаны далее:

EC=V/(L')2 - сложность понимания программы,

D=1/ L' - трудоемкость кодирования программы,

y' = V/ D2 - уровень языка выражения

I=V/D - информационное содержание программы, данная характеристика позволяет определить умственные затраты на создание программы

B=V/3000 –количество ошибок в программе(В.С., 2003)

 


 

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

Milutin, Anton. 2009. Метрики кода программного обеспечения. viva64. [В Интернете] ООО " СиПроВер", 20 07 2009 г. [Цитировано: 08 12 2015 г.] https://www.viva64.com/ru/a/0045/.

T.J. McCabe, " A complexity measure, " IEEE Transactions on Software Engineering, vol. SE-2, no. 4, pp. 308-320, December, 1976.

Богданов Д.В., " Стандартизация жизненного цикла программных средств", СПб - 2000, 210 с

В.С., Харченко. 2003. Использование метрик Холстеда при оценке безопасности критического программного обеспечения. khai. [В Интернете] 11 10 2003 г. [Цитировано: 08 12 2015 г.] https://www.khai.edu/csp/nauchportal/Arhiv/REKS/2003/REKS403/pdf/Harchenk.pdf.

Метрики. met-rix. [В Интернете] [Цитировано: 08 12 2015 г.] https://www.met-rix.narod.ru/page1.htm.

 

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал