Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст диплома магистра - 12 июня 2014.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
4.87 Mб
Скачать

5.1.2 Основной структурный метод для анализа исходных кодов

Если представить две программы в виде строк токенов, то одним из критериев сходства строк считается длина их наибольшей общей последовательности. Сравнение проводится следующим образом. Первый оператор одной последовательности токенов (из базы сданных работ) сравнивается с последним оператором другой последовательности (проверяемого кода). Если операторы одинаковы, то счетчик совпадений увеличивается на единицу. Далее первая последовательность сдвигается и снова происходит поэлементное сравнение (рисунок 10).

Рисунок 10 Первый этап поиска одинаковой последовательности операторов

Этот процесс продолжается до тех пор, пока не будет сравнен первый оператор второй последовательности с последним оператором первой (рисунок 11).

Рисунок 11 Второй этап поиска одинаковой последовательности операторов

Для каждой итерации запоминается счетчик совпадений и длина непрерывного участка совпавших операторов, другими словами длина списанного фрагмента кода программы.

Полученная информация изображается в виде гистограммы для каждого файла в базе сданных работ, на абсциссе которой откладывается величина смещения одной последовательности операторов относительно другой, а на ординате – количество совпадений операторов при таком смещении (рисунок 12).

Рисунок 12 Гистограмма результатов поиска одинаковой последовательности операторов

Пик, наблюдаемый на рисунке, возник из-за того, что в этих программах встречаются одинаковые фрагменты. Для «основных» пиков на графике выводится на экран код проверяемой программы и уже сданной работы из базы с выделенными фрагментами, соответствующими пику. Признать такое заимствование плагиатом или нет, решает преподаватель, основываясь на величине фрагмента, его роли в программе, схожести стиля программирования.

5.1.2.1 Достоинства и недостатки

Основными достоинствами является большая устойчивость алгоритма к самым распространенным среди студентов способам сокрытия плагиата – добавлению комментариев, переименование переменных, процедур и функций, добавлению/удалению некоторых операторов. Другим важным достоинством данного метода является возможность применения данного метода к очень широкому кругу языков программирования, ведь метод рассматривает программу только как последовательность номеров операторов в базе языка программирования. Так же применение именно этого метода позволяет восстанавливать совпадающие участки кода исследуемых программ, что дает возможность преподавателю убедиться в том, что работа списана.

Недостатки – возможность совпадения токенизированного представления программ, но отсутствия совпадения в исходных кодах программ, правда, вероятность этого крайне мала. Второй недостаток – нелинейная зависимость времени обработки, от длины программы, однако программа предназначена для анализа студенческих работ, которые редко бывают большого объема.

5.1.3 Дополнительный атрибутный метод для исходных текстов

В связи с тем, что некоторые лабораторные классы нашего института не могут похвастаться высокопроизводительными персональными компьютерами, было принято решение добавить менее требовательный к ресурсам метод.

Как и в первом методе, программы представляются в виде строк токенов. Далее анализируются частоты появления операторов программе. Частота определяется как количество появлений конкретного оператора, деленное на количество появлений всех операторов. Частоты отображаются в виде гистограммы. На абсциссе отложены порядковые номера операторов, а на ординате – частоты появлений этих операторов (рисунок 13). Идея такого способа идентификации плагиата опубликована в работе [10].

Рисунок 13 Диаграмма частотного анализа операторов

По такой гистограмме можно судить о количестве циклов, условных операторов и арифметических операций в каждой из программ. Например, пики, наблюдаемые в районе 60-63 соответствуют арифметическим операторам “:=”, “+” и “-” соответственно. Очевидно, что в обоих кодах используется большое количество таких операторов и частоты их появления примерно равны.

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