Метрика программного обеспечения ABC - ABC Software Metric

Программная метрика ABC была введена Джерри Фицпатриком в 1997 году для преодоления недостатков LOC.[1] Метрика определяет оценку ABC как тройку значений, которые представляют размер набора операторов исходного кода. Оценка ABC рассчитывается путем подсчета количества задания (Номер ветви (B), и количество условные (C) в программе. Оценка ABC может применяться к индивидуальным методы, функции, классы, модули или же файлы в программе.

Оценка ABC представлена 3-D вектор <Присваивания (A), ветви (B), условные выражения (C)>. Его также можно представить как скаляр значение, которое является величина вектора <Назначения (A), Ветви (B), Условные выражения (C)>, и вычисляется следующим образом:

По соглашению значение величины ABC округляется до ближайшей десятой.

История

Концепция измерения размера программного обеспечения была впервые представлена ​​Морисом Холстедом.[2] из Университета Пердью в 1975 году. Он предположил, что каждая компьютерная программа состоит в основном из жетоны: операторы и операнды. Он пришел к выводу, что подсчет количества уникальных операторов и операндов дает нам оценку размера программы. Однако это не было принято в качестве меры размера программы.

Строки кода (LOC) - еще одна популярная мера размера программы. LOC не считался точной мерой размера программы, потому что даже программа с идентичной функциональностью может иметь разное количество строк в зависимости от стиля кодирования.[3]

Другой показатель, называемый Функциональная точка (FP) метрика была введена для подсчета количества пользовательских транзакций ввода и вывода. Вычисления функциональных точек не давали информации ни о функциональности программы, ни о подпрограммах, которые были задействованы в программе.[4]

Метрика ABC предназначена для преодоления недостатков подсчета LOC, FP и токенов (операций и операндов). Тем не менее, балл FP также может использоваться в качестве дополнения к баллу ABC.

Хотя автор утверждает, что метрика ABC измеряет размер, некоторые считают, что она измеряет сложность.[5] Способность метрики ABC измерять сложность зависит от того, как сложность определяется.

Определение

Три компонента оценки ABC определяются следующим образом:

  • Назначение: хранение или перенос данных в Переменная.
  • Ветви: явная прямая ветвь программы из объем.
  • Условные: Булево или логический тест.

Поскольку базовые языки, такие как C, C ++, Java и т. Д., Имеют такие операции, как присваивание переменных, вызовы функций и только условия тестирования, оценка ABC включает эти три компонента.[1]

Если вектор ABC обозначен как <5,11,9> для подпрограмма, это означает, что подпрограмма имеет 5 назначений, 11 ветвей и 9 условных операторов. В целях стандартизации счетчики должны быть заключены в угловые скобки и записаны в том же порядке согласно обозначениям .

Часто бывает удобнее сравнивать размеры исходного кода, используя скалярное значение. Индивидуальные счетчики ABC различны, поэтому, согласно Джерри Фицпатрику, мы считаем, что эти три компонента являются ортогональный, что позволяет вычислить скалярную величину ABC, как показано выше.

Скалярные оценки ABC теряют некоторые преимущества вектора. Вместо вычисления величины вектора взвешенная сумма векторов может поддерживать более точное сравнение размеров. Скалярные оценки ABC не следует представлять без сопровождающих векторов ABC, поскольку скалярные значения не являются полным представлением размера.

Теория

Конкретные правила подсчета значений вектора ABC следует интерпретировать по-разному для разных языков из-за семантический различия между ними.

Поэтому правила вычисления вектора ABC немного отличаются в зависимости от языка. Ниже мы определяем правила расчета метрики ABC для C, C ++ и Java. На основе этих правил можно интерпретировать правила для других императивных языков.[1]

Правила ABC для C

Следующие правила дают количество назначений, ветвей, условных операторов в метрике ABC для C:

  1. Добавьте один к количеству заданий, когда:
  2. Добавьте один к количеству веток, когда:
  3. Добавьте единицу к количеству условий, когда:

Правила ABC для C ++

Следующие правила дают количество назначений, ветвей, условных операторов в метрике ABC для C ++:

  1. Добавьте один к количеству заданий, когда:
  2. Добавьте один к количеству веток, когда:
    • Возникновение вызова функции или вызова метода класса.
    • Возникновение любого оператора goto, цель которого находится на более глубоком уровне вложенности, чем уровень goto.
    • Появление операторов «new» или «delete».
  3. Добавьте единицу к количеству условий, когда:
    • Появление условного оператора (<, >, <=, >=, ==, !=).
    • Появление следующих ключевых слов (‘еще’, ‘кейс’, ‘дефолт’, ‘?’, ‘пытаться’, ‘ловить’).
    • Возникновение унарного условного оператора.

Правила ABC для Java

Следующие правила дают количество назначений, ветвей, условных операторов в метрике ABC для Ява:

  1. Добавьте один к количеству заданий, когда:
    • Возникновение оператора присваивания (исключая объявления констант и назначения параметров по умолчанию) (=, *=, /=, %=, +=, <<=, >>=, &=, !=, ^=, >>>=).
    • Возникновение оператора инкремента или декремента (префикса или постфикса) (++, --).
  2. Добавьте один к количеству веток, когда
    • Возникновение вызова функции или вызова метода класса.
    • Появление оператора «новый».
  3. Добавьте единицу к количеству условий, когда:
    • Появление условного оператора (<, >, <=, >=, ==, !=).
    • Появление следующих ключевых слов (‘еще’, ‘кейс’, ‘дефолт’, ‘?’, ‘пытаться’, ‘ловить’).
    • Возникновение унарного условного оператора.

Приложения

[1]

Независимо от стиля кодирования

Поскольку показатель ABC основан на идее, что такие задачи, как хранение данных, ветвление и условное выполнение тестирование, этот показатель не зависит от стиля программирования пользователя.

Расчет времени проекта

Расчет баллов ABC помогает оценить количество времени, необходимое для завершения проекта. Это можно сделать, грубо оценив оценку ABC для проекта и вычислив оценку ABC программы в конкретный день. Количество времени, затрачиваемого на завершение проекта, можно получить, разделив оценку проекта ABC на оценку ABC, полученную за один день.

Расчет количества ошибок

В ошибка ставка изначально рассчитывалась как Количество ошибок / LOC. Однако LOC не является надежным показателем размера программы, потому что он зависит от стиля кодирования. Более точный способ измерения количества ошибок - подсчитать - Количество ошибок / оценка ABC.

Сравнение программ

Программы, написанные на разных языках, можно сравнивать с помощью оценок ABC, потому что в большинстве языков используются присваивания, переходы и условные выражения.

Информация о количестве отдельных параметров (количество назначений, ветвей и условий) может помочь классифицировать программу как «сильная по данным», «функциональная» или «логическая». Векторная форма оценки ABC может дать представление о принципах, лежащих в основе заявление, тогда как детали теряются в скалярной форме партитуры.

Линейная метрика

Баллы ABC линейный, поэтому любой файл, модуль, класс, функция или метод может быть оценен. Например, (векторная) оценка ABC для модуля - это сумма оценок его подмодулей. Однако скалярные оценки ABC нелинейны.

Смотрите также

Рекомендации

  1. ^ а б c d Фицпатрик, Джерри (1997). «Применение метрики ABC к C, C ++ и Java» (PDF). Отчет C ++.
  2. ^ Холстед, Морис (1977). Элементы науки о программном обеспечении. Северная Голландия: Эльзевир.
  3. ^ Фентон, Норман Э. (1991). «Метрики программного обеспечения: успехи, неудачи и новые направления» (PDF). Чепмен и Холл.
  4. ^ Китченхэм, Барбара (декабрь 1995 г.). «На пути к структуре для проверки программного обеспечения». IEEE Transactions по разработке программного обеспечения. 21 (12): 929–944. Дои:10.1109/32.489070. S2CID  8608582.
  5. ^ Фицпатрик, Джерри (2017). "Приложение". Вечные законы разработки программного обеспечения. Software Renovation Corporation. ISBN  978-0999335604.

внешняя ссылка