Главная Первое Второе Третье Последнее

Понятие метрики.
Направления применения метрик.
Метрические шкалы.
Метрики сложности. Метрики стилистики.

Качество ПО - это совокупность свойств, определяющих полезность изделия (программы) для пользователей в соответствии с функциональным назначением и предъявлёнными требованиями.

Характеристика качества программы - понятие, отражающее отдельные факторы, влияющие на качество программ и поддающиеся измерению.

Критерий качества - численный показатель, характеризующий степень, в которой программе присуще оцениваемое свойство.

Критерии качества включают следующие характеристики : экономичность, документированность, гибкость, модульность, надёжность, обоснованность, тестируемость, ясность, точность, модифицируемость, эффективность, легкость сопровождения и т.д.

Критерий должен :

* численно характеризовать основную целевую функцию программы;

* обеспечивать возможность определения затрат, необходимых для достижения требуемого уровня качества, а также степени влияния на показатель качества различных внешних факторов;

* быть по возможности простым, хорошо измеримым и иметь малую дисперсию.

Для измерения характеристик и критериев качества используют метрики.

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

В исследовании метрик ПО различают два основных направления :

* поиск метрик, характеризующих наиболее специфические свойства программ, т.е. метрик оценки самого ПО;

* использование метрик для оценки технических характеристик и факторов разработки программ, т.е. метрик оценки условий разработки программ.

По виду информации, получаемой при оценке качества ПО метрики можно разбить на три группы :

* метрики, оценивающие отклонение от нормы характеристик исходных проектных материалов. Они устанавливают полноту заданных технических характеристик исходного кода.

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

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

ОСНОВНЫЕ НАПРАВЛЕНИЯ ПРИМЕНЕНИЯ МЕТРИК.

В настоящее время в мировой практике используется несколько сотен метрик программ. Существующие качественные оценки программ можно сгруппировать по шести направлениям :

* оценки топологической и информационной сложности программ;

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

* оценки производительности ПО и повышения его эффективности путем выявления ошибок проектирования;

* оценки уровня языковых средств и их применения;

* оценки трудности восприятия и понимания программных текстов, ориентированные на психологические факторы, существенные для сопровождения и модификации программ;

* оценки производительности труда программистов для прогнозирования сроков разработки программ и планирования работ по созданию программных комплексов.

МЕТРИЧЕСКИЕ ШКАЛЫ

В зависимости от характеристик и особенностей применяемых метрик им ставятся в соответствие различные измерительные шкалы.

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

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

Интервальной шкале соответствуют метрики, которые показывают не только относительное положение программ, но и то, как далеко они отстоят друг от друга.

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

МЕТРИКИ СЛОЖНОСТИ ПРОГРАММ

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

* метрики сложности потока управления программ

* и метрики сложности потока данных программ
.
МЕТРИКИ РАЗМЕРА ПРОГРАММ.

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

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

К группе оценок размера программ можно отнести также и метрику Холстеда.

МЕТРИКА ХОЛСТЕДА.
Основу метрики Холстеда составляют четыре измеряемых характеристики программы:
n1 - число уникальных операторов программы, включая символы-
разделители, имена процедур и знаки операций (словарь операторов);
n2 - число уникальных операндов программы (словарь операндов);
N1 - общее число операторов в программе;
N2 - общее число операндов в программе.

Опираясь на эти характеристики, получаемые непосредственно при анализе исходных текстов программ, М. Холстед вводит следующие оценки:

словарь программы

n1=n1+n2,
длину программы
N=N1+N2,                     (1)
объем программы
V=N*log2(n) (бит).           (2)
Под битом подразумевается логическая единица информации - символ, оператор, операнд.

Далее М. Холстед вводит n* - теоретический словарь программы, т.е. словарный запас, необходимый для написания программы, с учетом того, что необходимая функция уже реализована в данном языке и, следовательно, программа сводится к вызову этой функции. Например, согласно М. Холстеду, возможное осуществление процедуры выделения простого числа могло бы выглядеть так:


CALL SIMPLE (X,Y),
где Y - массив численных значений, содержащий искомое число X.
Теоретический словарь в этом случае будет состоять из
n1* : {CALL, SIMPLE (...)},
n1*=2; n2* : {X, Y},
n2*=2,
а его длина, определяемая как
n* = n1* + n2*,
будет равняться 4.
Используя n*, Холстед вводит оценку V*:
V* = n* * log2 n*,    (3)

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

