Jump to content

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

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

Оценка ABC представлена ​​трехмерным вектором <Назначения (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 условных операторов. В целях стандартизации значения следует заключать в угловые скобки и записывать в том же порядке, согласно обозначениям ⟨A, B, C⟩ .

Зачастую удобнее сравнивать размеры исходного кода, используя скалярное значение. Отдельные значения 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. Добавьте единицу к количеству ветвей, если:
    • Возникновение вызова функции или вызова метода класса.
    • Появление любого оператора перехода, цель которого находится на более глубоком уровне вложенности, чем уровень перехода.
    • Появление операторов «нового» или «удаления».
  3. Добавьте единицу к количеству условий, если:
    • Появление условного оператора ( <, >, <=, >=, ==, != ).
    • Появление следующих ключевых слов (' else ', ' case ', ' default ', ' ? ', ' try ', ' catch ').
    • Появление унарного условного оператора.

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

[ редактировать ]

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

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

Приложения

[ редактировать ]

[1]

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

[ редактировать ]

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

Оценка времени проекта

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с д Фитцпатрик, Джерри (1997). «Применение метрики ABC к C, C++ и Java» (PDF) . Отчет С++ .
  2. ^ Холстед, Морис (1977). Элементы науки о программном обеспечении . Северная Голландия: Эльзевир.
  3. ^ Фентон, Норман Э. (1991). «Метрики программного обеспечения: успехи, неудачи и новые направления» (PDF) . Чепмен и Холл .
  4. ^ Китченхэм, Барбара (декабрь 1995 г.). «На пути к системе валидации измерений программного обеспечения». Транзакции IEEE по разработке программного обеспечения . 21 (12): 929–944. дои : 10.1109/32.489070 . S2CID   8608582 .
  5. ^ Фитцпатрик, Джерри (2017). «Приложение А». Вечные законы разработки программного обеспечения . Корпорация обновления программного обеспечения. ISBN  978-0999335604 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c26c10917537e3ac593a43b5464a7437__1707364560
URL1:https://arc.ask3.ru/arc/aa/c2/37/c26c10917537e3ac593a43b5464a7437.html
Заголовок, (Title) документа по адресу, URL1:
ABC Software Metric - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)