Цель работы: расчет количественных характеристик
Решает следующие задачи:
Предсказание условий, необходимых для программирования
Определение норм первоначальных ошибок
Количественная оценка языков программирования и эффекта модульности
Обоснование различий между программами, написанных программистами разного уровня
В основе лежит следующая концепция – все программы состоят из операторов и операндов. Операнды – переменные или константы. Операторы – комбинации символов, влияющие на значение и порядок операндов (например, a = b + c;).
Для расчета необходимо просчитать следующие значения:
n1 – число различных операторов данной реализации
n2 – число различных операндов модуля
N1 – общее число всех операторов
N2 – общее число всех операндов
n2* – число различных входных и выходных операндов
n = n1 + n2 – величина словаря
N = N1 + N2 – длина модуля
Длина программы (N’ = n1 * log2(n1) + n2 * log2(n2))
Если имеется несколько модулей, то для каждого модуля высчитывается среднее значение n1 и n2.
Объем программы (V = N * log2(n))
Потенциальный объем (V* = (2 + n2*) * log2(2 + n2*))
Граничный объем (V** = (2 + (n2*) * log2(n2*)) * log2(n2 + n2*)
Соотношение между операциями и операндами (А = n2* / (n2* + 2) * log2(n2* / 2)
Частота использования операндов (B = n2* - 2 * A)
Уровень программ (L = V* / V)
Альтернативное определение уровня (L’ = (n1*) * n2 / (n1 * N2), где n1* = 2
Интеллектуальное содержание (I = L’ * V)
I – мера того, сколько было сказано в программе, и зависит от сложности задачи
Пограничное значение (I = [11 … 13]), если I < 11 – программа считается простой
I > 13 – программа считается сложной
Работа по программированию (E = V / L, либо E = V2 / V*)
E – число элементарных умственных различений необходимых для …
Разрешенное время программирования (T’ = E / S, измеряется в секундах), S – постоянная Страуда (18 момент / с), где момент – время, требуемое мозгу для выполнения различений
Уровень языка – определяет производительность языка программирования (A = L * L * V)
Уравнение ошибок – число переданных ошибок программе (B = V / E0), где E0 = (V*)3 * A2 это количество ошибок, оставшихся после отладки модуля.