93b5fa60eb7ce0c4f2edf015c89a72a5.ppt
- Количество слайдов: 18
Обзор алгоритмов и детекторов обнаружения плагиата в исходных кодах программ Ю. Лифшиц А. Котов Е. Лысенко Д. Антипов О. Евтифеева А. Красс М. Лакунин А. Семенников Р. Счастливцев Санкт-Петербург, 2006
План обзора n n n Постановка задачи Обзор алгоритмов Тестирование детекторов Направления для дальнейшей работы Project summary
Определение плагиата n n Для нас плагиат – это непосредственное использование чужого кода в своём. Часть одной программы является плагиатом части другой программы, если она была получена из нее копированием с последующим незначительным изменением кода: n случайные вставки в код; n перегруппировка методов; n переименование переменных; n рефакторинг кода.
Общая схема поиска плагиата Исходная программа Текст Парсер Представление Основной алгоритм Выходные данные Метрика Вывод Переходим из модели с большим количеством избыточной информации к более компактной
Представления исходного кода n n n Исходный код программы Параметрическое представление Токенизированное представление while (i <= s. top()) { printf(“%d”, s[i]); s[i] = s[i + 1]; i++; } n BEGINWHILE APPLY ASSIGN ENDWHILE В виде дерева или ориентированного графа
Основные ветви развития n n Атрибутно-подсчётные методы Структурные методы n Строковое выравнивание n Жадное строковое замощение n Применение суффиксных деревьев/массивов n Использование приближения Колмогоровской сложности n Сравнение AST-представлений программ Сигнатурные методы или методы отпечатков Гибридные методы
Сигнатурные методы (метод отпечатков) 1. 2. 3. 4. 5. Хэшируем все подстроки токенизированной программы P фиксированной длины. Выделяем некоторое подмножество их хэшзначений, хорошо характеризующее P. Проделываем те же шаги для токенизированных программ T 1, T 2 … Tn и помещаем выбранные хэшзначения в базу. С помощью хэш-таблицы (базы) получаем набор участков строки P, подозрительных на плагиат. Анализируем результат и делаем выводы.
Детекторы плагиата Детектор Языки Модель Алгоритм Accuse Fortran n-мерное пространство аттрибутно-подсчитывающий метод SIM C, Java, Pascal, Modula-2, Miranda токены поиск по матрице совпадений подстрок JPlag C/C++, Java, Scheme токены жадное строковое замощение MOSS C/C++, C#, Java, a 8086 assembly и др. сигнатура кода метод отпечатков Plague Pascal, Modula-2, Prolog токены набор метрик, одна из них – вариация НОП Sherlock Pascal и др. текст, токены аналог Plague, нейросеть Plan-X SML XML формат использоване XMLStore SID С++, Java токены вычисление метрики на основе Колмогоровской сложности
Тестирование бесплатных детекторов n n Доступность: n SIM – работает всегда, так как это не online-сервис n JPlag – никаких претензий n MOSS – иногда сервер может быть недоступен n SID – может не работать долгое время Скорость тестирования: n MOSS, SIM – почти мгновенно n JPlag – порядка 10 секунд на тест n SID – среднее ожидание времени ответа - 10 минут
Сравнительная характеристика Детектор Регистрация Прог. требования Автоматизация Представл. рез-тов Языки JPlag запрос, разрешение администратора JRE, web-браузер нет окно с фреймами средний диапазон MOSS письмо с запросом Perl, web-браузер да окно с фреймами широкий диапазон SID заполнить форму zip-архиватор, web-браузер да окно с фреймами узкий диапазон SIM - - да stdout средний диапазон
Принципы оценки результатов тестирования n n n проектов участвует в тесте n * (n – 1) / 2 пар проектов нужно проверить на наличие плагиата g пар проектов действительно содержат плагиат f пар проектов с плагиатом обнаружил детектор t из f обнаруженных пар действительно содержат плагиат
Тестовая коллекция Коллекция Язык Тип Количество файлов Test. Set_simple. zip (2 Kb) Java естественный 2 Test. Set_spbolymp. zip (177 Kb) C++ естественный 196 Test. Set_SID. zip (653 Kb) Java искусственный 86 Test. Set_FTP. zip (637 Kb) C++ естественный 5(170)
Результаты тестирования Test. Set_spbolymp. zip Тест Файлов Ср. SID размер MOSS JPlag SIM Комментарии Summer 2004 Set_day 28 Test. B 5 3 Kb 4% - 14. 0 % 42% SIM неоправданно подозрителен SPB 2005 Test. C 7 1 Kb 11% - - 60% false positive Team. SPB 2003 -Test. F 3 2 Kb 80% 99% и 100% 96% плагиат
Результаты тестирования Test. Set_SID. zip Тест Файлов Ср. Разм. SID (%) MOSS, % JPlag, % SIM, % 1/100 2 3 Kb 82 79 и 78 99. 3 100 2/100 2 3 Kb 79 79 и 77 98. 7 97 10/100 2 3 Kb 66 62 и 55 92. 7 77 20/100 2 3 Kb 53 40 и 32 40. 3 57 50/100 2 4 Kb 31 6 и 3 24. 7 5 1/1100 2 41 Kb 98 98 и 98 99. 9 99 2/1100 2 42 Kb 98 98 и 97 99. 9 100 10/1100 2 42 Kb 97 97 и 95 99. 2 99 270/1100 2 42 Kb 92 96 и 93 98. 6 99 180/1100 2 43 Kb 79 84 и 74 90. 4 93 400/1100 2 52 Kb 15 5 и 3 12. 7 8 400/1100 2 49 Kb 40 19 и 12 25. 1 27 200/1100 2 46 Kb 63 43 и 33 58. 4 64
Качество обнаружения плагиата n n MOSS, JPlag, SID – хорошее; SID – лучше устойчив к вставкам одиночных операторов в код, но хуже реагирует на другие методы сокрытия плагиата; SIM – слишком подозрителен на коротких программах; SID, JPlag – парсер C-файлов не переваривает корректную строку while (c=='x. D').
Возможные направления для улучшения обзора n n Протестировать Clone. DR, Palamida IP Amplifier и Black Duck protex. IP, выяснить достоинства и недостатки Code. Rank. TM. Рассмотреть применение детекторов в индустрии создания ПО. Провести более глубокое тестирование с применением обфускаторов, нейросетей, более тонкой настройкой алгоритмов и т. д. Исследовать применение кластеризации для различных баз и алгоритмов.
Возможные направления для исследований n n n Подобрать более близкое приближение Колмогоровской сложности. Получить хэш-функцию, удовлетворяющую требованиям алгоритма сравнения AST-представлений Рассмотреть идею поиска плагиата в исполняемом коде. Изучить применение стандартных алгоритмов определения авторства к нашей задаче. Написать свой детектор плагиата, учтя все недостатки, существующих продуктов.
Project summary n n Проект выполнен в рамках программы по сотрудничеству Intel™ с ВУЗами Санкт-Петербурга; 9 человек работали над проектом в период с 15. 01. 2006 по 18. 04. 2006; Сайт проекта – http: //detector. spb. su, построен на базе технологии коллективной разработки Wi. Ki. Основной результат проекта – обзор алгоритмов и детекторов.
93b5fa60eb7ce0c4f2edf015c89a72a5.ppt