Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[2 курс] Программная инженерия.docx
Скачиваний:
9
Добавлен:
20.08.2020
Размер:
47.85 Кб
Скачать

Расчет метрик Холстеда

Цель работы: расчет количественных характеристик

Решает следующие задачи:

  • Предсказание условий, необходимых для программирования

  • Определение норм первоначальных ошибок

  • Количественная оценка языков программирования и эффекта модульности

  • Обоснование различий между программами, написанных программистами разного уровня

В основе лежит следующая концепция – все программы состоят из операторов и операндов. Операнды – переменные или константы. Операторы – комбинации символов, влияющие на значение и порядок операндов (например, a = b + c;).

Для расчета необходимо просчитать следующие значения:

n1 – число различных операторов данной реализации

n2 – число различных операндов модуля

N1 – общее число всех операторов

N2 – общее число всех операндов

n2* – число различных входных и выходных операндов

n = n1 + n2 – величина словаря

N = N1 + N2 – длина модуля

  1. Длина программы (N’ = n1 * log2(n1) + n2 * log2(n2))

Если имеется несколько модулей, то для каждого модуля высчитывается среднее значение n1 и n2.

  1. Объем программы (V = N * log2(n))

  2. Потенциальный объем (V* = (2 + n2*) * log2(2 + n2*))

  3. Граничный объем (V** = (2 + (n2*) * log2(n2*)) * log2(n2 + n2*)

  4. Соотношение между операциями и операндами (А = n2* / (n2* + 2) * log2(n2* / 2)

    1. Частота использования операндов (B = n2* - 2 * A)

  1. Уровень программ (L = V* / V)

Альтернативное определение уровня (L’ = (n1*) * n2 / (n1 * N2), где n1* = 2

  1. Интеллектуальное содержание (I = L’ * V)

I – мера того, сколько было сказано в программе, и зависит от сложности задачи

Пограничное значение (I = [11 … 13]), если I < 11 – программа считается простой

I > 13 – программа считается сложной

  1. Работа по программированию (E = V / L, либо E = V2 / V*)

E – число элементарных умственных различений необходимых для …

  1. Разрешенное время программирования (T’ = E / S, измеряется в секундах), S – постоянная Страуда (18 момент / с), где момент – время, требуемое мозгу для выполнения различений

  2. Уровень языка – определяет производительность языка программирования (A = L * L * V)

  3. Уравнение ошибок – число переданных ошибок программе (B = V / E0), где E0 = (V*)3 * A2 это количество ошибок, оставшихся после отладки модуля.