Метрики сложности потока данных программ
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

Метрика спена.

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

Метрика Чепина.

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

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

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

2) М — модифицируемые (создаваемые внутри программы) переменные;

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

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

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

CH=Ꞷ1V+Ꞷ2M+Ꞷ3U+Ꞷ4L

где Ꞷi — весовые коэффициенты, i = 1, 2, 3, 4.

Весовые коэффициенты использованы для выражения различного влияния на сложность программы каждой функциональной группы. По мнению автора метрики, наибольший вес, равный трем, имеет функциональная группа U, так как она влияет на поток управления программы. Весовые коэффициенты остальных групп распределяются следующим образом: Ꞷ1 = 1, Ꞷ2 = 2, Ꞷ3 = 3, Ꞷ4 = 0,5. Весовой коэффициент группы L не равен нулю, поскольку паразитные переменные не увеличивают сложность потока данных программы, но иногда затрудняют ее понимание. С учетом весовых коэффициентов выражение принимает вид

CH=V+2M+3U+0,5L.

Метрика Кафура — метрика, основанная на учете потока данных. Вводятся понятия локального и глобального потока.

Локальный поток информации из A в B существует, если:

• модуль А вызывает модуль В (прямой локальный поток);

• модуль B вызывает модуль А и модуль A возвращает модулю B значение, которое используется в B (непрямой локальный поток);

• модуль C вызывает модули A, В и передает результат выполнения модуля A в модуль B.

Глобальный поток информации из модуля A в модуль B через глобальную структуру данных D существует, если модуль А помещает информацию в D, а модуль B использует информацию из D. На основе этих понятий вводится величина I — информационная сложность процедуры:

где length — сложность текста процедуры (измеряется через какую- нибудь из метрик объема, типа метрик Холстеда, МакКейба, LOC и т.п.); fan_in — количество локальных потоков внутрь процедуры плюс количество структур данных, из которых процедура берет информацию; f an_out — количество локальных потоков из процедуры плюс количество структур данных, которые обновляются этой процедурой.

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

Следующий шаг — определение информационной сложности модуля относительно некоторой структуры данных. Информационная мера сложности модуля относительно структуры данных представима как

I=WR+WWrD+WrdR+WrRd(WrRd-1), где W — число процедур, которые только обновляют структуру данных; R — число процедур, которые только читают информацию из структуры данных; WrRd — число процедур, которые и читают, и обновляют информацию в структуре данных.

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

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

Дата: 2019-12-10, просмотров: 314.