Детальная информация

Название: Автоматизация процесса проверки оригинальности решения задач на языке Oracle SQL: бакалаврская работа: 02.03.03
Авторы: Батырова Айгуль Рамилевна
Научный руководитель: Сабинин Олег Юрьевич
Организация: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Выходные сведения: Санкт-Петербург, 2016
Коллекция: Выпускные квалификационные работы; Общая коллекция
Тематика: Oracle; проверка работ; автоматизация; антиплагиат; automation; antiplagiat; SQL
Тип документа: Выпускная квалификационная работа бакалавра
Тип файла: PDF
Язык: Русский
Уровень высшего образования: Бакалавриат
Код специальности ФГОС: 02.03.03
Группа специальностей ФГОС: 020000 - Компьютерные и информационные науки
DOI: 10.18720/SPBPU/2/v16-1103
Права доступа: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Ключ записи: RU\SPSTU\edoc\32846

Разрешенные действия:

Действие 'Прочитать' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети Действие 'Загрузить' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети

Группа: Анонимные пользователи

Сеть: Интернет

Аннотация

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

The topic of this project refers to the intellectual data analysis. The result of the work includes program which determines the percent of matching SQL code with the certain base which contains alternative solutions for the same exercise. The area of algorithms of searching for matching text and code were examined during the course of this project. The SQL data analysis method were also developed. Besides, the structure of the program analogs were analyzed. The finished project is specialized for checking SQL exercises with consideration of SQL syntax and it's special features.

Права на использование объекта хранения

Место доступа Группа пользователей Действие
Локальная сеть ИБК СПбПУ Все Прочитать Печать Загрузить
Интернет Авторизованные пользователи СПбПУ Прочитать Печать Загрузить
-> Интернет Анонимные пользователи

