CH = V + 2M + 3U +0,5L.
(6.4)
Метрика Кафура – метрика, основанная на учете потока данных [
8
]. Вводятся
понятия локального и глобального потока.
Локальный поток информации из A в В существует, если:
модуль А вызывает модуль В (прямой локальный поток);
модуль В вызывает модуль А и модуль А возвращает модулю В значение, которое
используется в В (непрямой локальный поток);
модуль С вызывает модули А, В и передает результат выполнения модуля А в
модуль В.
Глобальный поток информации из модуля А в модуль В через глобальную структуру
данных D существует, если модуль А помещает информацию в D, а модуль В использует
информацию из D. На основе этих понятий вводится величина I — информационная
сложность процедуры:
I = length (fan_in · fan_out)
2
,
(6.5)
где length – сложность текста процедуры (измеряется через какую-нибудь из метрик
объема, типа метрик Холстеда, МакКейба, LOC и т.п.); fan_in – количество локальных
потоков внутрь процедуры плюс количество структур данных, из которых процедура берет
информацию; fan_out – количество локальных потоков из процедуры плюс количество
структур данных, которые обновляются этой процедурой.
Можно
определить
информационную
сложность
модуля
как
сумму
информационных сложностей, входящих в него процедур.
Следующий шаг – определение информационной сложности модуля относительно
некоторой структуры данных. Информационная мера сложности модуля относительно
структуры данных представима как
I = WR + WWrRd + WrRdR + WrRd (WrRd – 1),
(1)
где W – число процедур, которые только обновляют структуру данных; R – число процедур,
которые только читают информацию из структуры данных; WrRd – число процедур,
которые и читают, и обновляют информацию в структуре данных.
Следует отметить, что рассмотренные метрики сложности программ основаны на
анализе исходных текстов программ и графов, что обеспечивает единый подход к
автоматизации их расчетов.
Достарыңызбен бөлісу: