Анализ защищенности программного обеспечения
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
личество вершин в УГП.
Для структурированной программы характерна простая структура УГП (дерево).
Сложность программы по Маккейбу (цикломатическое число СДП программы, или модуля) оценивается по следующей формуле:
где: - число дуг в графе логической структуры модуля (СДП);
- число вершин в графе.
Цикломатическое число численно равно минимальному количеству тестовых путей, необходимых для покрытия каждой дуги графа логической структуры модуля хотя бы один раз. Этот показатель может быть использован также для оценки сложности и трудоемкости тестирования ПО.
Метрика Маккейба исследована в современных работах. Например, в [20] сложность программы оценивается по количеству тестов, необходимых для покрытия всего УГП программы. В построенном УГП программы выделяются вычислительные траектории (ВТ), т.е. полная последовательность всех операторов со значениями их операндов и вычислительные пути, т.е. совокупность всех ВТ, имеющих идентичную последовательность одних и тех же операторов. Вводится понятие неизбыточного теста программы - такого теста И, что существует покрытая им вычислительная траектория в УГП, не покрытая ни одним из предыдущих тестов. Тогда, сложность программы измеряется как трудоемкость тестирования, или минимальное число неизбыточных тестов, покрывающие все вычислительные траектории УГП. Существуют также автоматизированные системы, позволяющие строить УГП и оценивать количество тестов, необходимых для полного покрытия данного УГП, и, таким образом, автоматически оценивать сложность ПО. Недостатком таких автоматизированных систем является следующее. По мере увеличения сложности оцениваемого ПО количество вычислительных ресурсов, необходимых для работы автоматизированной системы, резко возрастает из-за резкого увеличения количества вычислительных траекторий в УГП.
Существуют усовершенствованные метрики, основанные на метрике Маккейба, например, метрика Майерса[21].
в) Метрика Джилба.
Метрика Джилба [16] оценивает сложность программы. Она основана на подсчете количества условных конструкций типа и, несмотря на простоту, дает хорошие результаты. В работе [16] эта метрика дополнена учетом максимального уровня вложенности базовых структурных конструкций (следование, условие, цикл).
Метрики сложности потока данных связывают сложность ПО со сложностью структуры потоков данных, передаваемых в процессе работе оцениваемого ПО. Сложность потока данных может оцениваться различными методами.
Проанализируем эти методы.
Метрика модуль - глобальная переменная оценивает сложность программы, связывает сложность программ с обращениями к глобальным переменным.
Метрика со спеном оценивает сложность программы. Спен - это число утверждений, содержащих данный идентификатор между его первым и последним появлением в программе. Таким образом, данная метрика связывает количество переменных в программе и количество обращений к ним со сложностью самой программы.
г) Метрика Чепина [19] оценивает сложность программы. В данной метрике все переменные разбиваются на четыре класса по характеру использования - переменные, используемые для расчета, модифицируемые или создаваемые внутри программы, управляющие и паразитные. Далее по формуле вычисляется значение метрики. Существуют несколько вариантов этой метрики. Рассмотрим более простой, а с точки зрения практического использования - достаточно эффективный вариант этой метрики.
Все множество переменных, составляющих список ввода-вывода, разбивается на четыре функциональные группы.
.Множество - вводимые переменные для расчетов и для обеспечения вывода. Примером может служить используемая в программах лексического анализатора переменная, содержащая строку исходного текста программы, то есть сама переменная не модифицируется, а только содержит исходную информацию.
.Множество - модифицируемые или создаваемые внутри программы переменные.
.Множество - переменные, участвующие в управлении работой программного модуля (управляющие переменные).
.Множество - не используемые в программе (паразитные) переменные. Поскольку каждая переменная может выполнять одновременно несколько функций, необходимо учитывать ее в каждой соответствующей функциональной группе.
Далее вводится значение метрики Чепина:
где: - весовые коэффициенты.
Весовые коэффициенты использованы для отражения различного влияния на сложность программы каждой функциональной группы. По мнению автора метрики наибольший вес, равный трем, имеет функциональная группа С, так как она влияет на поток управления программы. Весовые коэффициенты остальных групп распределяются следующим образом: ; ; ; . Весовой коэффициент группы T не равен нулю, поскольку паразитные переменные не увеличивают сложности потока данных программы, но иногда затрудняют ее понимание. С учетом весовых коэффициентов выражение примет вид:
Структурность
Структурность ПО - это организация всех взаимосвязанных частей ПО в единое целое с использованием логических структур следование, условие, цикл. Основы структурной технологии проектирования ПО изложены в работе [22]. Необходимость оценки данного показателя связана с тем, что от структурности ПО напрямую зависит удобство сопровождения и модификации ПО. Кроме того, при строгом соблюден