Оглавление

  • ОПРЕДЕЛЕНИЯ
  •  база данных (БД) — представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть н...
  •  плагиат — это использование, перефразирование и подведение итогов работы в любой форме без подтверждения ссылками на источники и представление её как своей собственной работы;
  •  токен — объект, создающийся из лексемы в процессе лексического анализа.
  • ВВЕДЕНИЕ
  • 1 Исследование и анализ предметной области
    • 1.1 Актуальность проводимой работы
  • На сегодняшний день случаи плагиата не редкость. При высоком уровне доступности информационных технологий контролировать оригинальность кода становится все сложнее.
  • Разрабатываемое в ходе проекта программное обеспечение призвано упростить работу с курсовыми проектами на языке SQL путем автоматизации проверки на оригинальность конкретного решения из базы. Более того, приложение должно быть интегрировано для исполь...
    • 1.2 Анализ алгоритмов существующих решений
  • Уже сегодня существует множество программных средств для проверки оригинальности текста. Можно вспомнить такие системы, как DC Finder, которые анализируют тексты на естественном языке, но подойдут ли эти решения для проверки текста программ? У текстов...
  • Большинство программ, анализирующие текст кода программ, заточены под определение наиболее значимых элементов кода и игнорирование легко модифицируемых частей. Например, будет справедливо игнорировать при проверке лишние и в целом не влияющие на решен...
  • Таблица 1.2 – Сравнение существующих систем
  • Продолжение таблицы 1.2
  • В целом, разработка системы проверки на оригинальность кода сводится к следующим шагам:
  • – выбор метода представления исходного кода;
  • – выбор алгоритма анализа.
  • Эти два этапа определяют основную структуру работы программы.
    • 1.3 Основы языка SQL
  • Каждый вышеперечисленный раздел имеет назначение. Логический порядок обработки производится следующим образом [4].
  • 1. В разделе WITH указывается табличное обобщение;
  • 2. Раздел FROM позволяет производить выборку из нескольких таблиц по указываемому условию;
  • 3. Оператор PIVOT/UNPIVOT преобразует значения из столбца таблицы. Он позволяет транспонировать таблицу, разместив результаты вычисления агрегатных функций для заданных групп не в столбец, а в строку;
  • 4. CONNECT BY предназначен для внешнего объединения таблиц;
  • 5. WHERE фильтрует получаемые значения. В этом разделе можно указать ограничение;
  • 6. GROUP BY позволяет выполнить группировку данных;
  • 7. HAVING определяет условие поиска, которому должна соответствовать группа или статистическое выражение;
  • 8. MODEL дает доступ к изменению любой ячейки запроса в результирующем наборе данных;
  • 9. В разделе ORDER BY можно указать порядок вывода данных;
  • 10. DISTINCT накладывает ограничение уникальности выводимых значений;
  • 11. SELECT выполняется в последнюю очередь.
  • Язык SQL предназначен для управлениями данными в реляционных базах данных. В целом он представляет набор инструкции, функции и операторов [1].
  • Операторы этого языка можно разделить на следующие группы:
  • – Data Definition Language, язык определения данных;
  • – Data Manipulation Language, язык манипулирования данными;
  • – Transaction Control Language, язык управления транзакциями;
  • – Data Control Language, язык управления данными.
  • Помимо операторов, язык содержит множество функции. Их можно подразделить на следующие категории:
  • – общие функции (функции сравнения, функции для работы со значениями NULL);
  • – символьные (CONCAT, INITCAP, LOWER, REPLACE, TRUNCATE);
  • – числовые (MOD, ROUND, TRUNC);
  • – даты и времени (SYSDAY, LAST_DAY, MONTHS_BETWEEN);
  • – агрегатные функции (AVG, COUNT, MAX, MIN, SUM);
  • – регулярные выражения;
  • – аналитические функции.
  • Анализ исследованных данных необходим для определения семантической части работы программы.
    • 1.4 Постановка требований к программе и формирование цели
  • Целью моего проекта можно назвать создание программного обеспечения, анализирующее два исходных кода на совпадение в соответствии со следующими требованиями:
  • – программа анализирует поступающий код и выделяет его значимые элементы;
  • – остальные элементы кода, такие как названия переменных, комментарии, лишние для решения функции игнорируются;
  • – перестановка элементов кода не влияет на распознавание его как подобного;
  • – при формировании итогового заключения по конкретному решению программа оценивает вариативность решения.
  • Необходимо также отметить, что если два полученных кода имеют процент оригинальности ниже установленной пользователем нормы, то считается, что один из них имеет плагиат.
    • 1.5 Подведение итогов главы
  • В данной главе был рассмотрен вопрос актуальности проделываемой работы, а также исследование предметной области и ознакомление с ней читателя. Более того, были рассмотрены алгоритмы уже существующих на сегодня решений схожей проблемы и составлен план ...
  • Исследование предметной области (а именно, особенностей языка SQL) помогут при дальнейшем синтезировании алгоритма анализа обрабатываемого и проверяемого на оригинальность кода.
  • Были предъявлены требования к конечному продукту, на основе которых возможно дальнейшее проектирование системы в главе 3. Данные требования были поставлены в соответствии с необходимым функционалом программы, а также из практических соображений.
  • В дальнейшем подобные заключения, подводящие итоги проделанной работы, будут описаны в конце каждой главы.
  • 2 Методы обработки SQL кода
    • 2.1 Разработка метода анализа кода на языке SQL
  • В предыдущей главе был проведено изучение языка SQL. Исходя из полученных данных на этом этапе необходимо синтезировать обработки кода. Алгоритм, который в последствии будет использоваться моей программой, должен выделять наиболее значимые для решения...
  • Код каждого решение на языке SQL состоит из операторов, использование которых неизбежно. Рассматривать их как основополагающие составляющие решения бессмысленно, так как они будут встречаться в каждом решении данной задачи. Поэтому такие операторы язы...
  • Например, при проверке не стоит учитывать такие функции, как TRANSLATE, UPPER и другие, так как они не влияют на основу решения.
  • Помимо этого при реализации алгоритма проверки следует учесть, что часть программного кода может быть с легкостью помещена в раздел WITH, что делает нецелесообразным распространенные методы поиска в строке.
  • Также следует понимать, что даже одинаковые функции (например, функция REGEXP_REPLACE), принимающие на вход параметры, могут служить для различных целей в решении. Поэтому необходим анализ обрабатываемых ими данных (сравнение содержания).
    • 2.2 Оценка задач различного уровня
  • При разработке программы для задачи проверки решения на оригинальность необходимо учесть множество деталей, касающихся вариативности решения. Для примера можно рассмотреть реальные задачи.
  • Задача 1. В таблицу Специальности добавить столбец Шифр Специальности. Написать и выполнить команду, позволяющую внести в этот столбец сокращенное наименование специальности, состоящее из первых букв каждого слова названия специальности.
  • Решение первой задачи продемонстрировано на рисунке 2.1.
  • Рисунок 2.1 – Решение первой задачи на языке SQL
  • Задача 2.
  • Для произвольного целого числа определить числа, полученные перестановками цифр в числе и имеющие максимальные суммы абсолютных разностей между соседними цифрами. Например, для числа 1239 результат должен быть:
  • 3192 2913
  • Суммы абсолютных разностей равны:
  • Убедиться в работоспособности при 5, 10, 15 и 20 цифрах в числе.
  • Решение второй задачи продемонстрировано на рисунке 2.2.
  • Рисунок 2.2 – Решение второй задачи на языке SQL
  • Очевидно, что решение первой задачи не будет представлять большой сложности, однако при проверке на оригинальность обычной программой возникнет вопрос уникальности данного решения. Это легко объяснить низкой вариативностью представления решения в силу...
  • С другой стороны, как мы можем заметить в решении к задаче 2 использовано множество различных функции, играющих большую роль при обозначении способа решения. Это говорит о том, что задача имеет высокую вариативность, а значит, уровень оригинальности д...
    • 2.3 Анализ методов представления кода
  • Для разбора и анализа кода необходимо задать его нормированное представление. Существуют несколько способов это осуществить [9].
  • 1. Представление в виде исходного кода
  • Самый простой способ задания представления. При таком представлении кода программа поиска процента оригинальности будет воспринимать как обычный текст. Очевидно, что это очень плохой вариант, так как не будут учитываться все те вышеизложенные в пункте...
  • 2. Представление в виде ориентированного графа или дерева
  • Сложный способ задания кода, позволяющий находить схожие элементы, даже если был изменен порядок представления функций. Популярным является представление кода в виде b-tree. Он представляет собой структуру сбалансированного древа данных, которая соде...
  • 3. Параметризованное представление
  • Параметризованное представление кода предполагает введение системы координат n-мерного пространства. Каждая точка несет за собой обозначение различных характеристик данного решения. Такой характеристикой может служит количество функции, количество пер...
  • Такое представление имеет недостатки. Во первых, они нередко находят совпадения там, где их нет. Это происходит потому что при вычислении i-го значения получается агрегированный показатель, и вследствие теряется структура решения. Так же такой поход ...
  • Однако главный недостаток этого способа в том, что с его помощью не получится определить нахождение только части кода. Даже если рассчитывать более сложные характеристики, в конечном итоге это приведет только к усложнению алгоритма, но не к оптимизаци...
  • 4. Представление в виде токенов
  • Такой способ представления позволяет определять плагиат даже если строки были изменены или перемещены. С его помощью возможно определение строк с одинаковой функциональностью, в отличие от вышеописанных методов представления.
  • Основная идея этого представления – это сохранение существенных и игнорирование всех поверхностных (то есть легко модифицируемых) деталей кода программы. Этапы процесса токенизации можно представить следующим образом:
  • Каждому оператору языка (кроме пустого – его игнорируем), который не является операндом, приписываем код, назначенный заранее для каждого класса операторов. Также коды можно приписывать блочным операторам (например, dcl/enddcl), подключениям библио...
  • Строим строку из полученных кодов, сохраняя порядок следования их в исходном коде программы. Один символ строки (токен) – код одного оператора. Таким образом мы автоматически игнорируем названия функций и переменных (классов, объектов и так далее), р...
  • К одному классу операторов обычно относят те, который соответствует один идентификатор языка программирования, все вызовы функций, вызовы методов классов, объявления переменных элементарных типов, объявление экземпляров классов [9].
  • Разбиение операторов и токенизацию исходного кода следует осуществлять в соответствии с обрабатываемом языком программирования, что подходит для поставленной задачи.
  • Такое представление идеально удовлетворяет требованиям, которые были предъявлены к программе, так как позволяет выделить только значимые элементы кода и игнорирует неважные. Именно его я в дальнейшем использую при реализации.
    • 2.4 Подведение итогов главы
  • На основании исследований, проведенных мной в этой главе, возможно дальнейшее проектирование системы поиска совпадения кода.
  • Данная глава содержит подробный анализ наиболее распространенных методов представления кода для дальнейшей обработки. Были проанализированы недостатки и достоинства каждого из методов и на основе этих заключений удалось представить наилучший вариант д...
  • Описанный в данной главе метод обработки языка SQL позволит программе проводить интеллектуальный анализ поступающих данных, таким образом, станет доступным проверка кода на оригинальность с учетом тонкостей обрабатываемого языка.
  • Таким образом, в данной главе был проведен анализ языка SQL, составлен план обработки кода и выбран способ представления кода.
  • 3 Проектирование системы
    • 3.1 Исследование существующих алгоритмов поиска и анализ эффективности в данном контексте
  • Методы оценки сходства кода относят к атрибутивным или структурным.
  • Атрибутивные методы поиска основаны на выделении нескольких отличительных особенностей(атрибутов) кода программ и последующим сравнении полученных чисел. Они делают вывод о совпадении кода, если соответствующие атрибуты равны или близки. Такие методы ...
  • Структурные методы позволяют рассматривать программы в целом, с учетом контекста задачи, установить логические связи между элементами. Кроме того, они позволять избавиться от ненужных и лишних элементов кода, так как код приводится к токенизированному...
  • Хотя структурные методы и имеют высокую сложность в сравнении с атрибутивными методами, далее будут рассмотрены только они, так как только структурные методы позволят реализовать продукт, соответствующий поставленным требованиям.
  • Следует отметить, что для поиска в большей базе следует использовать комбинированный метод, при котором анализ кода программ происходит поэтапно. На первом этапе происходит отсев совсем не совпадающих программ при помощи атрибутивного метода, что позв...
  • Далее будут перечислены и рассмотрены методы структурного поиска, а также проанализированы достоинства и недостатки каждого из них, и в итоге выбран наиболее подходящий в контексте решаемой задачи.
  • 1) Выравнивание строк.
  • Данный метод обрабатывает две исходные строки токенизированных кодов программ, которые могут различаться по длине.
  • Метод локального выравнивания строк был разработан для определения схожести строк ДНК. Для определения схожести в исходные строки осуществляется вставка пробелов ровно до тех пор, пока не будет достигнута одинаковая длина. Возможны также и другие спос...
  • Из преимуществ можно выделить токенизированное представление кода программ, а также использование процедуры кластеризации.
  • Но на базе такого алгоритма невозможна организация базы данных, ускоряющую проверку один-против-всех.
  • 2) Алгоритм Хескела.
  • Алгоритм Хескела также обрабатывает токенизированное представление программ. Он основан на вычислении наибольшей общей последовательности двух исходных строк. Мы всегда можем найти такой элемент строки ai, что НОП строк a’ = a|a|a|a|-1...aia1...ai-1...
  • Данный алгоритм позволяет избежать такого явления, но требует несколько подходов. Также он работает за линейное время.
  • Вначале исходные строки разбиваются на подстроки. Затем осуществляется поиск полученных подстрок в исходных строках. Первыми ищутся подстроки, встречающиеся в исходных строках по одному разу. Затем проверяются на совпадение элементы строк, находящиеся...
  • Мерой совпадения кодов исходных программ может являться общая длина полученных непересекающихся подстрок.
  • Надо заметить, что в данном случае возможно совпадение токенизированного представления программ, даже при отсутствии совпадения в исходных программах. Кроме того, небольшие изменения (например, на эквивалентный оператор) будут приводить к игнорировани...
  • Из достоинств алгоритма можно отметить его линейную сложность.
  • 3) Метод отпечатков.
  • Данный метод представляет токенизированную программу в виде набора отпечатков (fingerprints). Такие наборы пересекаются для похожих программ. Такой метод эффективен при применении к базе данных.
  • Метод отпечатков представляется в виде последовательности следующих шагов [20]:
  • – хешируются подстроки фиксированной длины у исходной строки;
  • – выделяется подмножество из хэш-значений, характеризующее исходную строку. Шаг 1-2 проделываются для всех токенизированных программ и таким образом формируется хэш-таблица;
  • – при помощи этой таблицы определяются участки, в которых может совпадать код;
  • – полученные на предыдущем шаге результаты анализируются и делаются выводы. Есть и другие вариации, но метод просеивания является наилучшим.
  • Из достоинств метода надо отметить возможность организации базы данных, ускоряющую проверку один-против-всех. Также игнорируются случайно совпавшие строки кода, которые меньше пороговой длины. Кроме того, происходит игнорирование небольших участков ко...
  • 4) Метод просеивания.
  • Чтобы быть эффективнее других реализаций метода отпечатков, рассматриваемый алгоритм должен гарантировать:
  • – если у двух токенизированных программ есть общая подстрока, длиной как минимум t, то она будет найдена;
  • – общие подстроки короче шумового порога игнорируются.
  • Последний пункт гарантируется величиной специального порогового параметра. Очевидно, что первый пункт будет соблюдаться, если из каждых (t − k + 1) хэш-значений от идущих непосредственно последовательно подстрок будет выбрана хотя бы одна в качестве м...
  • Рассмотрим пример. Строке abrakadabra соответствует последовательность хеш-значений:
  • 12, 35, 78, 3, 26, 48, 55, 12, 35
  • Пусть k = 2,t = 4 ⇒ w = (t ̆k + 1) = 3
  • Выпишем последовательно содержание окон, полученных алгоритмом, жирным шрифтом выделены те хэш-значения, которые мы будем назначать метками:
  • (12, 35, 78), (35, 78, 3), (78, 3, 26), (3, 26, 48), (26, 48, 55), (48, 55, 12), (55, 12, 35)
  • Заметим, что если в двух последовательных окнах хэш-значения от одной и той же подстроки являются минимальными, то меткой назначается только одна из них (нет смысла хранить две последовательные абсолютно одинаковые метки), поэтому получим такой набор...
  • 12, 3, 26, 12
  • Нужно отметить насколько компактен набор идентификационных меток строки.
  • Показателем эффективности алгоритма может служить плотность d – доля хэш-значений, выбранных алгоритмом в качестве меток, среди всех хэш-значений документа. Для метода просеивания:
  • d=2, w+1
  • Некоторые другие реализации метода отпечатков тоже могут быть изменены так, чтобы соблюдались описанные выше требования, но их d в этом случае будет значительно выше, полученного для метода просеивания.
  • Как мы видим, выбор метки определяется только содержимым окна, такой алгоритм называется локальным. Любой локальный алгоритм выбора меток корректен. Действительно, если в двух файлах есть достаточно большая общая подстрока, то будут и одинаковые окна...
  • Достоинства метода:
  • – можно организовать базу данных, ускоряющую проверку один-против-всех
  • – преимущества токенизированного представления
  • – общие подстроки, меньше пороговой длины игнорируются, поэтому алгоритм не принимает в расчет малые случайно совпавшие участки кода
  • При разбиении совпавшего участка кода на две и более части вставкой одного-нескольких блоков или одиночных операторов, а также перестановкой небольшого количества независимых операторов, функция схожести слабо изменяется. (Длина совпадения должна быт...
  • Алгоритм нечувствителен к перестановкам больших фрагментов кода. Недостатки:
  • – возможность совпадения токенизированного представления программ, но отсутствия совпадения в исходных кодах программ.
  • – разбиение совпадения на блоки, вставкой или заменой оператора на похожий (например, for на while), каждый длиной меньше k, ведет к полному игнорированию совпадения [9].
  • 5) Жадное строковое замощение.
  • Алгоритм получения жадного строкового замощения (The Greedy String Tiling) обрабатывает исходные строки в соответствии с определенным алфавитом, который в данном случае представляет собой множество токенов. В результате он предоставляет набор их общих...
  • Он имеет ряд преимуществ:
  • – алгоритм не принимает во внимание случайно совпавшие участки кода, так как имеет минимальную длину проверяемой подстроки
  • – обладает преимуществом токенизированного представления исходного кода программ
  • – при перестановке больших участков кода алгоритм находит совпадение
  • – функция, по которой измеряется схожесть строк, не изменяется от вставки в совпавший код блоков одиночных операторов либо перестановки операторов
  • Однако представленный алгоритм имеет недостатки.
  • Например, возможно совпадение токенизированного представления программ, даже при отсутствии совпадения в исходных программах.
  • Невозможно организовать базу данных, ускоряющую проверку один-против-всех.
  • Также происходит игнорирование небольших участков кода, чего можно добиться разбиением больших участком похожими операторами на меньшие. Совпадения, длиной меньшей, чем заданная, будут проигнорированы.
  • 6) Использование расстояний Левенштейна для поиска совпадения.
  • Одним из наиболее распространенных на сегодняшний день алгоритмов анализа совпадения текста является подсчет расстояний (дистанций) Левенштейна. Отличительной особенностью данного алгоритма является определение им минимального количества операций вста...
  • Из его преимуществ надо отметить, что небольшие изменения в коде программы не повлияют на обнаружение совпадения. Помимо этого, алгоритм выполняется за линейное время [5].
    • 3.2 Сравнение методов хранения данных
  • Материалы, используемыми для проверки задачи расположены в определенной директории. На вход к программе поступает адрес расположения файлов в системе. Сама папка должна быть организована следующим образом: внутри она хранит отсортированные по номерам...
  • Альтернативой подобному хранению является организация файлов в реляционной базе данных. База данных позволяет организовать совместный доступ к файлам данных, но это не требуется для корректной работы реализуемого приложения. Несмотря на то, что упроща...
    • 3.3 Выбор инструментария
  • Для реализации приложения был выбран язык программирования C#. Данный язык имеет ряд преимуществ в сравнений с другими, так как имеет высокую скорость разработки, что подходит для небольших проектов. Также он имеет множество библиотек с .net и свободн...
  • Разработка приложения осуществлялась в среде Visual Studio, так как она позволяет создавать удобный пользовательский интерфейс. Среда Visual Studio позволяет создавать как консольные приложения, так и графические приложения с Windows Forms, что обеспе...
    • 3.4 Подведение итогов главы
  • В данной главе были проанализированы существующие методы поиска и анализа токенизированного представления кода, выявлены их преимущества и недостатки, и на основании этих выводов был выбран наиболее подходящий.
  • Также был определен метод хранения имеющейся информации.
  • На основании проведенного исследования я пришла к выводу, что наиболее целесообразно представить хранение в виде файловой системы, в которой решенные задачи будут под установленным идентификатором.
  • Было принято решения использовать для реализации язык программирования C#, так как он может владеет требуемыми библиотеками, и позволяет повысить скорость разработки для малых проектов.
  • 4 Этапы реализации ПО
    • 4.1 Пользовательский интерфейс
  • В предыдущих главах уже был определен необходимый функционал приложения. Можно сделать заключение, что пользовательский интерфейс приложения должен содержать элементы, обеспечивающие следующий функционал:
  • – ввод пользователем расположения директории базы задач;
  • – ввод пользователем пути к проверяемому файлу с задачей;
  • – регулировка сложности задач для последующего вывода о допустимом уровне совпадения.
  • На выходе приложение выдает результат, основываясь на показателе сложности задаче и проценте совпавшего токенизированного представления кода сравниваемых программ.
  • Также необходимо указать, в каких именно задачах было найдено совпадение, превышающее возможный уровень.
  • На рисунке 4.1 отображен интерфейс пользовательского приложения.
  • Рисунок 4.1 – Интерфейс пользовательского приложения
  • Помимо этого добавлена возможность редактировать списки основных функций, оказывающих влияние на решение. Пользователь приложения теперь сможет сам непосредственно выбирать важные для анализа функции. Файл с именованным списком этих функции всегда ра...
    • 4.2 Практическая реализация
  • В предыдущих главах уже был определен примерный необходимый функционал приложения
  • Основной код программы состоит из нескольких методов. Ее структуру можно описать следующей последовательностью [13]:
  • – исходный текст проверяемой программы преобразуется в токенизированное представление
  • – полученное представление обрабатывает основной алгоритм программы
  • – получаемые выходные данные обрабатываются в основном модуле и формируется итоговое решение
  • Метод GetToken преобразует исходную кодовую строку в токенизированное представление.
  • Метод Compute реализует алгоритм, использующий расстояния Левенштейна для подсчета разницы между входящими строками, которые были предварительно выравнены.
  • Также существует метод для обработки вложенных функций и их содержания.
  • Для наиболее эффективной работы приложения можно использовать библиотеку TPL (Task Parallel Library). С ее помощью возможно представить параллельное выполнение элементов программы, а именно поиск совпадения. Данное сравнение можно осуществлять в разли...
  • Для этого можно модифицировать фрагмент кода, в котором происходит реализация цикла, в котором выполняется вызов метода Compute, используя цикл Parallel.For.
  • В приложении 1 представлен код полученной программы.
    • 4.3 Апробация приложения и подведение итогов
  • В ходе работы удалось реализовать все поставленные требования к приложению. Полученная программа успешно выделяет лексемы языка SQL в соответствии с определенными правилами, которые были установлены во второй главе. Также она способна отличить две под...
  • Приложение доказало свою работоспособность на реальных решениях из курсовых работ студентов второго курса. Для двух следующих задач было определено 1,3 процента совпадения, что является достоверным заключением.
  • Решение 1
  • SELECT DISTINCT П1.фамилия, П1.подчиняется
  • FROM преподаватели П1 JOIN преподаватели П2
  • ON П1. подчиняется =П2. подчиняется AND П1.номер_преподавателя<>П2. номер_преподавателя;
  • Решение 2
  • ALTER TABLE специальности
  • ADD (шифр NVARCHAR2(12));
  • UPDATE специальности
  • SET ШИФР=regexp_replace((regexp_replace(название_специальности,'([^ ])[^ ]+', '\1')),' ','');
  • Программа выполняется за линейное количество времени. Сравнение токенизированных программ происходит в параллельных потоках, что также способствует быстродействию приложения.
  • Был реализован интерфейс взаимодействия с пользователем, а именно была добавлена возможность указания расположения директории файловой системы, выбор проверяемой задачи и установления уровня допустимого совпадения задачи.
  • Полученное приложение было протестировано на реальных решениях из курсовых работ и показало ожидаемые результаты.
  • Результаты апробации можно посмотреть в приложении 2.
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • 3. Кнут Д. Исскуство программитования для ЭВМ. Т. 1. Основные алгоритмы. – М.: Мир, 1976.
  • 4. О. Ю. Сабинин, Н. В. Андреева. Базы данных. Практикум. Часть 2. ORACLE SQL, 2013
  • ПРИЛОЖЕНИЕ 1
  • ПРИЛОЖЕНИЕ 2

Статистика использования

stat Количество обращений: 581
За последние 30 дней: 0
Подробная статистика