Уровень качества программирования
Другой характеристикой, принадлежащей к метрикам корректности программ, по М.Холстеду, является уровень качества программирования L (уровень программы): , (5) где V и V* соответственно реальный и потенциальный объем программы. Очевидно, для идеальной программы L=1, а для реальной – L< 1. Нередко целесообразно определить уровень программы, не прибегая к оценке ее теоретического объема, поскольку список параметров программы часто зависит от реализации и может быть искусственно расширен. Это приводит к увеличению метрической характеристики качества программирования. М.Холстед предлагает аппроксимировать эту оценку выражением, включающим только фактические параметры, т.е. параметры реальной программы: . (6). Коэффициент корреляции между L и составляет 90 %. Однако, если для исследования выбираются модули, в последствии объединенные в сложную программу, расхождения в значениях этих оценок могут достигать целого порядка. Считается, более корректным использовать характеристику L. Располагая характеристикой , Холстед выводит характеристику I, которую рассматривает как интеллектуальное содержание конкретного алгоритма, инвариантное по отношению к используемым языкам реализации. I= V (7) Преобразуя выражение (7) с использованием выражения (5) получаем I= V≈ LV=V*V/V=V*. Введение характеристики I позволяет определить умственные затраты на создание программы. Поскольку 1/L имеет смысл рассматривать как средний коэффициент сложности, оценка необходимых усилий по написанию программы может быть изменена как E= log2η /L (8). Таким образом Е характеризует число требуемых элементарных решений при написании программы. Однако Е, адекватно характеризует лишь начальные усилия по написанию программ, поскольку не учитываются отладочные работы, требующие интеллектуальных затрат иного характера. Поэтому данную характеристику можно интерпретировать, используя вместо теоретической длины программы , ее реальную длину: E'=Nlog2 η /L (9). Суть характеристики состоит в оценке затрат не на разработку программы, а затрат на восприятие готового продукта. Преобразуя формулу (8) с учетом выражения V = Nlog2 η (см.формулу 3 лаб.раб.5) и (5) получим E= V2/V*. Такое представление E', Е иллюстрирует целесообразность разбиения программы на отдельные модули, т.к.интеллектуальные затраты пропорциональны квадрату объема программы, который всегда больше суммы квадратов отдельных модулей. Пример:
ADD: PROCEDURE (A + B) RETURN (FLOAT); RETURN(A + B); END ADD;
η 1 = 2 – количество операторов η 2 = 2 – количество операндов
η = η 1 + η 2 = 5 N = 2log22 + 3log23 ≈ 6, 5 V = 6, 5log25 ≈ 13, 2 Сложность модуля E = V/L = 13, 5; λ = L2V = 1*13, 5 = 13, 5
|