МЕТРИКИ СЛОЖНОСТИ ПОТОКА УПРАВЛЕНИЯ ПРОГРАММ.

Вторая наиболее представительная группа оценок сложности программ - метрики сложности потока управления программ. Как правило, с помощью этих оценок оперируют либо плотностью управляющих переходов внутри программ, либо взаимосвязями этих переходов.

И в том и в другом случае стало традиционным представление программ в виде управляющего ориентированного графа G=(V,E), где V - вершины, соответствующие операторам, а E - дуги, соответствующие переходам.

МЕТРИКА МАККЕЙБА.

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

Для вычисления цикломатического числа Маккейба Z(G) применяется формула

                   Z(G)=e-v+2p,
где e - число дуг ориентированного графа G;
v - число вершин;
p - число компонентов связности графа.

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

По сути Z(G) определяет число линейно независимых контуров в Сильно связном графе. Иначе говоря, цикломатическое число Маккейба показывает требуемое количество проходов для покрытия всех контуров сильно связного графа или количество тестовых прогонов программы, необходимых для исчерпывающего тестирования по критерию "работает каждая ветвь".

Для программы, граф которой изображен на рис.1, цикломатическое число при e=10, v=8, p=1 определится как Z(G)=10-8+2=4.

Цикломатическое число зависит только от количества предикатов, сложность которых при этом не учитывается. Например, имеется два оператора условия:

IF  X>0
THEN  X=A;
ELSE;
и
IF  (X>0 & FLAG='1'B)!
(X=0 & FLAG='0'B)
THEN  X=A;
ELSE;

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

МЕТРИКА МАЙЕРСА.

Исходя из этого Г. Майерс предложил расширение этой метрики. Суть подхода Г. Майерса состоит в представлении метрики сложности программ в виде интервала [Z(G), Z(G)+h]. Для простого предиката h=0, а для n-местных предикатов h=n-1. Таким образом, первому оператору соответствует интервал [2,2], а второму - [2,6].

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

МЕТРИКА ПОДСЧЕТА ТОЧЕК ПЕРЕСЕЧЕНИЯ.

Рассмотрим метрику сложности программ, получившую название "подсчет точек пересечения", авторами которой являются М. Вудвард, М. Хенел и Д. Хидлей. Метрика ориентирована на анализ программ, при создании которых использовалось неструктурное кодирование на таких языках, как язык ассемблера и Фортран.

В графе программы, где каждому оператору соответствует вершина, т. е. не исключены линейные участки, при передаче управления от вершины a к b номер оператора a равен min(a,b), а номер оператора b - max(a,b). Точка пересечения дуг появляется, если

min(a,b) < min(p,q) < max(a,b) & max(p,q) > max(a,b) |
min(a,b) < max(p,q) < max(a,b) & min(p,q) < min(a,b).
Иными словами, точка пересечения дуг возникает в случае выхода управления за пределы пары вершин (a,b) (рис. 3).

Количество точек пересечения дуг графа программы дает характеристику не структурированности программы.

МЕТРИКА ДЖИЛБА.

Одной из наиболее простых, но, как показывает практика, достаточно эффективных оценок сложности программ является метрика Т. Джилба, в которой логическая сложность программы определяется как насыщенность программы выражениями типа IF-THEN-ELSE. При этом вводятся две характеристики: CL - абсолютная сложность программы, характеризующаяся количеством операторов условия; cl - относительная сложность программы, характеризующаяся насыщенностью программы операторами условия, т. е. cl определяется как отношение CL к общему числу операторов.

Используя метрику Джилба, мы дополнили ее еще одной составляющей, а именно характеристикой максимального уровня вложенности оператора CLI, что позволило не только уточнить анализ по операторам типа IF-THEN-ELSE, но и успешно применить метрику Джилба к анализу циклических конструкций.

МЕТРИКА ГРАНИЧНЫХ ЗНАЧЕНИЙ

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

Введем несколько дополнительных понятий, связанных с графом программы.

Пусть G=(V,E) - ориентированный граф программы с единственной начальной и единственной конечной вершинами. В этом графе число входящих вершин у дуг называется отрицательной степенью вершины, а число исходящих из вершины дуг - положительной степенью вершины. Тогда набор вершин графа можно разбить на две группы : вершины, у которых положительная степень <=1; вершины, у которых положительная степень >=2.

Вершины первой группы назовем принимающими вершинами, а вершины второй группы - вершинами отбора.

