
- •Внешнее описание программного средства
- •Определение требований к программному средству
- •Спецификация качества программного средства
- •Функциональная спецификация программного средства
- •Методы контроля внешнего описания пс
- •Архитектура программного средства
- •Разработка структуры программы и модульное программирование
- •Методы разработки структуры программы
- •Контроль структуры программы
- •Разработка программного модуля
- •Структурное программирование
- •Пошаговая детализация
- •Контроль программного модуля
- •Тестирование и отладка программного средства
- •Автономная отладка модуля
- •Расчет метрик Холстеда
Расчет метрик Холстеда
Цель работы: расчет количественных характеристик
Решает следующие задачи:
-
Предсказание условий, необходимых для программирования
-
Определение норм первоначальных ошибок
-
Количественная оценка языков программирования и эффекта модульности
-
Обоснование различий между программами, написанных программистами разного уровня
В основе лежит следующая концепция – все программы состоят из операторов и операндов. Операнды – переменные или константы. Операторы – комбинации символов, влияющие на значение и порядок операндов (например, 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 это количество ошибок, оставшихся после отладки модуля.