Програмна система оцінки плагіату програмного коду
Вивчення існуючих систем по виявленню плагіату. Алгоритм створення системи для виявлення плагіату, в базі якої будуть зберігатися всі лабораторні роботи студентів. Проектування програми: побудова uml-діаграм, видалення коментарів в коді, опис архітектури.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 09.06.2012 |
Размер файла | 4,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
КОНЦЕПЦІЯ ПРОЕКТУ І ОБЛАСТЬ ЗАСТОСУВАННЯ
Бачення
Основна мета проекту: створити систему оцінки плагіату коду з метою поліпшення праці викладачів вузів, тим, що перевірка на запозичення коду у інших студентів буде автоматизована.
Аналіз переваг
Дане рішення має надати переваги для навчальних закладів:
- викладачі автоматизують перевірку лабораторних або курсових робот студентів;
- поліпшення знань в сфері програмування студентів;
- буде сформована база з усіма роботами студентів.
Критерії оцінки
Проект продовжує розроблятися відповідно поставленої схеми розвитку. На даній стадій проект вже готов для запуску в експлуатацію в навчальні заклади. Для подальшого вдосконалення проекту треба запустити проект в експлуатацію та вислухати зауваження користувачів.
Проблеми заявлені замовником
На даній стадії система перевірки на плагіату повністю влаштовує замовника.
Вимоги
У наступних розділах розглядаються вимоги високого рівня для доказу рентабельності концепції проекту щодо впровадження її на використання в навчальних закладах. Кожен розділ описує різні аспекти вимог, наприклад, бізнес-вимоги, технічні вимоги, експлуатаційні вимоги і т.д.
Дизайн програми виского рівня. Архітектурне проектування високого рівня
Програмна система написана на мові програмування Java. В цій системі є декілька модулів. Перший модуль відповідає за перевід коду в токенізованний вид. В ньому передбачається видалення коментарів та побудова токенів. Других модуль відновідає за пошук плагіату, на виході який повертає інформацію для третього модулю, який відповідає за побудову звіту.
Технічне проектування високого рівня
Дана система розроблена у середовищі програмування Elipse. Дані по операторам мов програмування зберігаються в форматі XML.
Клієнт і профілі користувачів
В даній системі існують 2 види користувачів. Це викладачі та адміністратори. Викладач тільки використовує систему,а адміністратор має змогу добавити нову мову програмування в систему, а також обновити базу накопичених робіт.
Сценарії використання
Викладач вибирає адресу до кодів студента. Потім вибирає алгоритм і мову на якому написаний код програми. Натискає кнопку старт і програма створить звіт з перевірки, який викладач може подивитися в кількох варіантах.
Структура проекту. Ролі у команді та обов'язки
Таблиця 3.1 - Ролі у команді та обов'язки
Роль |
Iм'я |
Вміння |
Обов'язки |
|
Product Manager |
Шатовська Т.Б. |
Знання предметної області, гарні навички комунікації |
Постановка задачі, управління проекту |
|
Development |
Кононов Ілля |
Навички програмування, швидке рішення поставленої задачі |
Розробка системи та тестування |
Участь зацікавлених сторін
У проекті візьмуть участь кілька зацікавлених сторін на двох рівнях у рамках керівного комітету і в ході виконання проекту в якості учасників на доказ концепції. Керівний комітет складатиметься з наступних учасників:
Таблиця 3.2 - Участь зацікавлених сторін
Iм'я / посада або титул |
Представництво Організації / Розділ |
Роль у проекті |
|
Шатовська Т.Б. |
ХНУРЕ |
Product Manager |
|
Кононов І.О. |
ХНУРЕ |
Development Lead |
Графік реалізації проекту
Таблиця 3.3 - Графік реалізації проекту
Номер |
Назва етапів дипломної роботи |
Термін виконання етапів проекту (роботи) |
Примітка |
|
1 |
Аналіз предметної області |
10-02-11 |
виконано |
|
2 |
Розробка структури програми |
16-02-11 |
виконано |
|
3 |
Створення коду інтерфейсу |
01-03-11 |
виконано |
|
4 |
Створення коду програми |
23-03-11 |
виконано |
|
5 |
Тестування системи |
14-04-11 |
виконано |
|
6 |
Створення пояснювальної записки |
25-04-11 |
виконано |
|
7 |
Підготовка презентації та доповіді |
08-05-11 |
виконано |
|
8 |
Попередній захист |
06-06-11 |
виконано |
|
9 |
Занесення диплома в електронний архів |
14-06-11 |
виконано |
|
10 |
Допуск до захисту у зав. кафедри |
14-06-11 |
виконано |
|
11 |
Захист |
16-06-11 |
Проект ресурсозабезпечення та витрати
У наступній таблиці наведений розрахований час схема витрат на проект (травень 2011 року):
Таблиця 3.4 - Ресурсозабезпечення та витрати
Опис |
Розрахована кількість днів |
Розрахована ціна |
|
Проектування |
2 |
400 |
|
Аналіз предметної галузі |
6 |
1200 |
|
Розробка дизайну |
1 |
200 |
|
Розробка |
|||
Установка необхідного ПЗ |
0.5 |
100 |
|
Інтерфейс |
1 |
200 |
|
Перший алгоритм |
2 |
400 |
|
Побудова звіту пошуку плагіату |
1 |
200 |
|
Другий алгоритм |
2 |
400 |
|
Тестування |
2 |
400 |
|
Документація |
2 |
400 |
|
Випробування |
1 |
200 |
|
Всього |
20.5 |
4100 |
Додаток Б
Plag Detector
Test Plan
Version <0.94>
Таблиця. Історія змін
Дата |
Автор |
Версія |
Зміни |
|
16-02-11 |
Кононов Ілля |
0.01 |
Інтерфейс та архітектура |
|
25-03-11 |
Кононов Ілля |
0.30 |
Розробка першого алгоритму |
|
01-04-11 |
Кононов Ілля |
0.43 |
Розробка звіту по перевірці коду на плагіат |
|
13-04-11 |
Кононов Ілля |
0.94 |
Розробка другого алгоритму |
Мета
Цей документ - Test Plan для «Plag Detector» розрахований на:
- виявити існуючі помилки в програмному коді;
- перевірити якість виявлення плагіату в кодах програм;
- перевірити швидкість перевірки коду;
- визначити частки коду, які потребують оптимізації;
- визначити кращій алгоритм виявлення плагіату.
Передумови
Перед релізом системи виявлення плагіату, треба переконатись, що програма знаходить плагіат та час пошуку не дуже великий.
Область
Тест план був розроблений для виявлення недоліків системи. Головна мета тест плану переконатися, що система робить без помилок та всі алгоритми правильно виявляють плагіат в кодах програм. Спочатку треба протестувати якість кожного алгоритму окремо. Потім потрібно протестувати, як вони будуть робити в системі. Також алгоритми будуть протестовані на швидкість виконання.
Визначення проекту
В таблиці Б.1 вказані документи що використовуються для розробки.
Таблиця Б.1 - Визначення проекту
Document (and version / date) |
Created or Available |
Received or Reviewed |
Author or Resource |
|
Requirements Specification |
Yes No |
Yes No |
Кононов Ілля |
|
Functional Specification |
Yes No |
Yes No |
Кононов Ілля |
|
Use-Case Reports |
Yes No |
Yes No |
Кононов Ілля |
|
Project Plan |
Yes No |
Yes No |
Кононов Ілля |
|
Design Specifications |
Yes No |
Yes No |
Кононов Ілля |
|
Prototype |
Yes No |
Yes No |
Кононов Ілля |
|
User's Manuals |
Yes No |
Yes No |
Кононов Ілля |
|
Business Model or Flow |
Yes No |
Yes No |
Кононов Ілля |
|
Data Model or Flow |
Yes No |
Yes No |
Кононов Ілля |
|
Business Functions and Rules |
Yes No |
Yes No |
Кононов Ілля |
|
Project or Business Risk Assessment |
Yes No |
Yes No |
Стратегія тестування. Тестування функцій
Для тестування функцій будемо використовувати метод чорного ящику. Цей тип тестування полягає у тому, що ми не бачимо програмний код, а маємо тільки графічне представлення. За допомогою цього тестування ми можемо побачити правильне рішення приймає система, чи ні.
Таблиця 2.1 - Тестування функцій
Test Objective: |
Перевірка усіх функцій системи |
|
Technique: |
Виконати перевірки кожної можливої поведінки, з використанням дійсних даних та помилкових, щоб перевірити наступне: - функція повертає очікуване значення при дійсних даних; - функція правильно реагує на помилкові данні або викликається попередження; - застосовується кожне бізнес-правило. |
|
Completion Criteria: |
- усі заплановані випробування було проведено; - усі виявлені дефекти були враховані. |
Тестування інтерфейсу користувача
Тестування графічного інтерфейсу користувача передбачає перевірку відповідності програми вимогам до графічного інтерфейсу, професійно воно виглядає, виконано воно в єдиному стилі. Метою тестування інтерфейсу користувача є перевірка на те, що система інтуїтивно зрозуміла користувачеві та в програмі немає орфографічних помилок.
Таблиця Б.2 - Тестування інтерфейсу користувача
Test Objective: |
Перевірити наступне: - навігація за цільовими тесту правильно відображає бізнес-функції та вимоги, яки очікуються; - текст графічного інтерфейсу не містить графічних помилок. |
|
Technique: |
Створення та зміна випробувань для кожного вікна, щоб перевірити, правильність навігації і станів об'єкта для кожного вікна програми. |
|
Completion Criteria: |
Кожне вікно успішно перевірене, кожний елемент графічного інтерфейсу, відповідає за своїм обов'язкам та графічний інтерфейс не містить граматичних помилок. |
Тестування XML-документу
Тестування XML-документу предназначено для перевірки того, щоб переконатися, що до програми надаються правильні дані, та документ правильно побудований. Це тестування необхідно, тому що, модуль токенізації використовує дані с XML-документа. Тому, якщо дані будуть неправильні, то і сама перевірка буде неправильна.
Таблиця Б.3 - Тестування XML-документу
Test Objective: |
Переконатись, що XML-документ повертає правильні дані: - перевірити, те що XML-документ повертає очікувані дані; - перевірити, реакцію xsd-схеми при додаванні невірних даних у XML-документ. |
|
Completion Criteria: |
Перевірка даних пройшла успішно, дані повертаються правильні, та схема реагує на невірні дані. |
Додаток В
Слайди презентації
Рисунок В.1 - Титульний слайд
Рисунок В.2 - Мета роботи
Рисунок В.3 - Постановка задачі
Рисунок В.4 - Аналіз аналогів
Рисунок В.5 - Визначення плагіату
Рисунок В.6 - Приклад плагіату
Рисунок В.7 - Схема пошуку плагіату
Рисунок В.8 - Видалення коментарів
Рисунок В.9 - Токенізація
Рисунок В.10 - Алгоритм жадібного строкового замощення
Рисунок В.11 - Алгоритм порівняння операторів
Рисунок В.12 - Результат роботи
Рисунок В.13 - Результат роботи в блочному вигляді
Рисунок В.14 - Висновок
Додаток Г
Код програми
Реалізація алгоритму жадібного строкового замощення:
public class GreedyStringTiling {
public static ArrayList<ResultGST> greedyStringTiling(
ArrayList<Operator> firstTokenList,
ArrayList<Operator> secondTokenList) {
ArrayList<Matches> matches = null;
ArrayList<ResultGST> result = new ArrayList<ResultGST>();
int minimumMatchLength = 15;
int maxmatch;
int k;
do {
matches = new ArrayList<Matches>();
maxmatch = minimumMatchLength;
ArrayList<Operator> firstUnmarkedToken = getUnmarked(firstTokenList);
ArrayList<Operator> secondUnmarkedToken = getUnmarked(secondTokenList);
for (int i = 0; i < firstUnmarkedToken.size(); i++) {
for (int j = 0; j < secondUnmarkedToken.size(); j++) {
k = 0;
while ((i + k < firstUnmarkedToken.size())
&& j + k < secondUnmarkedToken.size()
&& firstUnmarkedToken
.get(i + k)
.getName()
.equals(secondUnmarkedToken.get(j + k)
.getName())) {
k++;
}
if (k == maxmatch) {
matches.add(new Matches(i, j, k));
maxmatch = k;
} else if (k > maxmatch) {
matches = new ArrayList<Matches>();
matches.add(new Matches(i, j, k));
maxmatch = k;
}
}
}
for (Matches match : matches) {
for (int i = 0; i < match.getCount(); i++) {
firstUnmarkedToken.get(i + match.getFirst()).setMark(true);
secondUnmarkedToken.get(i + match.getSecond())
.setMark(true);
}
result.add(new ResultGST(match, firstUnmarkedToken,
secondUnmarkedToken));
}
} while (maxmatch > minimumMatchLength);
return result;
}
private static ArrayList<Operator> getUnmarked(ArrayList<Operator> list) {
ArrayList<Operator> unmarked = new ArrayList<Operator>();
for (Operator operator : list) {
if (!operator.isMark())
unmarked.add(operator);
}
return unmarked;
}
}
Реалізація алгоритму порівняння операторів:
public class CompareToken {
public static ArrayList<ResultDetector> detector(ArrayList<Operator> firstTokenList,
ArrayList<Operator> secondTokenList) {
ArrayList<Operator> bigger;
ArrayList<Operator> less;
ArrayList<ResultDetector> arrayMatches = new ArrayList<ResultDetector>();
int minCount = 0;
int count1 = firstTokenList.size();
int count2 = secondTokenList.size();
int maxCount = 0;
boolean changePossition = false;
if (count1 < count2) {
maxCount = count2;
minCount = count1;
bigger = secondTokenList;
less = firstTokenList;
changePossition = true;
} else {
maxCount = count1;
minCount = count2;
bigger = firstTokenList;
less = secondTokenList;
}
for (int i = 0; i < maxCount; i++) {
ArrayList<Operator> numberMatches = new ArrayList<Operator>();
for (int j = 0; j < minCount; j++) {
if (bigger.get(j).getName().equals(less.get(j).getName())) {
if (changePossition == false) {
numberMatches
.add(new Operator(bigger.get(i).getName(),
bigger.get(j).getLine(), less.get(j)
.getLine()));
} else {
numberMatches
.add(new Operator(bigger.get(i).getName(), less
.get(j).getLine(), bigger.get(j)
.getLine()));
}
}
}
double percent = (double) numberMatches.size() / (double) minCount
* 100;
arrayMatches.add(new ResultDetector(percent, numberMatches));
String s = bigger.get(0).getName();
int line = bigger.get(0).getLine();
bigger.remove(0);
bigger.add(new Operator(s, line));
}
return arrayMatches;
}
}
Размещено на Allbest.ru
Подобные документы
Сутність поняття "плагіат документів" та методи виявлення плагіату. Попередня обробка документу - токенізація, видалення стоп-слів та коренів. Семантичне та синтаксичне представлення документів. Алгоритм апроксимованої подібності, побудова N-грам.
дипломная работа [2,4 M], добавлен 12.09.2012Проблема порушення авторських прав в Інтернеті. Системи та сервіси пошуку плагіату. Захист електронних видань від плагіату в Інтернеті. Алгоритми аналізу, подання і порівняння текстової інформації. Вибір методу пошуку текстових документів з запозиченнями.
магистерская работа [1,0 M], добавлен 14.06.2013Дистрибутиви та особливості архітектури QNX, існуючі процеси та потоки, засоби та принципи синхронізації. Організація зв'язку між процесами. Алгоритм роботи системи та результати її тестування. Опис основних елементів програмного коду файлу code.c.
курсовая работа [132,0 K], добавлен 09.06.2015Первинний опис програмного забезпечення графічний редактор. Функціональна специфікація класів. Проектування архітектури програми, структури даних та графічного інтерфейсу. Опис алгоритму природною мовою. Аналіз впливу зміни вимог на зміну архітектури.
курсовая работа [2,4 M], добавлен 07.10.2014Характеристика функціональної структури предметної області програмного комплексу. Розробка архітектури програмної системи. Вибір типу архітектури й зразків проектування. Опис декомпозиції, залежностей та інтерфейсу. Детальне проектування модулів та даних.
курсовая работа [462,2 K], добавлен 19.12.2013Структура і функції інформаційної системи. Ситуаційний аналіз процесу оцінки проектів. Аналіз процесу розробки та створення технічного завдання. Створення протоколу якості системи. Структура та принцип роботи програмного продукту, опис прецендентів.
курсовая работа [980,0 K], добавлен 22.09.2014Визначення вимог до програмного забезпечення. Проектування архітектури програми, структури даних та інтерфейсу. Програмування графічного редактора, специфікація його класів та алгоритм роботи. Зміна архітектури редактора згідно нових вимог замовника.
дипломная работа [1,2 M], добавлен 05.01.2014Створення діаграм: варіантів використання, взаємодії, класів, станів та компонентів. Генерування коду на основі створених діаграм за допомогою StarUML на об'єктно-орієнтовній мові програмування Java. Головне вікно програми "Цифровий диктофон", лістинг.
отчет по практике [1,9 M], добавлен 21.12.2015Переваги архітектури "клієнт-сервер", порівняльна характеристика програмних засобів розробки його систем. Основні концепції функціонування системи IP-телебачення на базі архітектури "клієнт-сервер". Механізм взаємодії клієнта і сервера в середі Delphi.
реферат [955,9 K], добавлен 30.01.2010Розробка програми калькулятора, що може виконувати найголовніші арифметичні операції над двома числами. Вимоги до апаратного і програмного забезпечення. Опис форм та компонентів програми. Розробка алгоритмів програмного забезпечення. Опис коду програми.
курсовая работа [57,1 K], добавлен 31.05.2013