Для получения оценки по методу граничных значений необходимо разбить граф G на максимальное число подграфов G', удовлетворяющих следующим условиям : вход в подграф осуществляется только через вершину отбора; каждый подграф включает вершину (называемую в дальнейшем нижней границей подграфа), в которую можно попасть из любой другой вершины подграфа. Например, вершина отбора, соединенная сама с собой дугой-петлей, образует подграф. (рис. 4, таблица 1).

Число вершин, образующих такой подграф, равно скорректированной сложности вершины отбора (таблица 2). Каждая принимающая вершина имеет скорректированную сложность, равную 1, кроме конечной вершины, скорректированная сложность которой равна 0. Скорректированные сложности всех вершин графа G суммируются, образуя абсолютную граничную сложность программы. После этого определяется относительная граничная сложность программы :

S0=1-(v-1)/Sa,

где S0 - относительная граничная сложность программы; Sa - абсолютная граничная сложность программы; v - общее число вершин графа программы.

МЕТРИКИ СЛОЖНОСТИ ПОТОКА ДАННЫХ.

Другая группа метрик сложности программ - метрики сложности потока данных, т.е. использования, конфигурации и размещения данных в программах.

МЕТРИКА ОБРАЩЕНИЯ К ГЛОБАЛЬНЫМ ПЕРЕМЕННЫМ.

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

Пара "модуль-глобальная переменная" обозначается как (p,r), где p - модуль, имеющий доступ к глобальной переменной r. В зависимости от наличия в программе реального обращения к переменной r формируются два типа пар "модуль-глобальная переменная" : фактические и возможные. Возможное обращение к r с помощью p показывает, что область существования r включает в себя p.

Характеристика Aup говорит о том, сколько раз модули Up действительно получали доступ к глобальным переменным, а число Pup - сколько раз они могли бы получить доступ.

Отношение числа фактических обращений к возможным определяется

Rup = Aup/Pup.
Эта формула показывает приближенную вероятность ссылки произвольного модуля на произвольную глобальную переменную. Очевидно, чем выше эта вероятность, тем выше вероятность "несанкционированного" изменения какой-либо переменной, что может существенно осложнить работы, связанные с модификацией программы.

К сожалению, пока нельзя сказать, насколько удобен и точен этот метод на практике, так как нет соответствующих статистических данных.

МЕТРИКА СПЕНА

Определение спена основывается на локализации обращений к данным внутри каждой программной секции. Спен - это число утверждений, содержащих данный идентификатор, между его первым и последним появлением в тексте программы. Следовательно, идентификатор, появившийся n раз, имеет спен, равный n-1. При большом спене усложняется тестирование и отладка.

МЕТРИКА ЧEПИНА.

Суть метода состоит в оценке информационной прочности отдельно взятого программного модуля с помощью анализа характера использования переменных из списка ввода-вывода.

Все множество переменных, составляющих список ввода-вывода, разбивается на 4 функциональные группы :

1. P - вводимые переменные для расчетов и для обеспечения вывода.

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

2. M - модифицируемые, или создаваемые внутри программы переменные.

3. C - переменные, участвующие в управлении работой программного модуля (управляющие переменные).

4. T - не используемые в программе ("паразитные") переменные. Поскольку каждая переменная может выполнять одновременно несколько функций, необходимо учитывать ее в каждой соответствующей функциональной группе.

Далее вводится значение метрики Чепина :

Q = a1*P + a2*M + a3*C + a4*T,         (4)

где a1, a2, a3, a4 - весовые коэффициенты.

Весовые коэффициенты в выражении (4) использованы для отражения различного влияния на сложность программы каждой функциональной группы. По мнению автора метрики, наибольший вес, равный трем, имеет функциональная группа C, так как она влияет на поток управления программы. Весовые коэффициенты остальных групп распределяются следующим образом : a1=1, a2=2, a4=0.5. Весовой коэффициент группы T не равен 0, поскольку "паразитные" переменные не увеличивают сложность потока данных программы, но иногда затрудняют ее понимание. С учетом весовых коэффициентов выражение (4) принимает вид :

Q = P + 2M + 3C + 0.5T
Следует отметить, что рассмотренные метрики сложности программ основаны на анализе исходных текстов программ и графов, что обеспечивает единый подход к автоматизации из расчета.

МЕТРИКИ СТИЛИСТИКИ И ПОНЯТНОСТИ ПРОГРАММ

МЕТРИКА УРОВНЯ КОММЕНТИРОВАННОСТИ ПРОГРАММ.
Наиболее простой метрикой стилистики и понятности программ является оценка уровня комментированности программы F:
F=Nком/Nстр,           (5)

