Лекция Модели качества программного обеспечения Цель лекции: курса. План лекции



Pdf көрінісі
бет6/7
Дата19.09.2023
өлшемі0,7 Mb.
#181616
түріЛекция
1   2   3   4   5   6   7
Байланысты:
Лекция -06 2020

Метрика Майерса.
Г. Майерс предложил расширение метрики МакКейба. Суть 
подхода Г. Майерса [
5
] состоит в следующем. В качестве меры сложности предложен 
интервал [v
1
; v
2
], где v
1
– цикломатическая мера, v
2
– количество отдельных условий плюс 
единица. При этом оператор DO принимается в качестве одного условия, а оператор CASE 
с n исходами принимается за (n – 1) условий. Введенная мера получила название 
интервальной меры. 
Метрики сложности потока данных программ 
Характерными представителями группы метрик сложности потока данных, т.е. 
использования, конфигурации и размещения данных в программах, являются метрики 
спена, Чепина, Кафура. Рассмотрим кратко эти метрики. 
Метрика спена. 
Определение спена основывается на локализации обращений к данным внутри 
каждой программной секции. Спен – это количество утверждений, содержащих данный 
идентификатор, между его первым и последним появлением в тексте программы. 
Следовательно, идентификатор, появившийся n раз, имеет спен, равный n – 1. При большом 
спене усложняется тестирование и отладка [
6
]. 
Метрика Чепина. 
Суть метрики состоит в оценке информационной прочности отдельно взятого 
программного модуля с помощью анализа характера использования переменных из списка 
ввода-вывода [
7
]. 
Все множество переменных, составляющих список ввода-вывода, разбивается на 
четыре функциональные группы: 
1)
 


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

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


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


не используемые в программе (паразитные) переменные. Поскольку каждая 
переменная может выполнять одновременно несколько функций, необходимо 
учитывать ее в каждой соответствующей функциональной группе. 
Далее вводится значение метрики Чепина: 
CH = ω
1
V + ω
2
M +ω
3
U + ω
4
L, 
(6.3) 
где ω
i
– весовые коэффициенты, i = 1, 2, 3, 4. 
Весовые коэффициенты использованы для выражения различного влияния на 
сложность программы каждой функциональной группы. По мнению автора метрики, 
наибольший вес, равный трем, имеет функциональная группа U, так как она влияет на поток 
управления программы. Весовые коэффициенты остальных групп распределяются 
следующим образом: ω
1
= 1, ω
2
= 2, ω
3
= 3, ω
4
= 0,5. Весовой коэффициент группы L не 
равен нулю, поскольку паразитные переменные не увеличивают сложность потока данных 
программы, но иногда затрудняют ее понимание. С учетом весовых коэффициентов 
выражение (6.3) принимает вид 
5
Myers, G. An Extension to the Cyclomatic Measure of Program Complexity / G. Myers // SIGPLAN Notices. — 
1977. — October. 
6
Милютин, А. Метрики кода программного обеспечения [Электронный ресурс] / А. Милютин. — URL: 
http://www.viva64.eom/ru/a/0045/ 
7
Новичков, А. Метрики кода и их практическая реализация в IBM Rational [Электронный ресурс] / А. 
Новичков. — URL: http://www.viva64.com/ go.php?url=241. 


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 – число процедур, 
которые и читают, и обновляют информацию в структуре данных. 
Следует отметить, что рассмотренные метрики сложности программ основаны на 
анализе исходных текстов программ и графов, что обеспечивает единый подход к 
автоматизации их расчетов. 


Достарыңызбен бөлісу:
1   2   3   4   5   6   7




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет