Технологии разработки программного обеспечения


Набор метрик Чидамбера и Кемерера - часть 5


Если все методы обращаются к одинаковым свойствам, то LCOM = 0.

Введем обозначения:

q       НЕ СВЯЗАНЫ — количество пар методов без общих экземплярных переменных;

q       СВЯЗАНЫ — количество пар методов с общими экземплярными переменными.

q       Ij— набор экземплярных переменных, используемых методом Мj

Очевидно, что

НЕ СВЯЗАНЫ = card {Iij | Ii

Ij = 0},

СВЯЗАНЫ = card {Iij | Ii

Ij
0}.

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

Можно определить метрику по-другому: LCOM — это количество пар методов, не связанных по свойствам класса, минус количество пар методов, имеющих такую связь.

Рассмотрим примеры применения метрики LCOM.

Пример 1: В классе имеются методы: M1, M2, М3, М4. Каждый метод работает со своим набором экземплярных переменных:

I1={a, b}; I2={а, с}; I3={х, у}; I4={т, п}.

В этом случае

НЕ СВЯЗАНЫ = card (I13, I14, I23, I24, I34) = 5; СВЯЗАНЫ = card (I12) = 1.

LCOM = 5-1=4.

Пример 2: В классе используются методы: M1, M2, М3. Для каждого метода задан свой набор экземплярных переменных:

I1 = {a,b};I2={a,c};I3={x,y},

НЕ СВЯЗАНЫ = card (I13, I23) = 2; СВЯЗАНЫ = card (I12) = 1,

LCOM = 2- 1 = 1.

Связность методов внутри класса должна быть высокой, так как это содействует инкапсуляции. Если LCOM имеет высокое значение, то методы слабо связаны друг с другом через свойства. Это увеличивает сложность, в связи с чем возрастает вероятность ошибок при проектировании.

Высокие значения LCOM означают, что класс, вероятно, надо спроектировать лучше (разбиением на два или более отдельных класса). Любое вычисление LCOM помогает определить недостатки в проектировании классов, так как эта метрика характеризует качество упаковки данных и методов в оболочку класса.

Вывод: связность в классе желательно сохранять высокой, то есть следует добиваться низкого значения LCOM.

Набор метрик Чидамбера-Кемерера — одна из пионерских работ по комплексной оценке качества ОО-проектирования.


Начало  Назад  Вперед



Книжный магазин