где Nком - количество комментариев в программе; Nстр - количество строк или операторов исходного текста.

Таким образом, метрика F отражает насыщенность программы комментариями.

Исходя из практического опыта принято считать, что F>=0.1, т. е. на каждые десять строк программы должен приходиться минимум один комментарий. Как показывают исследования, комментарии распределяются по тексту программы неравномерно: в начале программы их избыток, а в середине или в конце - недостаток. Это объясняется тем, что в начале программы, как правило, расположены операторы описания идентификаторов, требующие более "плотного" комментирования. Кроме того, в начале программы также расположены "шапки", содержащие общие сведения об исполнителе, характере, функциональном назначении программы и т. п. Такая насыщенность компенсирует недостаток комментариев в теле программы, и поэтому формула (5) недостаточно точно отражает комментированность функциональной части текста программы.

Более удачен вариант, когда вся программа разбивается на n равных сегментов и для каждого из них определяется Fi:

Fi = sign (Nком/Nстр - 0.1),

при этом

n
F=Сумма(Fi).
i=1

Уровень комментированности программы считается нормальным, если выполняется условие: F=n. В противном случае какой-либо фрагмент программы дополняется комментариями до номинального уровня.

МЕТРИКИ ХОЛСТЕДА

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

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

N^ = n1*log2(n1) + n2*log2(n2),        (6)

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

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

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

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

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

Подобные ситуации приводят к изменению 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,               (7)

где V и V* определяется соответственно выражениями (2) и (3).

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

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

L^ = 2*n2 / (n1*N2).

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

На наш взгляд, да и по мнению самого автора, термин интеллектуальность не совсем удачен. Преобразуя выражение (8) с учетом (7), получаем

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).          (9)

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

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

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

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

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

Преобразуя формулу (9) с учетом выражений (2) и (7), получаем

                   E = V * V / V*.

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

МЕТРИКА ИЗМЕНЕНИЯ ДЛИНЫ ПРОГРАММНОЙ ДОКУМЕНТАЦИИ.

Рассмотрим еще одну метрику, по своему характеру несколько отличающуюся от предыдущих. Она опирается на принцип оценки, при котором используется измерение флуктуации длин программной документации.

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

Предположим, что документация изменяется в дискретные моменты времени t(i), i=1,2,...,n. Тогда в любой момент времени t(i) текущая длина документа l(i) может быть определена как

               l(i) = l(i-1) + a(i) - b(i);   l(0) = 0,
где l(i-1) - длина документа в предыдущий момент времени; a(i) - добавляемая часть документа; b(i) - исключаемая часть документа.

Далее вводится d(i), представляющая собой отклонение текущей длины документа l(i) от конечного значения l(n):

d(i) = l(n) - l(i).

Затем рассчитывается интеграл по модулю этого отклонения на интервале от t(i) до t(n), представленный в виде суммы:

n-1
H(n) = Сумма |d(i)| * (t(i+1) - t(i)).       (10)
i=1

Значение H(n) представляет собой оценку переходного процесса для интервала времени от t(1) до t(n). Однако H(n) не учитывает изменений типа a(i)=b(i), хотя они, бесспорно, влияют на ход дальнейшего процесса.

Чтобы отразить влияние изменений такого рода, называемых в дальнейшем импульсными, вводится экспоненциальная функция, отражающая функцию отклика. Заштрихованная область на рис.5 представляет собой дополнение к оценке H, отражающее влияние импульсного изменения длины документов и вычисляемое как

Интеграл a(i)*e^(-L^(-1*(t-t(i))))dt = L*L(i) = L*b(i), L>0. (11) t(i)

Таким образом, оценка длины документа пропорциональна значению импульсного изменения длины a(i)=b(i) с коэффициентом пропорциональности L.

В принципе импульсное изменение длины документа присутствует и при a(i)<>b(i). Поэтому с учетом (11) автор метрики преобразует выражение (10) к виду

n-1
H'(n) = Сумма [ |d(i)| * (t(i+1)-t(i)) + L*c(i) ],    (12)
i=1

причем c(i) = min {a(i), b(i)}.

Если в процессе работы значения a(i) и b(i) неконтролируемы, импульсное изменение длины учесть нельзя. Тогда c(i)=0, и выражение (12) вырождается в (10). Используя конечное значение длины документа, можно записать

H(n)'' = H(n)' / l(n).


met-rix.narod.ru
Сайт управляется системой uCoz

Интерреклама. Интернет