Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kratkaya_versia_2.docx
Скачиваний:
37
Добавлен:
19.09.2019
Размер:
1.12 Mб
Скачать

63. Объектно-ориентированные метрики: набор метрик Фернандо Аббреу

Еще одним примером академического подхода к оценке качества объектно-ориентированного проектирования является набор метрик MOOD (Metrics for object oriented design), предложенный Ф. Абреу в 1994 г. Основными целями данного набора являются:

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

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

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

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

В набор MOOD входят следующие метрики:

  • фактор закрытости метода (Method hiding factor – МНF);

  • фактор закрытости атрибута (Attribute hiding factor – AHF);

  • фактор наследования метода (Method inheritance factor – MIF);

  • фактор наследования атрибута (Attribute inheritance factor – AIF);

  • фактор полиморфизма (Polymorphism factor – POF);

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

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

Для вычисления факторов набора метрик MOOD вводятся следующие обозначения:

  • Mv(Ci) – количество видимых методов в классе Ci (интерфейс класса);

  • Mh(Ci) – количество скрытых методов в классе Ci (реализация класса);

  • Mi(Ci) – количество унаследованных и не переопределенных методов в классе Ci;

  • Mo(Ci) – количество унаследованных и переопределенных методов в классе Ci;

  • Mn(Ci) – количество новых (не унаследованных и переопределенных) методов в классе Ci;

  • Md(Ci) = Mv(Ci)+Mh(Ci) = Mo(Ci)+Mn(Ci) – общее количество методов, определенных в классе Ci (унаследованные методы не учитываются);

  • Ma(Ci) = Md(Ci)+Mi(Ci) – общее количество методов, доступных в классе Ci;

  • Av(Ci) – количество видимых атрибутов в классе Ci (интерфейс класса);

  • Ah(Ci) – количество скрытых атрибутов в классе Ci (реализация класса);

  • Ai(Ci) – количество унаследованных и не переопределенных атрибутов в классе Ci;

  • Ao(Ci) – количество унаследованных и переопределенных атрибутов в классе Ci;

  • An(Ci) – количество новых (не унаследованных и переопределенных) атрибутов в классе Ci;

  • Ad(Ci) = Av(Ci)+Ah(Ci) = Ao(Ci)+An(Ci) – общее количество атрибутов, определенных в классе Ci (унаследованные атрибутов не учитываются);

  • Aa(Ci) = Ad(Ci)+Ai(Ci) – общее количество атрибутов, доступных в классе Ci.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]