Статья опубликована в рамках: Научного журнала «Студенческий» № 20(64)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5
МЕТРИКИ ОЦЕНКИ КАЧЕСТВА КОДА
Аннотация. Данная статья посвящена метрикам оценки качества кода, которые позволяют улучшить читабельность исходного кода и его поддерживаемость, а также уменьшить вероятность возникновения регрессии.
Ключевые слова: метрики, качество кода, поддерживаемость, читаемость.
Сокращения:
LOC – Lines of code.
В последнее время все больше заказчиков предъявляют требования не только к функционалу приложения, но и к качеству написания исходного кода. В этой статье будут рассмотрены основные требования и метрики для оценки качества исходного кода.
К основным критериям качества кода можно отнести: Размер исходного кода (volume), дублирование кода (duplication), размер юнитов (unit size), сложность юнитов (unit complexity), взаимодействие юнитов (unit interfacing), связанность модулей (module coupling) и баланс компонент (component balance) [1].
Volume – это метрика, характеризующая общий размер исходного кода программного продукта. Размер определяется числом строк кода, нормализованных с помощью средних по отрасли коэффициентов производительности для каждого языка программирования. Объем должен оцениваться по шкале, которая не зависит от типа программного продукта.
Duplication - степень дублирования исходного кода разрабатываемого продукта. Дублирование касается появления идентичных фрагментов исходного кода в нескольких местах продукта.
Для оценки свойства дублирования оценивается процент избыточных строк кода. Строка кода считается избыточной, если она является частью кода (больше чем 6 строк кода), который буквально повторяется по меньшей мере в одном другом месте исходного кода. Чтобы иметь право на сертификацию на уровне 4 звезды, процент избыточных строк кода для каждого используемого языка программирования не должен превышать 4,8 %.
Блок исходного кода дублируется, если он встречается не менее двух раз, состоит из не менее шести строк кода, в которых не учитываются пустые и другие тривиальные строки. Если три идентичных блока кода из шести строк дублируются, это означает, что имеется восемнадцать дублированных строк, из которых двенадцать являются избыточными.
Unit complexity - степень сложности исходного кода. Сложность каждой единицы определяется числом цикломатической сложности Маккейба. За единицу принимается наименьшая исполняемая часть исходного кода, в нашем случае это методы или функции. Число Маккейба представляет количество нециклических путей в графе и может быть рассчитано путем подсчета количества точек принятия решения, которые присутствуют в исходном коде.
Индекс Маккейба описывает количество путей выполнения в блоке. Чем выше значение Маккейба для объекта, тем сложнее будет понять и поддерживать объект. Индекс Маккейба определяется для мельчайших частей исходного кода, которые могут быть выполнены и оценены индивидуально.
Чтобы претендовать на сертификацию на уровне 4 звезд, для каждого используемого языка программирования процент строк кода, находящихся в блоках с числом сложности Маккейба выше 5, не должен превышать 21,1 %. Процент строк кода в единицах с числом сложности Маккейба выше 10 не должен превышать 7,6 %. Процент строк кода в единицах с числом сложности Маккейба выше 25 не должен превышать 0,8 %. Зависимость рисков от индекса Маккейба приведена в таблице 1.
Таблица 1
Зависимость рисков от индекса Маккейба
Индекс Маккейба |
Риски |
0-5 |
Легко читаемый код |
6-10 |
Сложный код, средний риск |
11-25 |
Очень сложный код, высокий риск |
>25 |
Нетестируемый код, очень высокий риск |
Unit size – размер методов исходного кода с точки зрения количества строк. Чтобы иметь право на сертификацию на уровне 4 звезды, для каждого используемого языка программирования процент строк кода, находящихся в блоках с более чем 15 строками кода, не должен превышать 42,0 %. Процент в единицах с более чем 30 строками кода не должен превышать 19,1 %. Процент в единицах с более чем 60 строками не должен превышать 5,6 %. Зависимость рисков от количества строк в методе приведена в таблице 2.
Таблица 2
Зависимость рисков от количества строк метода
Количество строк |
Риск |
1-15 |
Легко читаемый код |
16-30 |
Довольно длинный метод, средний риск |
31-60 |
Длинный метод, высокий риск |
>60 |
Слишком длинный метод, очень высокий риск |
Module coupling - связь между модулями с точки зрения количества входящих зависимостей для модулей исходного кода.
Измерение связей между модулями количественно определяет вероятность того, что изменение кода в одном месте повлияет на другие места в системе. Связывание модулей основано на количестве входящих зависимостей для модуля. Чем больше число зависимостей между модуля, тем выше вероятность распространения регрессии в других местах системы.
Чтобы пройти сертификацию на уровне 4 звезд, для каждого используемого языка программирования процент строк кода, находящихся в модулях с числом входящих зависимостей выше 10, не должен превышать 18,2 %. Процент в модулях с количеством входящих зависимостей выше 20 не должен превышать 11,2 %. Процент в модулях с количеством входящих зависимостей выше 50 не должен превышать 4,7 %. Зависимость рисков от количества входящих зависимостей приведена в таблице 3.
Таблица 3
Зависимость рисков от количества входящих зависимостей
Количество зависимостей |
Риск |
0-10 |
Без рисков |
11-20 |
Низкий риск |
21-50 |
Средний риск |
>50 |
Высокий риск |
Баланс компонентов - это результат разбивки системы, который представляет собой оценку количества компонентов верхнего уровня в системе, и соразмерность компонентов, которая является оценкой для распределения по размерам этих компонентов. Количество компонентов системы и их относительный размер по сравнению друг с другом могут указывать на поломку системы в функциональных модулях. Когда в системе слишком много или слишком мало компонентов, считается, что ее сложнее понять и труднее поддерживать. Баланс компонентов рассчитывается как произведение однородности размеров компонентов и оптимальности разбивки системы.
Оптимальность разбивки системы может быть определена количественно на основе отклонения фактического числа компонентов системы от идеального числа компонентов.
Однородность размера компонента может быть определена количественно на основе отклонения от ситуации, когда все компоненты имеют одинаковый размер. Системы получают более низкую оценку, когда компоненты имеют более неравные размеры относительно друг друга. Для этого расчета используется скорректированный коэффициент Джини для размера всех компонентов в системе, измеренный в LOC.
Кроме того, рассматривается относительный размер компонентов. В идеале система должна быть разделена на компоненты, которые примерно одинакового размера. Системы получают более низкую оценку, когда компоненты имеют более неравные размеры относительно друг друга.
Список литературы:
- SIG Metrics – [Электронный ресурс]. – Режим доступа. – URL: https://metrics.dropwizard.io/4.0.0/
Оставить комментарий