Введение

Различные метрики программного обеспечения используются в модульном программировании. Они были упомянуты Робертом Сесилом Мартином в его книге 2002 года "Разработка гибкого программного обеспечения: принципы, шаблоны и практики". Термин "пакет программного обеспечения" здесь относится к группе связанных классов в объектно-ориентированном программировании. Количество классов и интерфейсов: Количество конкретных и абстрактных классов (и интерфейсов) в пакете является показателем расширяемости пакета. Афферентные соединения (Ca): число классов в других упаковках, которые зависят от классов внутри упаковки, является показателем ответственности упаковки. Афферентные соединения сигнализируют внутрь. Эфферентные соединения (Ce): Количество классов в других пакетах, от которых зависят классы в пакете, является показателем зависимости пакета от внешних факторов. Эфферентные соединения сигнализируют наружу. Абстрактность (A): соотношение числа абстрактных классов (и интерфейсов) в анализируемом пакете к общему числу классов в анализируемом пакете. Диапазон для этого показателя составляет от 0 до 1, при этом A=0 указывает на полностью конкретную упаковку, а A=1 указывает на полностью абстрактную упаковку. Нестабильность (I): отношение эфферентной сцепления (Ce) к общей сцеплению (Ce + Ca), так что I = Ce / (Ce + Ca). Этот показатель является показателем устойчивости пакета к изменениям. Диапазон для этого показателя составляет от 0 до 1, при этом I=0 указывает на полностью стабильную упаковку, а I=1 указывает на полностью нестабильную упаковку. Расстояние от основной последовательности (D): перпендикулярное расстояние пакета от идеализированной линии A + I = 1. D рассчитывается как D = A + I 1 Этот показатель является показателем баланса пакета между абстрактностью и стабильностью. Пакет прямо на главной последовательности оптимально сбалансирован с точки зрения его абстрактности и стабильности. Идеальные пакеты либо полностью абстрактны и стабильны (I=0, A=1), либо полностью конкретны и нестабильны (I=1, A=0). Диапазон для этого показателя составляет от 0 до 1, при этом D=0 указывает на пакет, который совпадает с основной последовательностью, а D=1 указывает на пакет, который находится как можно дальше от основной последовательности. Циклы зависимости от пакетов: циклы зависимости от пакетов сообщаются вместе с иерархическими путями пакетов, участвующих в циклах зависимости от пакетов.