- •Анализ программного обеспечения с использованием объектно-ориентированных метрик
- •Введение
- •Метрические особенности объектно-ориентированных программных систем
- •Локализация
- •Инкапсуляция
- •Информационная закрытость
- •Наследование
- •Абстракция
- •Объектно-ориентированные метрики для измерения характеристик систем
- •Количество строчек кода (loc)
- •Цикломатическая сложность Мак-Кейба (mvg)
- •Количество комментариев (com)
- •Число классов – получателей сообщений данного класса(Fan-out, Fan-in)
- •Количество "взвешенных" методов на класс (wmc)
- •Глубина дерева наследования (dit)
- •Количество потомков (noc)
- •Ширина иерархии наследования (bih)
- •Глубина класса в графе наследования (nl)
- •Связанность между классами объектов (cbo)
- •Количество реакций на класс (rfc)
- •Отсутствие сцепления в методах (lcom)
- •Количество строк текста на класс (kloc)
- •Число методов в классе (nm)
- •Число новых методов в классе (nnm)
- •Количество унаследованных методов (nmi)
- •Количество потенциально наследуемых методов (pmi)
- •Пропорция методов наследуемых подклассом (pmis)
- •Число общедоступных методов в классе(npm)
- •Степень методологической сцепленности (dmc)
- •Количество посылаемых методом сообщений (nms)
- •Сообщения и аргументы (maa)
- •Количество абстрактных классов (nac)
- •Степень абстрактности классов (dac)
- •Количество переопределеных методов в подклассе (nmo)
- •Пропорция переопределения методов в подклассе (pom)
- •Степень взаимосвязи между классами (dcbo)
- •Количество скрытых методов экземпляра (PrIm)
- •Мера Мак-Клура (mmk)
- •Литература
Анализ программного обеспечения с использованием объектно-ориентированных метрик
Валентин Павлов
1.Введение 2
2.Метрические особенности объектно-ориентированных программных систем 2
2.1Локализация 2
2.2Инкапсуляция 3
2.3Информационная закрытость 3
2.4Наследование 3
2.5Абстракция 3
3.Объектно-ориентированные метрики для измерения характеристик систем 4
3.1Количество строчек кода (LOC) 4
3.2Цикломатическая сложность Мак-Кейба (MVG) 4
3.3Количество комментариев (COM) 5
3.4Число классов – получателей сообщений данного класса (Fan-out, Fan-in) 5
3.5Количество "взвешенных" методов на класс (WMC) 5
3.6Глубина дерева наследования (DIT) 6
3.7Количество потомков (NOC) 6
3.8Ширина иерархии наследования (BIH) 7
3.9Глубина класса в графе наследования (NL) 7
3.10Связанность между классами объектов (CBO) 7
3.11Количество реакций на класс (RFC) 8
3.12Отсутствие сцепления в методах (LCOM) 9
3.13Количество строк текста на класс (KLOC) 10
3.14Число методов в классе (NM) 10
3.15Число новых методов в классе (NNM) 10
3.16Количество унаследованных методов (NMI) 11
3.17Количество потенциально наследуемых методов (PMI) 11
3.18Пропорция методов наследуемых подклассом (PMIS) 11
3.19Число общедоступных методов в классе (NPM) 12
3.20Степень методологической сцепленности (DMC) 12
3.21Количество посылаемых методом сообщений (NMS) 13
3.22Сообщения и аргументы (MAA) 13
3.23Количество абстрактных классов (NAC) 15
3.24Степень абстрактности классов (DAC) 15
3.25Количество переопределеных методов в подклассе (NMO) 15
3.26Пропорция переопределения методов в подклассе (POM) 16
3.27Число свойств (атрибутов или переменных) в классе(NAA) 16
3.28Число унаследованных свойств (атрибутов или переменных) в классе (NIV) 16
3.29Использование глобалов (GUS) 16
3.30Излишняя взаимосвязь через глобалы (UCGU) 17
3.31Степень взаимосвязи между классами (DCBO) 17
3.32Количество скрытых методов экземпляра (PrIM) 17
3.33Мера Мак-Клура (MMK) 17
4.Литература 17
Введение
Разработка сложных систем на объектно-ориентированных языках программирования требует постоянного принятия решений, которые существенно влияют на успешность завершения проекта. Возможность оценить последствия принятия таких решений на возможно более ранних этапах разработки системы может упростить и ускорить работу над проектом. Особенно важно наличие критериев оценки принимаемых решений, а также возможность выразить эти оценки количественно. В этом случае имеется возможность оценить, какие характеристики системы улучшаются в результате принятия какого либо решения, а какие ухудшаются. Таким образом разрабатываемую систему можно "измерить". Количественные критерии оценки в этом случае называются метриками.
Еще большее значение имеют метрики при сопровождении программных систем. Поскольку зачастую сопровождать систему должна группа людей, которая не занималась разработкой этой системы. Проанализировать и оценить полученную для сопровождения систему, найдя в ней достоинства и недостатки довольно сложно. Еще сложнее начать вносить существенные изменения в такую систему, дополняя ее новыми возможностями.
Сложные системы чаще всего разработаны на объектно-ориентированных языках программирования. Поэтому метрики для оценки характеристик также должны использовать понятия объектно-ориентированных языков программирования.
Даже наличие метрик, адекватно отражающих свойства системы, и наличие методик их применения, не позволяют в полной мере ими воспользоваться. Объем разрабатываемых или сопровождаемых систем не позволит корректно использовать метрики и методики вручную. Весьма сложно измерять что либо, визуально просматривая тысячи строк текста программ. Это требует также весьма высокой квалификации в области объектно-ориентированных языков программирования. Склонность человека ошибаться, а также влияние на такую работу психологических факторов делает бессмысленным измерение характеристик системы без наличия специализированных инструментов.
Анализ программных систем с помощью специализированного инструмента требует адекватного представления этим инструментом понятий используемого языка программирования. По сложности этот инструмент сопоставим с компилятором для используемого при разработке системы языка программирования. Оптимальным решением поэтому является встраивание средств анализа и измерения характеристик системы в сам компилятор.