Таблица 14.1. Профиль секций данных для метода SumAndProduct
SumN ProdN Оператор procedure SumAndProduct
1
1
(Niinteger;
1
1
varSumN, ProdNiinteger)
var
1
1
l:integer;
begin
2
SumN:=0
2
ProdN:=1
3
3
for l:=1 to N do begin
3
SumN:=SumN+l
3
ProdN:=ProdN*l
end
end;
Видно, что в столбце переменной для каждой секции указывается количество лексем из
i -й строки метода, которые
включаются в секцию.
Еще одно базовое понятие методики — секционированная абстракция.
Секционированная абстракция — это объединение
всех секций данных метода. Например, секционированная абстракция метода SumAndProduct имеет вид
SA(SumAndProduct) = {N
1
∙ SumN
1
∙ I
1
∙ SumN
2
∙ 0
1
∙ I
2
∙ I
2
∙ N
2
∙ SumN
3
∙ SumN
4
∙ I
3
,
N
1
∙ ProdN
1
∙ I
1
∙ ProdN
2
∙ I
1
∙ I
2
∙ I
2
∙ N
2
∙ ProdN
3
∙ ProdN
4
∙ I
4
}.
Введем главные определения.
Секционированной абстракцией класса (Class Slice Abstraction) CSA(C) называют объединение секций всех экземплярных
переменных класса. Полный набор секций составляют путем обработки всех методов класса.
Склеенными лексемами называют те лексемы данных, которые являются элементами более чем одной секции данных.
Сильно склеенными лексемами называют те склеенные лексемы, которые являются элементами всех секций данных.
Сильная связность по данным (StrongData Cohesion) — это метрика, основанная на количестве лексем данных, входящих
во все секции данных для класса. Иначе говоря, сильная связность по данным учитывает количество сильно склеенных лексем
в классе
С, она вычисляется по формуле:
)
(
лексемы
))
(
CSA
(
)
(
SDC
C C SG C
,
где
SG (CSA(
C )) — объединение сильно склеенных лексем каждого из методов класса
С, лексемы
(С) — множество всех
лексем данных класса
С. Таким образом, класс без сильно склеенных лексем имеет нулевую сильную связность по данным.
Слабая связность по данным (Weak Data Cohesion) — метрика, которая оценивает связность, базируясь на склеенных
лексемах. Склеенные лексемы не требуют связывания всех секций данных, поэтому данная метрика определяет более слабый
тип связности. Слабая связность по данным вычисляется по формуле:
)
(
лексемы
))
(
CSA
(
)
(
WDC
C C G C
,
где
G (CSA(C)) — объединение склеенных лексем каждого из методов класса. Класс без склеенных лексем не имеет слабой
связности по данным. Наиболее точной метрикой связности между секциями данных является
клейкость данных (Data Adhesiveness). Клейкость данных определяется как отношение суммы из количеств секций, содержащих каждую склеенную
лексему, к произведению количества лексем данных в классе на количество секций данных. Метрика вычисляется по
формуле:
)
(
CSA
)
(
лексемы
Секции
)"
(
CSA
(
)
(
DA
C C d C G d C
.
Приведем пример. Применим метрики к классу, профиль секций которого показан в табл. 14.2.