Набор метрик Фернандо Абреу

 

Набор метрик MOOD (Metrics for Object Oriented Design), предложенный Ф. Абреу в 1994 году, – другой пример академического подхода к оценке качества ОО-проектирования [6]. Основными целями MOOD-набора являются:

1) покрытие базовых механизмов объектно-ориентированной парадигмы, таких как инкапсуляция, наследование, полиморфизм, посылка сообщений;

2) формальное определение метрик, позволяющее избежать субъективности измерения;

3) независимость от размера оцениваемого программного продукта;

4) независимость от языка программирования, на котором написан оцениваемый продукт.

Набор MOOD включает в себя следующие метрики:

1) фактор закрытости метода (МНF);

2) фактор закрытости свойства (AHF);

3) фактор наследования метода (MIF);

4) фактор наследования свойства (AIF);

5) фактор полиморфизма (POF);

6) фактор сцепления (СОF).

Каждая из этих метрик относится к основному механизму объектно-ориентированной парадигмы: инкапсуляции (МНF и АНF), наследованию (MIF и AIF), полиморфизму (POF) и посылке сообщений (СОF). В определениях MOOD не используются специфические конструкции языков программирования.

Метрика 1: Фактор закрытости метода MHF (Method Hiding Factor)

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

q Мv i) – количество видимых методов в классе Сi (интерфейс класса);

q Мhi) – количество скрытых методов в классе Сi (реализация класса);

q Мdi) = Мv i) + Мhi) – общее количество методов, определенных в классе С, (унаследованные методы не учитываются).

Тогда формула метрики МНF примет вид:

,

где ТС – количество классов в системе.

Если видимость т-го метода i-го класса из j-го класса вычислять по выражению:

,

a процентное количество классов, которые видят m-йметод i-го класса, определять по соотношению:

то формулу метрики МНF можнопредставить в виде:

.

В числителе этой формулы МНF – сумма закрытости всех методов во всех классах. Закрытость метода – процентное количество классов, из которых данный метод невидим. Знаменатель МНF – общее количество методов, определенных в рассматриваемой системе.

С увеличением МНF уменьшаются плотность дефектов в системе и затраты на их устранение. Обычно разработка класса представляет собой пошаговый процесс, при котором к классу добавляется все больше и больше деталей (скрытых методов). Такая схема разработки способствует возрастанию как значения МНF, так и качества класса.

Метрика 2: Фактор закрытости свойства AHF (Attribute Hiding Factor)

 

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

q Аv i) – количество видимых свойств в классе Сi (интерфейс класса);

q Ah(Ci) – количество скрытых свойств в классе Сi (реализация класса);

q Ad(Ci) = Аv i) + Ah(Ci) – общее количество свойств, определенных в классе Сi (унаследованные свойства не учитываются).

Тогда формула метрики AHF примет вид:

,

где ТС – количество классов в системе.

Если видимость т-го свойства i-го класса из j-ro класса вычислять по выражению:

,

а процентное количество классов, которые видят т-есвойство i-ro класса, определять по соотношению:

,

то формулу метрики AHFможно представить в виде:

.

В числителе этой формулы AHF – сумма закрытости всех свойств во всех классах. Закрытость свойства – процентное количество классов, из которых данное свойство невидимо. Знаменатель AHF – общее количество свойств, определенных в рассматриваемой системе.

В идеальном случае все свойства должны быть скрыты и доступны только для методов соответствующего класса (AHF = 100%).

Метрика 3: Фактор наследования метода MIF (Method Inheritance Factor)

 

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

q M ii ) – количество унаследованных и не переопределенных методов в классе Сi;

q M 0i ) – количество унаследованных и переопределенных методов в классе Сi;

q M ni ) – количество новых (не унаследованных и переопределенных) методов в классе Сi;

q M di )= M ni ) + M 0i ) – количество методов, определенных в классе Сi;

q M ai )= M di )+ M ii ) – общее количество методов, доступных в классе Сi.

Тогда формула метрики MIF примет вид:

.

Числителем MIF является сумма унаследованных (и не переопределенных) методов во всех классах рассматриваемой системы. Знаменатель MIF – это общее количество доступных методов (локально определенных и унаследованных) для всех классов.

Значение MIF = 0 указывает, что в системе отсутствует эффективное наследование, например, все унаследованные методы переопределены.

С увеличением MIF уменьшаются плотность дефектов и затраты на исправление ошибок. Очень большие значения MIF (70-80%) приводят к обратному эффекту, но этот факт нуждается в дополнительной экспериментальной проверке. Сформулируем «осторожный» вывод: умеренное использование наследования – подходящее средство для снижения плотности дефектов и затрат на доработку.

Метрика 4: Фактор наследования свойства AIF (Attribute Inheritance Factor)

 

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

q Аi i) – количество унаследованных и не переопределенных свойств в классе Сi;

q А0i) – количество унаследованных и переопределенных свойств в классе Сi;

q An(Ci) – количество новых (не унаследованных и переопределенных) свойств в классе Сi;

q Аdi) = An(Ci) + А0i) – количество свойств, определенных в классе Сi;

q Аai) = Аdi)+ Аi i) – общее количество свойств, доступных в классе Сi.

Тогда формула метрики AIF примет вид:

.

Числителем AIF является сумма унаследованных (и не переопределенных) свойств во всех классах рассматриваемой системы. Знаменатель AIF – это общее количество доступных свойств (локально определенных и унаследованных) для всех классов.

Метрика 5: Фактор полиморфизма POF (Polymorphism Factor)

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

q M0i) – количество унаследованных и переопределенных методов в классе Сi;

q Mni) – количество новых (не унаследованных и переопределенных) методов в классе Сi;

q DC(Сi) – количество потомков класса Сi;

q Mdi) = Mni) + M0i) – количество методов, определенных в классе Сi.

Тогда формула метрики POF примет вид:

.

Числитель POF фиксирует реальное количество возможных полиморфных ситуаций. Очевидно, что сообщение, посланное в класс Сi связывается (статически или динамически) с реализацией именуемого метода. Этот метод, в свою очередь, может или представляться несколькими «формами», или переопределяться (в потомках Сi).

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

Умеренное использование полиморфизма уменьшает как плотность дефектов, так и затраты на доработку. Однако при POF > 10% возможен обратный эффект.

Метрика 6: Фактор сцепления COF (Coupling Factor)

 

В данном наборе сцепление фиксирует наличие между классами отношения «клиент-поставщик» (client-supplier). Отношение «клиент-поставщик» (Сc =>Cs) здесь означает, что класс-клиент содержит но меньшей мере одну не унаследованную ссылку на свойство или метод класса-поставщика.

Если наличие отношения «клиент-поставщик» определять по выражению:

.

то формула для вычисления метрики COF примет вид:

Знаменатель COF соответствует максимально возможному количеству сцеплений в системе с ТС-классами (потенциально каждый класс может быть поставщиком для других классов). Из рассмотрения исключены рефлексивные отношения – когда класс является собственным поставщиком. Числитель COF фиксирует реальное количество сцеплений, не относящихся к наследованию.

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








Дата добавления: 2019-02-07; просмотров: 349;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.