Набор метрик 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 Мh (Сi) — количество скрытых методов в классе Сi (реализация класса);
q Мd (Сi) = Мv (Сi) + Мh (Сi) — общее количество методов, определенных в классе С, (унаследованные методы не учитываются).
Тогда формула метрики МНF примет вид:
где ТС — количество классов в системе.
Если видимость т-го метода i-го класса из j-го класса вычислять по выражению:
a процентное количество классов, которые видят m-й метод i-го класса, определять по соотношению:
то формулу метрики МНF можно