SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAĈUNARSTVA DIPLOMSKI RAD BR. 1896 OTKRIVANJE SLIĈNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Ana Baotić Voditelj: Prof.dr.sc. Marin Golub Zagreb, rujan 2011. Prvo bih htjela zahvaliti mentoru prof. dr. sc. Marinu Golubu na čeličnim živcima i slobodi koju mi je dao prilikom izrade ovog diplomskog rada. Zahvaljujem dragim ljudima koji su izdvojili svoje dragocjeno vrijeme kako bi mi pomogli, a posebno Stjepanu, Alanu, Igoru, Janu, Ivanu i Sanji. Hvala profesoricama Julijani Divkovid-Pukšec i Sonji Grgid na konstantnoj motivaciji i potpori. Posebna zahvala ide mom dragom prijatelju Marku Čupidu na beskrajnoj dobroj volji i svoj pruženoj pomodi jer znam da nije bilo lako! I konačno najveda zahvala ide mom suprugu Goranu što je izdržao moju tvrdoglavost, te mom sinu Zoranu što mi je bio najveda moguda motivacija da svoj studij privedem kraju! SAŽETAK U ovom radu opisani su postojeći programski sustavi i algoritmi za detekciju plagijata. Sastavljene su arhive izvornih tekstova programa te je u njih uključen podskup pouzdano izmijenjenih izvornih tekstova s namjenom kontrolne skupine. Načinjena je ručna usporedba nasumično odabranog podskupa izvornih tekstova te su objašnjeni rezultati te usporedbe. Opisane su metode i algoritmi na kojima počiva otkrivanje sličnosti izvornih tekstova programa. IzgraĎen je programski sustav koji omogućuje automatizirano odreĎivanje značajki izvornih tekstova programa te parametrizirano odreĎivanje sličnosti izvornih tekstova programa na temelju značajki. Objašnjen je utjecaj podešavanja parametara na uspješnost otkrivanja sličnosti te su ponuĎene preporučene vrijednosti istih. Na kraju je ocijenjena uspješnost rada sustava na unaprijede pripremljenoj arhivi tekstova programa. ABSTRACT This diploma thesis provides a comparison of existing plagiarism detection algorithms and systems. Archives containing students' assignments have been selected, together with a subset of manually modified programs for the purpose of a reference set. A manual comparison of programs has been carried out with a detailed explanation of the results. Methods and algorithms which provide a basis for plagiarism detection have beed described and their characteristcs compared. A web system has been implemented which provides automated collection of code characteristics, as well as detecting similarities between programs based on those characteristics. Parameters that affect similarity detection have been defined, and their default values have been proposed. Finally, the overall effectiveness of the system was demonstrated on the predefined sets of students' assignments. Sadržaj 1. UVOD ................................................................................................................................................. 1 2. METODE ANALIZE PRIRODNIH TEKSTOVA I SLIĈNOSTI ZNAKOVNIH NIZOVA ...................... 4 2.1. Najdulji zajednički podslijed ........................................................................................................ 4 2.2. Najdulji zajednički podniz ............................................................................................................ 5 2.3. Računanje udaljenosti nizova znakova ...................................................................................... 6 2.3.1. Hammingova udaljenost ................................................................................................ 6 2.3.2. Levensteinova udaljenost .............................................................................................. 6 2.3.3. Damerau-Levensteinova udaljenost .............................................................................. 7 2.4. Traženje otisaka izvornih tekstova programa temeljenih na sažecima ...................................... 7 2.4.1. Algoritmi pretraživanja uzoraka u znakovnim nizovima ................................................. 8 2.4.2. Algoritam Rabin - Karp................................................................................................... 9 3. PREGLED I USPOREDBA POSTOJEĆIH SUSTAVA ZA DETEKCIJU PLAGIJATA .................. 11 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. Sustav JPlag ............................................................................................................................. 11 Aplikacija Sherlock .................................................................................................................... 11 Sustav MOSS ........................................................................................................................... 12 Aplikacija SID ............................................................................................................................ 12 Aplikacija SIM ........................................................................................................................... 12 Sustav CodeMatch ................................................................................................................... 13 Usporedba značajki sustava za detekciju plagijata .................................................................. 13 Usporedba učinkovitosti otkrivanja sličnosti postojećih sustava .............................................. 14 3.8.1. Detekcija plagijata aplikacijom Sherlock ...................................................................... 15 3.8.2. Detekcija plagijata sustavom MOSS............................................................................ 20 3.8.3. Detekcija plagijata sustavom CodeMatch .................................................................... 24 3.8.4. Detekcija plagijata sustavom JPlag ............................................................................. 26 3.8.5. Ručno odreĎivanje sličnosti odabranih izvornih tekstova programa ........................... 28 4. ANALIZA IZVORNIH TEKSTOVA PROGRAMA ............................................................................ 31 4.1. 4.2. 4.3. 4.4. 4.5. Leksička analiza ....................................................................................................................... 31 Sintaksna analiza ...................................................................................................................... 31 Analiza tijeka izvoĎenja programa i optimizacija ...................................................................... 31 Alati za analizu izvornog teksta programa ................................................................................ 31 Sustav GOLD ............................................................................................................................ 32 4.5.1. Komponenta Builder .................................................................................................... 33 4.5.2. Prevedene tablice gramatika ....................................................................................... 33 4.5.3. Komponenta engine ..................................................................................................... 33 4.5.4. Implementacija komponente za izvoĎenje jezika sustava GOLD-a u programskom jeziku C# ................................................................................................................................... 34 5. ODREĐIVANJE ZNAĈAJKI IZVORNIH TEKSTOVA PROGRAMA............................................... 35 5.1. Osnovna ideja ........................................................................................................................... 35 5.2. Opis strukture markera ............................................................................................................. 36 5.2.1. Sažeci datoteke ........................................................................................................... 37 5.2.2. Karakteristike datoteke ................................................................................................ 38 5.2.3. Leksička analiza ........................................................................................................... 38 5.2.4. Sintaksna analiza ......................................................................................................... 39 5.2.5. K-grami ........................................................................................................................ 40 5.3. Automatizirano stvaranje skupa značajki izvornih tekstova programa ..................................... 42 6. PRAKTIĈNI RAD ............................................................................................................................. 44 6.1. Web-aplikacija CSI ................................................................................................................... 44 6.1.1. Korištenje web-aplikacije ............................................................................................. 45 6.1.2. Struktura aplikacije....................................................................................................... 51 6.1.3. Korištene tehnologije ................................................................................................... 54 6.2. Skupovi ispitnih izvornih tekstova programa ............................................................................ 55 6.3. Parametri .................................................................................................................................. 55 6.3.1. Sažeci .......................................................................................................................... 55 6.3.2. Opće karakteristike ...................................................................................................... 56 6.3.3. Statistike ...................................................................................................................... 56 6.3.4. Sintaksna stabla ........................................................................................................... 56 6.3.5. K-grami ........................................................................................................................ 56 6.3.6. Računanje mjera sličnosti skupova numeričkih podataka ........................................... 57 6.4. Definiranje nove usporedbe i skupa pravila .............................................................................. 60 6.5. Pokretanje usporedbe ............................................................................................................... 62 6.6. Demonstracija rada sustava na postojećoj arhivi izvornih tekstova ......................................... 63 7. ZAKLJUĈAK .................................................................................................................................... 67 8. LITERATURA................................................................................................................................... 69 Uvod 1. Uvod Plagijat (od lat. plagere oteti) označava čin prisvajanja ili kopiranja tuĎeg pisanog, umjetničkog ili drugog kreativnog rada u svoj vlastiti, bilo u cjelini ili djelomice, bez prikladnog priznanja izvornog autorstva ili izvornika [1]. Za razliku od krivotvorenja u kojemu je upitna autentičnost djela, kod plagijata je u pitanju nezakonito pripisivanje rada. U današnje vrijeme prvi izbor pri traženju informacija je Internet. Teško je zamisliti pojam, temu ili problem čija definicija ili obrada nije već negdje objavljena. Pretraživanje kataloga u knjižnicama i ručno traženje literature zamijenilo je nekoliko klikova miša i unos ključnih pojmova u vrlo moćne web-tražilice, koji se svakodnevno koriste. Čak nije potrebno znati niti cijeli pojam, jer se mogući izbori automatski nude tijekom upisivanja riječi. Kad je već pronalazak tematike toliko lagan, primamljivost korištenja već postojećih rješenja i istraživanja nije toliko neshvatljiva. Plagiranje izvornih tekstova programa predstavlja realan problem studentima i nastavnom osoblju. Studenti često ocijene da im se ne isplati potrošiti odreĎenu količinu vremena na rješavanje programskog zadatka te od kolega uzimaju gotova rješenja i prisvajaju ih pod svoja. Osim što je takvo ponašanje nemoralno, studenti sami sebe zakidaju u procesu samostalnog razmišljanja i rješavanja problema, što predstavlja okosnicu njihovog intelektualnog i inženjerskog usavršavanja. S druge strane nastavno osoblje je primorano trošiti vrijeme namijenjeno poučavanju na suzbijanje i dokazivanje plagiranja. Kazne nisu rješenje problema, jer se bave saniranjem štete, a strah od njih često nije dovoljan da do plagiranja ne doĎe. Pravi cilj je adekvatno obeshrabriti učenike i studente da se uopće i okušaju u plagiranju. To je moguće moralnim apelima, potpisivanjem izjave koji poziva na poštenost i moral, ali i nekim praktičnijim metodama za praćenje samostalnog rada. Sustavi za kontrolu verzija izvornih tekstova programa su jednostavan primjer kako nastavno osoblje može imati uvid u proces nastajanja izvornih tekstova programa, ali i u bilo kojem koraku mogu od studenta dobiti informaciju o napretku njegovog rada. Danas se takoĎer često koriste praktična rješenja za provjeru sličnosti radova. No ne postoji potpuni računalni sustav, aplikacija ili program koja je u stanju postaviti prava pitanja, doživjeti i proučiti reakciju ispitanika te s apsolutnom sigurnošću i nedvosmislenošću utvrditi da se radi o plagijatu, na način kako to može stručnjak u danom polju, osim ako se ne radi o potpunom prisvajanju rada od početka do kraja. Postavlja se pitanje kako zaključiti da je neki izvorni tekst programa plagijat. Otkrivanje plagijata je u najmanju ruku nejednoznačno. Naime, korištenjem odreĎenog broja transformacija nad bilo kojim programskim rješenjem nekog zadanog problema moguće je dobiti neko drugo rješenje, a da se ne radi o plagijatu. U svojem radu Parker i Hamblen [13] definiraju plagijat kao rad koji je nastao temeljem manjeg broja izmjena nekog postojećeg izvornog teksta programa, ali bez imalo razumijevanja kako taj program radi. Dodatno, Faidhi i Robinson [14] definiraju sustav sa šest razina koji opisuje opseg izmjena nad izvornim tekstom programa (sSlika 1.1). Prema njima, najjednostavniji i najčešći način plagiranja izvornih tekstova definiran je u prve tri razine navedene klasifikacije te zahtijeva najmanju 1 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA razinu razumijevanja onog što se mijenja. Akcije kojima se postižu te izmjene su dodavanje, premještanje, izmjena i brisanje dijelova izvornog teksta programa. Slika 1.1 Klasifikacija izmjena izvornih tekstova programa Iako je ispitivaču relativno lagano odrediti radi li se o plagijatu uslijed tako jednostavnih izmjena, potrebno je osigurati i programsku potporu koja je u stanju to otkriti s visokim stupnjem sigurnosti. Kako se približavamo višim razinama izmjena, raste i težina kojom se s relativnom sigurnošću rad može klasificirati kao plagijat te potrebno znanje i razumijevanje osobe koja plagira. Naime bilo koji izvorni tekst programa se može konačnim brojem izmjena, dodavanja, brisanja i premještanje pretvoriti u drugi. Postavlja se pitanje do koje razine izvorni tekst mora biti izmijenjen da bi se i dalje smatrao plagijatom te kako definirati mjeru sličnosti i prag iznad kojeg se sličnosti prijavljuju. Kako programski zadaci variraju svojom složenošću, opsegom te razinom individualnosti koju zahtijevaju od studenta, ponekad nema smisla očekivati različite implementacije. Primjer je klasičan Hello World program. Neovisno o programskom zadatku, potrebno je omogućiti pouzdan i ispravan način otkrivanja sličnosti izvornih tekstova koji će u što većoj mjeri pokriti razine prethodno klasifikacije plagijata te dati ispitivaču slobodu da ih interpretira na način koji smatra prikladnim. 2 Uvod U ovom diplomskom radu načinjena je detaljna analiza procesa detekcije plagijata programa te je razvijen novi pristup obradi izvornih tekstova programa i njihovom usporeĎivanju. U poglavlju [2] objašnjeni su osnovni algoritmi obrade prirodnog teksta i rješenja problema odreĎivanja razlike znakovnih nizova. Poglavlje [3] sadrži pregled i usporedbu učinkovitosti i karakteristika rada javno dostupnih sustava za detekciju plagijata. TakoĎer je obavljena ručna usporedba sličnosti izvornih tekstova programa kako bi se prethodno dobivenim rezultatima mogao dati kontekst. U poglavlju [4] navedene su faze i objašnjen proces prevoĎenja izvornog teksta programa u izvršni i opisan sustav GOLD koji je korišten u okviru sustava CSI (engl. Code Similarity Inspection) kao potpora leksičkoj i sintaksnoj analizi izvornih tekstova programa. Poglavlje [5] objašnjava motivaciju za odreĎivanje skupa značajki (marker) izvornih tekstova programa te razloge korištenja tih skupova u procesu otkrivanja sličnosti. Za potrebe demonstracije procesa odreĎivanja markera i usporeĎivanja izvornih tekstova programa pomoću njih, implementirana je web-aplikacija CSI koja ispitivačima nudi mogućnost da definiraju utjecaj pojedinih elemenata usporedbe u ukupnoj ocjeni ili da ih u potpunosti izuzmu. Poglavlje [6] objašnjava strukturu i način korištenja aplikacije i definiranja pravila na temelju kojih se obavlja proces usporedbe. Na kraju je prikazana uspješnost rada aplikacije CSI u odnosu na ostale popularne aplikacije za detekciju plagijata te su predložene potrebne preinake i nadogradnje koje bi dodatno unaprijedile proces otkrivanja sličnosti izvornih tekstova programa. 3 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA 2. Metode analize prirodnih tekstova i sliĉnosti znakovnih nizova Tijekom vremena korišteni su mnogi pristupi analizi prirodnih tekstova kao i različite metode traženja sličnosti meĎu njima. Različiti sustavi za detekciju plagijata koriste različite algoritme, ili čak i kombinaciju algoritama kao svoj temelj. Traženje uzoraka (engl. pattern) i usporeĎivanje znakovnih nizova se može svesti na nekoliko pristupa, od jednostavnog slijednog usporeĎivanja znakova, traženja razlika nizova znakova i složenih izračuna sažetaka (engl. hash) nad proizvoljnim nizom znakova. Kako bi se mogla donijeti odluka o korištenju neke metode tijekom odreĎivanja sličnosti izvornih tekstova programa, potrebno je prvo proučiti njene značajke u radu s prirodnim tekstom. U nastavku se nalazi opis metoda, način na koji odreĎuju sličnosti te njihova složenost i učinkovitost. 2.1. Najdulji zajedniĉki podslijed Metoda traženja najduljeg zajedničkog podslijeda (engl. longest common subsequence) obavlja slijedno traženje znakova jednog znakovnog niza unutar drugog i kao rezultat vraća duljinu podslijeda kojeg je pronašla. Osim duljine metoda se može izmijeniti da umjesto duljine vraća i pronaĎeni najdulji podslijed, ukoliko on postoji. Za traženje podslijeda je važno samo da se znakovi pronalaze istim redoslijedom kako su definirani, dok izmeĎu pojedinih znakova može biti proizvoljan broj umetnutih znakova. Slika 2.1 prikazuje kako ova metoda zaključuje da je prvi tekst niz sadržan kao podslijed u drugom tekstu. Slika 2.1 Traženje najduljeg podslijeda Ideja je da se svaki znak prvog niza traži od krajnje lijeve pozicije drugog niza te nakon što se pronaĎe, od te pozicije dalje se traži sljedeći znak prvog niza. Na primjeru je vidljivo da su nakon znakova N i I umetnute tri znamenke. Slika 2.2 prikazuje pseudokod traženja najduljeg podslijeda. Ukoliko su oba niza prazna ili uopće nisu inicijalizirani i vrijednost im je null, tada algoritam prestaje s radom i vraća nulu u pozivajući program. Ako su oba niza definirana poziva se usporedba prvog znaka jednog s prvim znakom drugog niza. U slučaju da su znakovi isti, opet se poziva metoda ali sada nad podnizovima prvog i drugog niza gdje je prvi znak izuzet. Ako prvi znak nije bio identičan u oba niza, tada se metoda poziva dva puta u 4 Metode analize prirodnih tekstova i sličnosti znakovnih nizova pokušaju meĎusobnog odreĎivanja najduljeg podniza neovisno tražio se u prvom ili drugom nizu. Konačni rezultat se definira kao veći od dva pojedinačna, čime je pronaĎena duljina najduljeg podslijeda. Slika 2.2 Pseudokod traženja najduljeg podslijeda Loša strana korištenja ovog algoritma je vremenska zahtjevnost. To se može primijetiti u slučaju da dva niza nemaju nikakav zajednički podslijed, a svejedno se obavlja dvostruko traženje po svim elementima u oba niza. Duljina rada metode daleko premašuje korist potencijalno pronaĎene mjere sličnosti. 2.2. Najdulji zajedniĉki podniz Za razliku od podslijeda definiranog u prethodnom potpoglavlju, podniz (engl. substring) je definiran neprekinutim nizom znakova koji se u istom redoslijedu mora moći pronaći u drugom tekstu. Algoritam koji se koristi u ovom pretraživanju koristi strukturu podataka koja se zove sufiksno stablo [5]. Slika 2.3 Postupak stvaranja sufiksnog stabla Slika 2.3 prikazuje postupak stvaranja sufiksnog stabla. Za zadanu riječ matematika prvo se izdvajaju svi podnizovi riječi te se potom sortiraju po početnom slovu. Nakon sortiranja se nad podnizovima istog početnog slova odreĎuje najdulji zajednički prefiks kojeg je potrebno izdvojiti u zaseban čvor. Preostali podnizovi se na isti način 5 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA raščlanjuju sve dok je to moguće. Primjena ove metode je moguća i u odreĎivanju sličnosti izvornih tekstova programa ako izgradimo općenito sufiksno stablo koje će sadržavati sve sufikse obaju tekstova. Kako bi usporedba bila moguća treba voditi računa da se za svaki čvor stabla zna kojem tekstu pripada – prvom, drugom ili oba. Najdublji čvor čija znakovna vrijednost je sadržana u oba teksta je upravo i najdulji zajednički podniz. 2.3. Raĉunanje udaljenosti nizova znakova Osim metoda odreĎivanja sličnosti prirodnih tekstova možemo koristiti i metode koje računaju njihovu udaljenost (engl. distance). U općenitom slučaju udaljenost je definirana brojem brisanja, dodavanja i izmjene znakova koji je potrebno obaviti nad nekim nizom znakova kako bismo dobili neki drugi niz. U odreĎivanju sličnosti cilj je bio dobiti što veću vrijednost dok kod odreĎivanja udaljenosti manje vrijednosti udaljenosti impliciraju veću sličnost. U nastavku slijedi opis rada najčešćih metoda za odreĎivanje udaljenosti. 2.3.1.Hammingova udaljenost U teoriji informacije Hammingova udaljenost dvaju znakovnih nizova iste duljine je definirana brojem lokacija na kojima ta dva niza ne sadrže identičan znak. U analizi prirodnog teksta to je broj zamjena koje je potrebno obaviti kako bismo unificirati dva niza znakova iste duljine. Slika 2.4 prikazuje Hammingovu udaljenost za znakovne nizove riječ i lijek. Slika 2.4 Hammingova udaljenost Iako ima široku upotrebu u teoriji informacije, kodiranju i kriptografiji, uvjet da dva niza nužno imaju isti broj elemenata implicira da se udaljenost može izračunati samo ako je korištena operacija bila zamjena znakova, a ne dodavanje ili brisanje. 2.3.2.Levensteinova udaljenost Levensteinova udaljenost (engl. edit distance) definira broj akcija potrebnih da se iz jednog znakovnog niza dobije drugi, pri čemu je dozvoljeno dodavanje, brisanje ili izmjena znakova na bilo kojoj lokaciji unutar niza. Slika 2.5 prikazuje odreĎivanje Levensteinove udaljenosti za dva znakovna niza: lijek i riječi. Tipične primjene računanja ove udaljenosti su rječnici i alati za provjeru točnosti riječi. OdreĎivanje udaljenosti proizvoljno velikih nizova znakova je zbog računske složenosti relativno neisplativo jer je cijena izračuna proporcionalna produktu duljina nizova koji se usporeĎuju. Usporedbe radi, ako se zabrani akcija zamjene dva znaka u nizovima, Levensteinova udaljenost se svodi na odreĎivanje najduljeg zajedničkog podslijeda. 6 Metode analize prirodnih tekstova i sličnosti znakovnih nizova Slika 2.5 Levensteinova udaljenost 2.3.3.Damerau-Levensteinova udaljenost Radi se o proširenju definicije Levensteinove udaljenosti dodavanjem akcije kojom se lokacije dva susjedna znaka jednog niza mogu zamijeniti. Tim proširenjem ova udaljenost postaje korisna u analizi prirodnog teksta. Pretpostavka je da su elementi prirodnog teksta (riječi) relativno kratke te da je broj grešaka koje se dogaĎaju prilikom pisanja rijetko veći od 2. Slika 2.6 prikazuje odreĎivanje DamerauLevensteinove udaljenosti za dva znakovna niza utorak i tuorka. Slika 2.6 Damerau-Levensteinova udaljenost . Valja primijetiti da bi standardna Levensteinova udaljenost za ovaj primjer bila 4. Osim u aplikacijama za provjeru točnosti riječi, ova udaljenost je našla praktičnu primjenu u biologiji u odreĎivanju promjena molekula DNK. 2.4. Traženje otisaka izvornih tekstova programa temeljenih na sažecima Kako su metode pretraživanja znakovnih nizova redovito spore i računski zahtjevne, postavlja se pitanje kako pojednostaviti i ubrzati proces analize znakovnih nizova. Ideja je znakovni niz prikazati kao numeričku vrijednost dobivenu nekom metodom i onda usporeĎivati te izračunate numeričke vrijednosti. U slučaju korištenja viših programskih jezika (nar. Java, C#) numeričku vrijednost znakovnog niza možemo dobiti pozivom ugraĎene metode HashCode(). Tako dobivena vrijednost je sažetak znakovnog niza (engl. hash). Za potrebe računanja sažetaka prirodnih i izvornih tekstova definira se pojam kgrama. K-grami su neprekinuti podnizovi fiksne duljine k koji pripadaju nekom nizu znakova. Slika 2.7 prikazuje sva k-grame riječi matematika, gdje je k=4. 7 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Slika 2.7 K-grami duljine 4 dobiveni od riječi "matematika" UsporeĎivanje nizova znakova pomoću k-grama primjenjivo je i na analizu izvornih tekstova programa. Dodatno, umjesto nad cijelim tekstom mogu se računati sažeci leksičkih jedinki obraĎenog izvornog teksta programa. Ovako dobivene sažetke kao i sažetke k-grama je potom lako usporeĎivati s vrijednostima sažetaka drugih izvornih tekstova programa. Moguće je takoĎer prvo odraditi korektivne akcije kako bi se tekst normalizirao (micanje praznina, komentara, tabulatora, itd.), pa tek nakon toga računati sažetke. Korisnost ovog pristupa je vidljiva u analizi implementiranog otkrivanja sličnosti izvornih tekstova programa u okviru aplikacije CSI. 2.4.1.Algoritmi pretraživanja uzoraka u znakovnim nizovima Razvijen je cijeli niz algoritama za brzo pretraživanje nizova znakova ovisno o broju uzoraka (engl. pattern) koje treba pronaći. Uzorak se definira skupom objekata, u našem slučaju znakova, koji se ponavljaju na predvidiv način. Algoritmi se klasificiraju na one koji mogu pronaći točno jedan ili više uzoraka. Definirajmo n kao duljinu uzorka kojeg tražimo, a m kao duljinu teksta kojeg pretražujemo. Uz tako definirane parametre tTablica 2.1 prikazuje značajke vremena obrade teksta i usporedbe algoritama koji su namijenjeni za pronalazak jednog uzorka. Algoritmi koji mogu pretraživati veći broj uzoraka su: Aho-Corasick, Commentz-Walter te Rabin-Karp. Osim svih navedenih algoritama, za definiciju većih skupova znakovnih nizova se često koriste regularne gramatike ili regularni izrazi, no oni nam u ovom kontekstu nisu zanimljivi. Od navedenih algoritama, zbog svojih svojstava Rabin-Karp se tipično koristi u sustavima i programima za detekciju plagijata. 8 Metode analize prirodnih tekstova i sličnosti znakovnih nizova Tablica 2.1 Složenosti rada algoritama za traženje uzoraka u tekstu Algoritam trajanje obrade trajanje usporedbe Naivno pretraživanje nizova 0 Θ((n-m+1) m) Rabin-Karp Θ(m) prosječno Θ(n+m), najgore Θ((n-m+1) m) Pretraživanje determinističkim konačnim automatima Θ(m |Σ|) Θ(n) Knuth-Morris-Pratt Θ(m) Θ(n) Boyer-Moore Θ(m + |Σ|) Ω(n/m), O(n) Bitap (shift-or, shift-and, Θ(m + |Σ|) O(mn) Baeza–Yates–Gonnet) 2.4.2.Algoritam Rabin - Karp Algoritam Rabin-Karp su razvili Michael O. Rabin i Richard M. Karp 1987. godine, a služi za pretraživanje znakovnih nizova koristeći funkciju raspršenja. Iako je po svojim značajkama inferiorniji ostalim algoritmima za pretraživanje jednog uzorka, kod pretraživanja većih skupova uzoraka je upravo ovo algoritam odabira. Umjesto sporog i skupog pretraživanja i usporeĎivanja dugih nizova znakova, ideja je izračunati njihove sve vrijednosti sažetaka k-grama. Motivacija je pouzdano brža usporedba vrijednosti sažetaka, dakle numeričkih vrijednosti. Kao dodatno ubrzanje, koristi se funkcija pomičnog raspršenja (engl. rolling hash), što znači da se vrijednost sažetka k-grama na i+1-toj poziciji može brzo izračunati na temelju vrijednosti kgrama na i-toj poziciji, uz dodatni učitani znak. Funkcija računanja sažetka za k-gram (c1...ck) u bazi b, gdje su c1, c2..ck znakovi kgrama, prikazana je formulom (2.1). (2.1) Sažetak za sljedeći k-gram (c2... ck+1) tada se može izračunati formulom (2.2). (2.2) Umjesto formule (2.2) može se koristiti i formula (2.3) koja ne daje isti rezultat, no ta razlika ne utječe na funkcionalnost algoritma i nudi brži izračun. 9 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA (2.3) 10 Pregled i usporedba postojećih sustava za detekciju plagijata 3. Pregled i usporedba detekciju plagijata postojećih sustava za Danas je dostupan velik broj algoritama, aplikacija i sustava koji omogućavaju u različitim mjerama uspješnu usporedbu izvornih tekstova programa. Svaki pristup usporedbi je praktičniji za jednu primjenu, dok može biti potpuno neučinkovit za neku drugu. Većina sustava za detekciju plagijata nudi podršku za različite programske jezike. Ta podrška se definira implementiranjem leksičke i eventualno sintaksne analize, iako postoje sustavi i aplikacije npr. Sherlock koje ne obavljaju detaljnu analizu izvornih tekstova ili im je namjena analiza prirodnog teksta. U skladu s implementiranim metodama analize izvornih tekstova programa razlikuje se i uspješnost i pouzdanost rezultata odreĎivanja sličnosti. U nastavku su ukratko opisani načini rada pojedinih sustava i aplikacija, dan je pregled njihovih karakteristika i značajki, obavljeno je ispitivanje njihove učinkovitosti i brzine te su usporeĎeni rezultati s ručnom provjerom sličnosti na unaprijed definiranom podskupu izvornih tekstova programa. 3.1. Sustav JPlag Sustav JPlag [8] je jedan od najpoznatijih sustava za detekciju plagijata koji je dostupan kao web-aplikacija uz prethodnu registraciju korisnika. Proces otkrivanja sličnosti se temelji na pretvorbi izvornih tekstova programa u nizove tokena (engl. tokens), koji se potom pokušavaju u što većoj mjeri upariti s nizovima tokena nekog drugog izvornog teksta programa. Usporedba se odvija u dvije faze: traženje najduljih neprekinutih podnizova tokena te označavanje uparenih podnizova tokena najveće duljine čime oni automatski bivaju izuzeti iz ostale usporedbe. Jedan niz se može samo jednom upariti s nekim drugom nizom, pa je ovaj način usporedbe osjetljiv na ponavljanje istog teksta na više mjesta. 3.2. Aplikacija Sherlock Aplikacija Sherlock je javno dostupan besplatan alat koji se može koristiti samostalno kao konzolna aplikacija ili kao dio web-sustava BOSS [17]. Omogućuje usporeĎivanje izvornih tekstova programa, prirodnog teksta, pa čak i .tar datoteka. Pozadinski algoritam koristi digitalne potpise (engl. digital signatures). Digitalni potpis čini proizvoljno velik skup riječi pretvorenih u bitove koji su potom grupirani kako bi se iz njih mogao očitati broj. Nova verzija programa korisnicima nudi jednostavno i intuitivno sučelje s mogućnošću podešavanja nekoliko opcija kako bi se utjecalo na konačni rezultat usporedbe. Zajednica korisnika takoĎer može svojevoljno mijenjati program i nadograĎivati ga za svoje potrebe, pošto Sherlock potpada pod otvoreni kod. 11 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA 3.3. Sustav MOSS Sustav MOSS (engl. Measure of Software Similarity) [2] je javno dostupna webusluga koja takoĎer zahtijeva registraciju korisnika. Koristi se već cijeli niz godina kao potpora računarskim kolegijima prilikom usporedbe studentskih radova. Ono po čemu se MOSS izdvaja od ostalih sustava je pozadinska logika analize tekstova. Koriste se unaprijed izračunati k-grami izvornog teksta i njihovi sažeci. Izračunate vrijednosti se potom grupiraju u tzv. prozore (engl. windows), nakon čega se odabire odreĎen broj najmanjih ili najvećih vrijednosti sažetaka koji se s velikom pouzdanošću smatraju reprezentativnim za taj izvorni tekst. Daljnje usporeĎivanje se obavlja traženjem tih vrijednosti sažetaka u skupu sažetaka drugog izvornog teksta. Brzina i učinkovitost ovakvog načina usporeĎivanja leži u reduciranju broja sažetaka koji se usporeĎuju, naspram točnijeg, ali znatno sporijeg usporeĎivanja svih vrijednosti. MOSS takoĎer trenutno nudi podršku za najveći broj programskih jezika. 3.4. Aplikacija SID Aplikacija SID (engl. Software Integrity Detection) [9] je još jedna aplikacija čija je prvotna i jedina korisna namjena bila usporedba sličnosti genoma koristeći izračune temeljene na Kolmogorovoj kompleksnosti (engl. Kolmogorov Complexity) Error! Reference source not found.. Sustav koristi kompleksne matematičke izračune čija podloga leži u teoriji informacije. Ukratko, ako se stvaranje bilo kojeg znakovnog niza, pa tako i izvornog teksta programa može automatizirati nekim algoritmom ili programom, tada je Kolmogorova kompleksnost upravo složenost tog algoritma. U ovom slučaju se ne usporeĎuju izvorni tekstovi programa, već složenosti "programa" koji ih stvaraju. Aplikacija nije pretjerano upotrebljiva za automatizirano usporeĎivanje izvornih tekstova programa zbog iznimne sporosti obrade podataka te povremenom nedojavljivanju rezultata. 3.5. Aplikacija SIM Aplikacija SIM (engl. Software and text similarity tester) [11] služi za otkrivanje potencijalno dupliciranih dijelova izvornih tekstova programa u velikim programskim projektima, kao i za otkrivanje plagijata u programskim, edukacijskim i ostalim projektima. Kod detekcije plagijata algoritam usporedbe se svodi na odreĎivanje sličnosti rezultata leksičke analize izvornih tekstova programa. Nad izvornim tekstom programa izgraĎuje se lista tokena, uz prethodnu normalizaciju programa i brisanje nezanimljivih elemenata. To podrazumijeva zamjenu svih identifikatora jednim generičkim nazivom, brisanje jednolinijskih i višelinijskih komentara, itd. Usporedba započinje proizvoljnim odabirom duljine niza tokena (autori preporučaju da se ta vrijednost postavi na 24), čije se pojavljivanje zatim pokušava pronaći unutar drugog teksta. U većini slučajeva se pretpostavljena vrijednost pokazala idealnom za eliminiranje šuma (uparivanja prekratkih nizova koji se ne mogu smatrati plagijatom). TakoĎer se uspješno suzbija nedojavljivanje sličnosti koje bi mogao uzrokovati predugačak niz. 12 Pregled i usporedba postojećih sustava za detekciju plagijata 3.6. Sustav CodeMatch Sustav CodeMatch [12] je komercijalni sustav za detekciju plagijata meĎu izvornim tekstovima programa za kojeg autori tvrde da posjeduje superiornije značajke rada i pozadinskog algoritma, no zbog cijene provedbe usporedbe tu tvrdnju nije moguće ispitati na većem broju izvornih programa. Sustav CodeMatch sadrži velik broj samostalnih alata koji imaju specijaliziranu namjenu poput traženja dupliciranih odsječaka izvornog teksta programa unutar iste datoteke, traženje identičnih dijelova teksta, itd. Detalji pozadinskih algoritama i posebnosti implementacije nisu javno dostupni. 3.7. Usporedba znaĉajki sustava za detekciju plagijata Iz prethodnih opisa vidljivo je da su pozadinski algoritmi i podrška za odreĎene programske jezike specifični za svaki pojedini sustav i aplikaciju. Isto tako vrijedi i za uvjete koje je potrebno zadovoljiti kako bi se pojedina aplikacija mogla pokrenuti ili kako bi se mogli spojiti na sustav za detekciju plagijata. Za pretpostaviti je da će neke usporedbe sličnosti biti brže, lakše za korištenje ili intuitivnije u analizi rezultata. Kako bi se dobila bolja slika sličnosti i razlika, prikazane su sve važnije implementacijske značajke opisanih sustava za detekciju plagijata u Tablica 3.1. Osim implementacijskih detalja iznimno je važno odrediti i usporediti uspješnost navedenih sustava i aplikacija. U nastavku slijedi obrada rezultata otkrivanja sličnosti navedenih sustava na temelju unaprijed definiranih arhiva izvornih tekstova programa, te odreĎivanje pouzdanosti dobivenih rezultata u odnosu na ručno otkrivanje sličnosti. 13 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Tablica 3.1 Usporedba značajki sustava za detekciju plagijata JPlag korišten od 1997 Sherlock 1994 komercijalna upotreba iznad 1MB zasebni GUI Web-aplikacija Web-aplikacija zasebni GUI JDK1.4 ili više Skripta za UNIX ili Windows Webpreglednik / ID i e-mail ID i e-mail lokalno izvoĎenje Arhiva ili pojedinačno zip datoteka s projektima brz spor Arhiva ili pojedinačno brzina opada veličinom skupa za usporedbu besplatno otvoreni kod vrsta suĉelja zasebni GUI zahtjevi izvoĊenja Webpreglednik, JRE1.5 ili više sigurnost ID i e-mail format rezultata HTML prikaz sličnih fragmenata parova metrika sliĉnosti pozadinski algoritam √ • postotci • upareni tokeni GST 2005 besplatno, uz korisnički račun besplatno, uz korisnički račun umjereno brz 2003 besplatno, uz korisnički račun uvjeti korištenja brzina CodeMatch • Java • C++ •C • običan tekst podržani jezici Arhiva ili pojedinačno 1994 • Java • C# •C • C++ • Python • Visual Basic • Javascript • FORTRAN • Haskell • Lisp • Scheme • Pascal • Perl • Verilog • Modula2 • Matlab • Verilog • VHDL • običan tekst SID • BASIC •C • C++ • C# • Delphi • Flash ActionScript • Java • JavaScript • MASM • Pascal • Perl • PHP • PowerBuilder • Ruby • SQL • Verilog • VHDL • Java • C# •C • C++ • Scheme • običan tekst predaje format MOSS • Java •C • C++ • običan tekst lokalno izvoĎenje Arhiva ili pojedinačno brzina opada veličinom skupa za usporedbu Interaktivni dijalog za usporeĎivanje sličnosti i ispis rezultata √ • postotci • upareni tokeni Uparivanje tokena i nizova HTML i tekstualni prikaz sličnih fragmenata √ • postotci • upareni tokeni • uparene linije winnowing HTML prikaz HTML i tablični prikaz sličnih fragmenata √ / • postotci Kolmogorova kompleksnost • postotci • uparene linije Uparivanje znakovnih nizova 3.8. Usporedba uĉinkovitosti otkrivanja sliĉnosti postojećih sustava Visok postotak sličnosti neka dva izvorna teksta programa može biti uzrokovan jednom od sljedećih stavki: 14 Pregled i usporedba postojećih sustava za detekciju plagijata zajedničkim korištenjem izvornog teksta programa trećeg izvora, korištenjem alata za generiranje komentara i predložaka, uporabom čestih algoritama opće namjene, izmjenom vlastitog izvornog teksta programa (isti autor) korištenjem čestih imena identifikatora i varijabli (i, j, counter, broj, itd.) plagijanjem. Potrebno je moći razlikovati uzrok te sličnosti te reagirati samo u slučaju konkretnog plagiranja. Za potrebe ispitivanja postojećih sustava za otkrivanje sličnosti odabrane su tri arhive studentskih programskih rješenja različitih zadataka te je nad njima provedena ručna i automatska provjera sličnosti. Radi se o laboratorijskim vježbama kolegija Operacijski sustavi I akademskih godina 2004/2005 i 2005/2006. Sve tri arhive sadrže oko 100 izvornih tekstova programa, prosječne duljine od otprilike 90 linija teksta. Struktura arhiva je inicijalno bila definirana korijenskim direktorijem unutar kojeg se nalaze poddirektoriji čija imena odgovaraju studentskim pristupnim imenima za računalo pinus, dok su imena programskih rješenja potpuno proizvoljna. Ovakva struktura nije bila pogodna za svaku aplikaciju te su bile potrebne prilagodbe opisane uz rezultate svake od aplikacija. Od prethodno navedenih aplikacija, otkrivanje sličnosti je odraĎeno pomoću aplikacije Sherlock te sustava MOSS, JPlag i evaluacijske kopije sustava CodeMatch. 3.8.1.Detekcija plagijata aplikacijom Sherlock Iako je moguće pokrenuti aplikaciju Sherlock u okviru sustava BOSS na vlastitom poslužitelju te na njemu omogućiti otkrivanje sličnosti za velik broj korisnika, za potrebe ispitivanja je korištena samostalna konzolna aplikacija Sherlock. Potrebno je datoteku sherlock.c prevesti pomoću naredbe gcc: [abaotic@meneldil ~]$ gcc sherlock.c -o sher Usporedba se pokreće na sljedeći način: [abaotic@meneldil ~]$ ./sher os45_2/OS10405lab2_/* > rezultat.txt U datoteci rezultat.txt se nalaze rezultati usporedbe svih datoteka u formatu: prvaDatoteka and drugaDatoteka: postotak Sherlock dozvoljava nekoliko postavki prilikom pokretanja usporedbe koje su navedene u nastavku. -t threshold; Ovim parametrom se definira prag, tj. minimalna sličnost datoteka u postocima ispod koje se podudaranje ne dojavljuje. Podrazumijevana vrijednost ovog argumenta je 20 ukoliko se eksplicitno ne navede prilikom pokretanja programa. -z zerobits; Ovim parametrom se definira razlučivost usporedbe. Veći broj povlači manje temeljitu ali bržu usporedbu, dok manji broj daje vjerodostojniji rezultat i dulje izvoĎenje programa. TakoĎer, u ovom slučaju bi i manja promjena u izvornom tekstu mogla “prevariti“ program. Podrazumijevana vrijednost ovog parametra je 4 ukoliko se eksplicitno ne navede prilikom pokretanja programa, s preporučenim rasponom od 0 do 31. 15 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA -n number_of_words; Ovim parametrom se definira broj riječi koje zajedno čine digitalni potpis. Ovo takoĎer utječe na razlučivost usporedbe identično kao i parametar –z. Podrazumijevana vrijednost ovog parametra je 3, ukoliko se eksplicitno ne navede prilikom pokretanja programa. -o outfile; Ovim parametrom se definira izlazna datoteka za rezultat usporedbe. Ako se ne navede prilikom pokretanja u konzoli, tada će ispis rezultata takoĎer biti unutar konzole što je u većini slučajeva nepraktično i nepregledno. Druga opcija je preusmjeriti izlaz u neku datoteku kako je prikazano u opisu pokretanja naredbe sher. Složenost obavljanja usporedbe je N2 jer se svaka datoteka usporeĎuje sa svakom drugom. Prijavljena sličnost od 100% ne tvrdi da su dvije datoteke identične, već vjerojatno jako slične jer pri usporedbi digitalnih potpisa dvaju datoteka se ne koristi potpuni skup, već nasumično odabrani podskup svih potpisa. TakoĎer, kao što će rezultati pokazati, rezultat od otprilike 80% ponekad u stvarnosti označava dvije apsolutno identične datoteke. Kako je izlaz usporedbe relativno nečitljiv kad se radi o konzolnoj aplikaciji, razvijena je pomoćna java aplikacija koja obraĎuje dobivene podatke te stvara dvije dodatne datoteke s boljim prikazom podataka. Slika 3.1 nudi prikaz glavnog razreda koji sadrži logiku za obradu rezultata. Program stvara dvije vrste izvještaja: jedan u kojem su rezultati usporedbe grupirani po postotku kojim su ocijenjeni te drugi koji za svakog studenta definira lanac povezanih studenata u padajućem trendu po ocjeni sličnosti njihovih programa. Nad sve tri arhive izvornih tekstova programa je izvršena naredba s istim parametrima, konkretno: [abaotic@meneldil ~]$ ../sherlock -z 2 -n 3 *.*> os45_5.txt Dvije od tri arhive su predane programu nepromijenjene u bilo kojem smislu, dok su u trećoj ciljano odabrana dva studenta te je nad njihovim rješenjima postupno načinjeno 5 izmjena: dodavanje/brisanje komentara, mijenjanje imena identifikatora i procedura, izmjena lokacija varijabli i procedura unutar datoteke, kombiniranje procedura i naredbi te izmjena naredbi kontrole tijeka programa 16 Pregled i usporedba postojećih sustava za detekciju plagijata Slika 3.1 Metode za obradu rezultata usporedbe Sherlockom U skladu s uputama autora, pretpostavljeni prag sličnosti ispod kojeg se podudarnosti ne prijavljuju je 20%. Broj datoteka u kojima je otkrivena sličnost iznosa ≥20% prikazan je u tablici 3.2. Tablica 3.2 Rezultati određivanja sličnosti programom Sherlock % [20,30> [30,40> [40,50> [50,60> [60,70> [70,80> [80,90> [90,100> [100] OS1 04/05 lab2 OS1 04/05 lab5 OS1 05/06 lab 5 23 15 75 4 4 40 1 3 28 1 4 10 1 0 12 1 1 5 1 1 11 0 1 2 0 0 11 Detaljnim pregledavanjem najveće sličnosti u slučaju prve arhive gdje se radilo o dvije datoteke za koje je Sherlock prijavio sličnost od 81%, utvrĎeno je da se radi o pouzdanim plagijatima. No, postotak nije reprezentativan stvarnom stanju. Objektivno, realna ocjena sličnosti bi trebala biti 100%. Radi ilustracije, nad datotekama je obavljena usporedba ugraĎenim alatom diff, čiji izlaz je preusmjeren kao ulaz za naredbu wc. Konkretno, cilj je bio prebrojati različite riječi te dvije datoteke. 17 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA [abaotic@meneldil ~]$ diff os45_2/ jr38204.c os45_2/mm38525.c 48d47 < //oslobadjanje zauzete memorije 55c54 < //zauzimanje zajdnicke memorije --> Razlika dviju datoteka su dvije linije komentara koje jedna sadrži, a druga ne. [abaotic@meneldil ~]$ diff os45_2/jr38204.c os45_2/mm38525.c | wc 6 12 90 Broj riječi koje su različite za ove dvije datoteke je 6, dok su u svim ostalim elementima apsolutno identične. Za pretpostaviti je da komentari ne smiju utjecati na otkrivanje sličnosti izvornih tekstova programa pošto ne predstavljaju nikakav aktivni dio programa. Već nakon ovog primjera se može primijetiti osjetljivost na umetanje teksta ili potencijalno loš odabir digitalnih potpisa unutar teksta na koje pouzdano ne možemo utjecati. Provjere radi, prva sljedeća najveća sličnost od 72% se odnosi na isto pouzdano plagirane datoteke, s time da iako naredba wc vraća veći broj različitih riječi, kontekst “riječ“ se ovdje doslovno odnosi na leksičku jedinku odvojenu dodatnom prazninom ili novim retkom od bilo koje druge. [abaotic@meneldil ~]$ diff os45_2/mm39688.c os45_2/am38966.c | wc 50 199 1206 Za drugu arhivu su takoĎer prvo provjerene najveće sličnosti [80,100>%. Diff i wc daju sljedeći rezultat: [abaotic@meneldil ~]$ diff os45_5/ mj38269.c os45_5mb39052.c 57c57 < puts(tocan_rez); --> // puts(tocan_rez); [abaotic@meneldil ~]$ diff os45_5/mj38269.c os45_5/mb39052.c |wc 4 7 56 Dodatnom ručnom usporedbom je potvrĎeno da su datoteke apsolutno identične. Drugi skup datoteka s najvećom sljedećom sličnosti diže broj različitih riječi na 16, opet u komentarima i dodatnim razmacima i novim recima. Na temelju do sada obraĎenih podataka pouzdano znamo da je ocjena koju Sherlock pridijeli paru datoteka preslaba, tj. da bi ljudski ispitivač vrlo vjerojatno odmah prepoznao plagijat bez imalo dvojbe o istinitosti. Kako autori dodatno tvrde da čak i ako se neki par datoteka procijeni na 100 postotnu sličnost, da je to samo vjerojatnost, onda se nameće potreba provjeriti datoteke za koje to je slučaj. Dodatno, slijedi i provjera progresivno plagiranih datoteka s ciljem točnog odreĎivanja na koje metode plagiranja je Sherlock osjetljiv. 18 Pregled i usporedba postojećih sustava za detekciju plagijata U trećoj skupini je provjerena prvo 100% ocjena sličnosti, čiji su sudionici prikazani u tablici 3.3. Tablica 3.3 Grupacije sličnosti po osobama % 100 100 100 100 100 100 100 100 100 100 osoba1 dg39914 dg39914 dg39914 ds38045 ds38045 eh39292 eh39292 ib39262 il39976 sk40046 osoba2 ds38045 sk40046 vk40723 sk40046 vk40723 ib39262 pr39084 pr39084 tk38463 vk40723 Vidljivo je da je Sherlock izdvojio tri grupe plagijatora, od kojih prvu grupu čine { dg39914, ds38045, sk40046 i vk40723}, drugu {eh39292, ib39262 i pr39084} i treću {il39976 i tk38463}. Ručnim usporeĎivanjem njihovih izvornih tekstova programa za prvu skupinu otkriveno je da se radi o potpuno identičnim datotekama, što je i diff potvrdio ne otkrivši ikakvu razliku u datotekama. U drugoj skupini je jedina razlika bila u dva prazna retka koji su bili prisutni u jednom od tri izvorna teksta. Preostala dva teksta treće skupine su takoĎer bili u potpunosti isti. Kako pouzdano znamo da postoje plagirani izvorni tekstovi i način na koji su nastali, slijedi daljnja analiza ocjene aplikacije Sherlock iza te datoteke. U ovom slučaju nam je od veće koristi sortiranje rezultata po korisnicima, a ne postotku. Tablica 3.4. prikazuje odnos meĎu verzijama plagijata izvornog teksta te kako ih Sherlock ocjenjuje. Tablica 3.4 Sličnosti među verzijama istog izvornog teksta (Sherlock) ab39352_ ab39352_1 ab39352_2 ab39352_3 ab39352_4 ab39352_ ab39352_1 ab39352_2 ab39352_3 ab39352_4 100 69 54 51 47 af39592_ 69 100 79 72 68 af39592_1 54 79 100 91 84 af39592_2 51 72 91 100 90 af39592_3 47 68 84 90 100 af39592_4 af39592_ af39592_1 af39592_2 af39592_3 af39592_4 100 50 49 43 41 50 100 28 27 25 49 28 100 85 83 43 27 85 100 98 41 25 83 98 100 19 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Datoteke bez sufiksa iza '_' predstavljaju originalni izvorni tekst programa koji je predan u okviru provjere. Promjene su obavljene redoslijedom kojim su navedene u nastavku: 1. proizvoljna promjena podskupa identifikatora, 2. dodavanje, izmjena i brisanje komentara, 3. izmjena redoslijeda deklaracija, dodavanje procedura i naredbi koje ne rade ništa, 4. izmjena naredbi kontrole tijeka programa. Na temelju podataka iz gornje tablice vidljivo je da je Sherlock najosjetljiviji na promjenu identifikatora. Ovo se može objasniti činjenicom da se Sherlockovo računanje digitalnih potpisa odnosi na čisti tekst, a ne na pročišćenu verziju koju bismo imali nakon obavljene leksičke analize. Drugi najlakši način kako prevariti otkrivanje sličnosti aplikacije Sherlock su komentari. Komentara može biti iznimno puno te očito stvaraju značajan šum pri otkrivanju sličnosti. Zadnje dvije izmjene očito imaju manji utjecaj na izračun sličnosti. To se može objasniti time što neovisno gdje se neki programski odsječak nalazi, svejedno će po nekom kriteriju biti uključen u digitalni potpis. Zadnja vrsta izmjene bi mogla biti značajna u hipotetskoj situaciji gdje ima iznimno puno petlji, koje bi se mogle zamijeniti pozivajućim procedurama. PronaĎen je jedan zanimljiv primjer kod proučavanja izvornih tekstova nastalih od af39592_, a to je značajnija sličnost od 66% s ll40615 te 51% s mo39897. Nakon meĎusobnog usporeĎivanja tih dviju datoteka, dobivena je sličnost od 49%. No nakon ručne usporedbe tekstova otkriveno je da im je struktura preslična, imena identifikatora su identična i specifična, a tek manje naredbe su izdvojene kao pozivajuće metode. Može se zaključiti da se radi o plagijatu, srodnom af39592_. No, ovdje je inovativnost pojedinca bila originalna te je demonstriran još jedan problem u otkrivanju sličnosti. OdreĎeni broj naredbi je dobio prefiks, infiks ili sufiks od skupa znakova koji se ne mogu protumačiti kao leksički ili sintaksno ispravni, poput : if ((ulazniPajp[1] dhfdh= open("ulazniPajp", O_WRONLY)) == -1) {... else printf(ydxfh"NEISPRAVNO, tocan odgovor je %d.\n", tocanOdgovor);... execlp("rm", "rmdhf", "ulazniPajp", "izlazniPajp", NULL);... zad[strydhlen(zad)] = '\n';... Ukoliko se u okviru otkrivanja sličnosti ne obavlja i prevoĎenje programa, bez ručne provjere sličnosti ovakvi izvorni tekstovi bi bili iznimno teško otkriveni. 3.8.2.Detekcija plagijata sustavom MOSS Usporedba sličnosti pomoću sustava MOSS se svodi na pokretanje perl skripte koja će odabrane parametre i sve datoteke poslati na udaljeni poslužitelj te po provedenoj usporedbi natrag vratiti jedinstvenu poveznicu (engl. URL) na kojem se mogu vidjeti rezultati usporedbe. Skriptu je potrebno zatražiti te po potvrdi ju autori automatizirano šalju e-mailom natrag, sa jedinstvenim korisničkim brojem unutar nje. 20 Pregled i usporedba postojećih sustava za detekciju plagijata Prilikom pokretanja usporedbe izvornih tekstova programa sustav MOSS podržava nekoliko opcija navedenih u nastavku. -l language; Ovim parametrom se definira jezik usporedbe ("c", "cc", "java", "ml", "pascal", "ada", "lisp", "scheme", "haskell", "fortran", "ascii", "vhdl", "perl", "matlab", "python", "mips", "prolog", "spice", "vb", "csharp", "modula2", "a8086", "javascript", "plsql"). -d directory; Ovim parametrom se definira lokacija skupa datoteka za usporedbu. -b basefile; Ovim parametrom se definira datoteka s izvornim tekstom programa kojeg treba izuzeti iz usporedbe. -m maxoccur; Ovim parametrom se definira broj datoteka u kojima se smije pojaviti neki programski odsječak prije no što ga treba isključiti iz procesa usporedbe. Pretpostavlja se da je često korišten odsječak izvornog teksta programa pravilo ili neizbježna podudarnost koju se ne može smatrati plagijatom. Što je brojka veća, otkrivanje sličnosti je manje osjetljivo. Manje vrijednosti pomažu u otkrivanju stvarno značajnih sličnosti. -c comment; Ovim parametrom se definira komentar pri definiranju usporedbe. -x experimental; Ovim parametrom se datoteke šalju na eksperimentalni, manje stabilni poslužitelj koji podržava nove opcije i funkcionalnosti. Pokretanje skripte ne zahtijeva nikakve instalacijske procedure. Pošto je skripta pisana u perlu, potrebno je samo ažurirati prvu liniju skripte i postaviti put do naredbe perl. Slanje datoteka na poslužitelj se obavlja s: [abaotic@meneldil ~]$ perl ./moss os565/*.c Checking files . . . OK Uploading os565/ab01234_1.c ...done. Uploading os565/ab01234_2.c ...done. ... Uploading os565/zs56789.c ...done. Query submitted. Waiting for the server's response. http://moss.stanford.edu/results/123456789 [abaotic@meneldil ~]$ Čim se sa poslužitelja dobije odgovor u obliku poveznice, rezultati usporedbe su spremni za daljnju obradu. Format u kojem su rezultati objavljeni je u obliku: Datoteka1 (%1) Datoteka2 (%2) N Vidljivo je da sustav MOSS na temelju broja linija N koje datoteke dijele odreĎuje postotak sličnosti, ali za svaku datoteku posebno. Rezultati ne djeluju organizirano niti sortirano ni po kojem očitom algoritmu, tako da je potrebna daljnja obrada. Podaci prikazani u tablici 3.5. su obraĎeni u programu Microsoft Excel 2010, redoslijedom sortiranja po broju zajedničkih linija, zatim po postocima, pa abecedno. Prilikom stvaranja izvještaja s rezultatima sustav MOSS inicijalno ograničava svoj izlaz na 250 linija, dok je zbog preglednosti u tablici prikazano samo desetak rezultata iz svake arhive. Zanimljiva je činjenica da ne postoji par datoteka za koje sustav MOSS daje ocjenu sličnosti od 100%, ali isto tako nema drastične diskretne pomake u ocjenjivanju već se primjećuje puno veća razlučivost rezultata. Kao 21 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA provjera vjerodostojnosti rezultata, nasumično je pregledano nekoliko parova datoteka. Tablica 3.5 Rezultati usporedbe sličnosti pomoću sustava MOSS osoba1 % osoba2 % N fr2393.c 87% mr39083.c 79% 80 ad39143.c 97% pg40172.c 96% 79 am38966.c 77% mm39688.c 81% 79 ad39143.c 95% mm39954.c 96% 77 mm39954.c 99% pg40172.c 97% 76 jr38204.c 99% mm38525.c 99% 73 vv39333.c 70% zb39372.c 64% 70 am37918.c 51% dl39496.c 62% 69 mh40237.c 74% mm39954.c 79% 66 mh40237.c 74% pg40172.c 78% 66 % N osoba1 % osoba2 id38727.c 94% pf39505.c 97% 134 im40129.c 80% mp40071.c 85% 109 gn39486.c 76% ll39521.c 86% 90 is14498.c 99% mv40000.c 99% 88 gs38965.c 93% ts38205.c 93% 88 am39957.c 72% mk40096.c 72% 87 em39900.c 90% sr40340.c 89% 86 dj39788.c 82% th40030.c 78% 76 bj39368.c 60% nj40032.c 55% 76 em39900.c 74% ma40333.c 49% 74 mb39052.c 96% mj38269.c 96% 70 mv40000.c 81% tp39916.c 59% 70 % N osoba1 % ossoba2 ab39352_1.c 98% ab39352_.c 98% 140 mm37868.c 97% mn40240.c 97% 147 il39976.c 98% tk38463.c 98% 135 ab39352_2.c 84% ab39352_3.c 83% 132 ab39352_3.c 83% ab39352_4.c 78% 132 ap40425.c 98% sp40106.c 98% 130 dz41027.c 96% il39976.c 96% 130 dz41027.c 96% tk38463.c 96% 130 il39976.c 91% mn40240.c 88% 127 mn40240.c 88% tk38463.c 91% 127 il39976.c 91% mm37868.c 87% 124 22 Pregled i usporedba postojećih sustava za detekciju plagijata mm37868.c 87% tk38463.c 91% 124 U prvoj arhivi prvo je odabran par datoteka s najvećim brojem zajedničkih linija, fr2393.c i mr39083.c. Za prvu datoteku je sličnost ocijenjena s 87%, a za drugu s 79%. Ručnim pregledavanjem datoteka otkrivena je značajna sličnost, koja se odokativno podudara s ocjenom sustava MOSS. Ima manjih odstupanja u organizaciji naredbi te dosta razlika u količini komentara koji su očigledno imali velik utjecaj na ocjenu sličnosti. Sljedeće dvije datoteke ad39143.c i pg40172.c su ocijenjene s parom 97%-96% sličnosti, a ručnom usporedbom je utvrĎeno da je ukupna razlika dvaju tekstova sadržana u dva umetnuta prazna retka, imenu jedne varijable i izmjeni iz if-else if u dva if odsječka. I ovdje se ocjena pokazala realnom. Zadnja ručna usporedba iz prve skupine se odnosi na datoteke mm39954.c i pg40172.c koje su ocijenjene sa 99%-97% sličnosti. Ovdje je ocjena sličnosti opet potvrĎena ručnom provjerom. Razlika datoteka se sastojala u promjeni povratnog tipa main metode iz int u void, čime je bila potrebna i dodatna povratna naredba na kraju glavne metode. Zanimljivo je da izvoĎenje naredbe diff i wc nad ove dvije datoteke daje poražavajuće rezultate: [abaotic@meneldil os452]$ diff mm39954.c pg40172.c | wc 93 207 2284 Sherlock je ove dvije potvrĎeno identične datoteke ocijenio s nezanimljivih 28%. Tablica 3.6. prikazuje ocjenu sličnosti sustava MOSS za pouzdano plagirane datoteke. Tablica 3.6 Sličnosti među verzijama istog izvornog teksta programa (MOSS) ab39352_ ab39352_1 ab39352_2 ab39352_3 ab39352_4 ab39352_ ab39352_1 ab39352_2 ab39352_3 ab39352_4 98 98 64 43 38 af39592_ 98 98 64 43 38 af39592_1 65 65 98 83 69 af39592_2 44 44 84 98 78 af39592_3 42 42 74 83 99 af39592_4 af39592_ af39592_1 af39592_2 af39592_3 af39592_4 98 98 98 51 51 98 98 76 51 51 98 76 98 51 51 51 51 51 98 98 51 51 51 98 98 Prva zanimljivost ove usporedbe je da su datoteke nakon usporedbe s njima samima ocijenjene s 98%, iako bi ocjena trebala biti 100%. Autor sustava je ponudio objašnjenje da MOSS ne pronalazi sve sličnosti, već velik postotak te da je za očekivati da identični izvorni tekstovi budu ocijenjeni s 97%-98%. No čak i uz tu 23 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA nelogičnost, ocjena je i dalje pouzdano visoka. TakoĎer vidimo da promjene imena procedura i varijabli neće utjecati na proces usporedbe. Komentari nažalost poprilično utječu na ocjenu sličnosti, ali samo zbog ukupnog broja linija u izvornom tekstu. Očito je da se u težinu ocjene mora uračunati i sam broj zajedničkih linija. Promjena organizacije samog teksta i njegovih dijelova ima opet manji utjecaj nego što su komentari imali, što nam daje do znanja da je Moss neosjetljiv na premještanja dijelova teksta. Konačno, daljnje promjene u vidu drugačijeg definiranja naredbi kontrole tijeka programa isto nemaju značajniji utjecaj. Dodatna korisna karakteristike sudstava MOSS je mogućnost izdvajanja očekivano sličnih programskih odsječaka. U zadacima gdje se od studenata traži implementacija nekih specifičnih algoritama te gdje znamo da se odreĎeno ponavljanje mora dogoditi, Moss unosi dozu korektnosti ne uključujući takve odsječke u usporedbu. Isti efekt se postiže definicijom –b opcije prilikom pokretanja skripte. Još samo treba primijetiti da ocjena sličnosti nije simetrična, već ovisi o udjelu podudarajućih linija teksta u pojedinačnim datotekama. 3.8.3.Detekcija plagijata sustavom CodeMatch Kako se radi o komercijalnom sustavu, tj. kolekciji aplikacija različitih namjena, od predstavnika je zatražena evaluacijska kopija i maksimalni mogući broj licenci za pokretanje usporedbe. Broj dodijeljenih licenci je bio dovoljan za jedno pokretanje aplikacije CodeMatch, nad isključivo jednom arhivom izvornih tekstova programa. Odabrana je treća arhiva, prvenstveno zbog pouzdano izmijenjenih izvornih tekstova koji se koriste kao kontrolna podskupina. CodeMatch je Windows aplikacija koja se pokreće lokalno, a svoje rezultate sprema u lokalnu tekstualnu bazu podataka. Rezultati se tumače nakon generiranja izvještaja u formatu html, takoĎer kroz aplikaciju. Pokretanjem aplikacije CodeMatch prvo se nudi prozor s postavkama usporedbe (Slika 3.2). Slika 3.2 Postavke usporedbe aplikacije CodeMatch 24 Pregled i usporedba postojećih sustava za detekciju plagijata Da bismo dobili što detaljniju usporedbu, odabrani su svi elementi po kojima CodeMatch može usporeĎivati te je odabran visok prag broja datoteka koje se pojavljuju kao mogući parovi. Rezultati usporedbe se sastoje od općenitog izvještaja s popisom korištenih elemenata usporedbe, korištenog programskog jezika te liste sličnih izvornih tekstova za svaku datoteku sortiranih po padajućoj vrijednosti postotka sličnosti. Kako je takav pregled rezultata relativno nepraktičan, odreĎeni podskupovi rezultata su posebno izdvojeni kako bi pokazali sličnosti i razlike s prethodno obraĎenim aplikacijama. Iz treće arhive su prvo odabrani podskupovi identičnih datoteka različitih autora te je u tablici 3.7 prikazana ocjena sličnosti koju je sustav CodeMatch odredio. Tablica 3.7 Rezultati usporedbe sličnosti datoteka % File %2 File2 100 100 100 100 dg39914.c ds38045.c sk40046.c vk40723.c 100 100 100 80 eh39292.c ib39262.c pr39084.c lg40141.c 93 90 84 83 tl40790.c dm40378.c tf38696.c sn38757.c 100 100 99 92 il39976.c tk38463.c dz41027.c mn40240.c 82 77 tt40554.c zk40138.c 100 100 ap40425.c sp40106.c Rezultati dobiveni ovom aplikacijom su simetrični, što znači da neovisno o usporeĎivanju datoteke A s datotekom B ili datoteke B s A, rezultat je uvijek isti. U prvom stupcu se nalazi proširena skupina koju smo otkrili još kod otkrivanja sličnosti s aplikacijom Sherlockom te prepoznajemo skupinu studenata {dg39914, ds38045, sk40046 i vk40723}. I ovdje je ocjena sličnosti u potpunosti u skladu s realnom situacijom, a to je da pouzdano znamo da se radi o 100%-tnim plagijatima. U drugom stupcu prepoznajemo našu drugu skupinu plagijatora {eh39292, ib39262 i pr39084}, s kojima je prva sljedeća sličnost od 80%. Ručnim usporeĎivanjem datoteka utvrĎeno je da je razlika u sadržaju 5 printf i 2 write naredbe. Treća skupina potvrĎenih plagijata je takoĎer prisutna {il39976 i tk38463}, s još dvije datoteke s visokom ocjenom sličnosti, koje je aplikacija Sherlock ocijenila sa 61%(99%) i 22%(92). Kod prvog nepodudaranja CodeMatch je uspješno ignorirao brojne prazne linije i nekolicinu komentara, dok se u drugom nepodudaranju radilo o još više umetnutih komentara. Aplikacija CodeMatch je te dvije datoteke meĎusobno ocijenila s 87%, sustav MOSS s parom [89%,86%], a aplikacija Sherlock s 28%. I zadnji par u tablici koji je označen kao 100% plagijat je kod sustava MOSS dobio ocjenu [98%,98%] što je ekvivalent 100%, dok je kod aplikacije Sherlock ocijenjen s 57%. 25 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Tablica 3.8 nam prikazuje kako aplikacija CodeMatch ocjenjuje sličnost postupno mijenjanih datoteka istih autora. Tablica 3.8 Sličnosti među verzijama istog izvornog teksta (CodeMatch) ab39352_ ab39352_1 ab39352_2 ab39352_3 ab39352_4 af39592_ af39592_1 af39592_2 af39592_3 af39592_4 ab39352_ ab39352_1 ab39352_2 ab39352_3 ab39352_4 100 100 86 85 82 af39592_ 100 100 86 85 82 af39592_1 86 86 100 96 84 af39592_2 85 85 96 100 87 af39592_3 82 82 84 87 100 af39592_4 100 100 99 86 86 82 99 100 87 87 62 86 87 100 100 62 86 87 100 100 100 100 82 62 62 Ovdje nema većih iznenaĎenja u odnosu na ono što bismo očekivali. Promjena vrijednosti identifikatora nije imala nikakvog utjecaja, dodavanje i brisanje komentara umjereno, ali proporcionalno broju izmjena, dok izmjene redoslijeda i organizacije, kao i kontrole tijeka programa skoro pa uopće nisu utjecale na usporedbu. Za razliku od sustava MOSS, ovdje se kao i kod aplikacije Sherlock usporedba datoteke s njom samom ocjenjuje sa 100%. Dodatna zanimljivost koju CodeMatch nudi iz perspektive sučelja je prozor sa informacijama o napredovanju usporedbe te očekivanom trajanju iste. Za razliku od Sherlocka kojemu je za treću arhivu trebalo 0.039s, Moss čiji posao je trajao 6.046s, CodeMatch je potrošio 4m i 33s na usporedbu 119 datoteka. 3.8.4.Detekcija plagijata sustavom JPlag Kako bi se pokrenula usporedba izvornih tekstova programa pomoću JPlag, potrebno je s dodijeljenim korisničkim računom pokrenuti Java Web Start aplikaciju. Autori u pravilu odobravaju otvaranje korisničkih računa isključivo za nastavno osoblje, iako i to ograničenje nije nemoguće zaobići. Nakon pokretanja aplikacije i unosa korisničkih podataka, definiraju se detalji provjere sličnosti (Slika 3.3). Čim se odabere slanje datoteka na poslužitelj, prikazuje se prozor s detaljnim i korisnim informacijama o fazama obrade datoteka (Slika 3.4). Jedna karakteristika koju sustav JPlag dijeli s aplikacijom CodeMatch je značajno vrijeme usporedbe izvornih tekstova programa. Čim je usporedba gotova, u unaprijede definiranom pretraživaču se otvara lokalno spremljena html stranica s pregledno formatiranim izvještajem. Iako i aplikacija CodeMatch nudi histogramski prikaz sličnosti za svaku datoteku, ovdje je to puno preglednije. 26 Pregled i usporedba postojećih sustava za detekciju plagijata Slika 3.3 Definiranje nove provjere sličnosti Slika 3.4 Faze obrade datoteka sustavnom JPlag Različite grupe postotaka su označene različitim bojama kako bi ukazale na kritične datoteke. Slika 3.5 prikazuje dio rezultata otkrivanja sličnosti u trećoj arhivi izvornih tekstova programa. Vidljivo je da su pouzdano plagirane datoteke ispravno grupirane, sa sličnim postocima kao i kod sudstava MOSS, ali ovdje je sličnost skoro identičnih i potpuno identičnih datoteka ocijenjena sa 100%. I prethodno otkrivene skupine plagijatora su i ovdje označene, s time da su u pripadne grupe uključeni i drugi autori, čije su datoteke u svim ostalim aplikacijama bile ocijenjene slabije. Teško je odrediti je li to dobro ili ne. S jedne strane imamo informaciju da potencijalno postoje dodatni plagijati, no isto tako ovakav rezultat usporedbe može biti uzrokovan jednostavnošću i opsegom zadatka. Ovdje vidimo očitu razliku u odnosu na sustav MOSS koji je bio u stanju razdvojiti često ponavljane programske odsječke te ih označiti kao pravilo, a ne prepisivanje. Konkretno, za takve slučajeve sustav MOSS 27 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA je vratio kompenziranih 100% samo kada se radilo o nevjerojatnoj situaciji da su i svi identifikatori i konstante bile identične. Slika 3.5 Rezultati otkrivanja sličnosti sustavom JPlag Odabirom bilo koje datoteke iz proizvoljne liste, otvara se stranica s usporednim prikazom dviju datoteka te označenim dijelovima teksta koji se podudaraju. Jedan zanimljiv primjer sličnosti od 99.2%, očito ne uzimajući obzir imena identifikatora, je bio prouzročen dodatnom naredbom break koju prva datoteka nije imala. Dakle postoji osjetljivost i na suptilne razlike. Daljnjom provjerom rezultata nisu otkrivene lažne pozitivne ocjene sličnosti. 3.8.5.Ruĉno odreĊivanje sliĉnosti odabranih izvornih tekstova programa Ne postoji pouzdanija metoda za odreĎivanje sličnosti izvornih tekstova programa od ručnog pregledavanja i usporeĎivanja datoteka. Iako takav način traženja plagijata nudi točnost, nemoguće je očekivati da jedna ili nekoliko osoba pregledava skup od 600 ili više izvornih tekstova. TakoĎer, poprilično je teško od ljudskog ispitivača očekivati procjenu sličnosti u obliku postotka, pa će se rezultati označavati elementima iz skupa vrijednosti [0, ½, 1], pri čemu ocjena 0 znači da par datoteka nije sličan sadržajem, ½ da se ne može odrediti razlog visoke sličnosti ili sličnost nije dovoljno visoka te 1 ukoliko se sigurno radi o plagijatu. 28 Pregled i usporedba postojećih sustava za detekciju plagijata Arhive koje su odabrane za potrebe ispitivanja su redom veličine 100 datoteka, od kojih svaka datoteka ima otprilike 100 linija teksta. Kako bi se načinila najtočnija moguća usporedba sa sustavima za detekciju plagijata, odreĎen je podskup nasumično odabranih datoteka te je nad njima odraĎena ručna usporedba. Datoteke su redom odabrane iz treće arhive gdje se već nalaze i umetnuti plagijati, za koje će se koristiti naziv originalne datoteke bez numeričkog sufiksa, a sadržajem datoteka s najvećim brojem izmjena. U najgorem slučaju ispitivač koji bi ručno tražio plagijate unutar arhive od 30 datoteka morao bi obaviti usporedbi. No kako se isti programski tekst redovito “reciklira“ meĎu širom populacijom studenata, pojavljuju se grupe sličnih tekstova, čime se detekcija plagijata svodi na svojevrsno sortiranje datoteka u zasebne grupe. Ukupno je obavljeno preko 300 pojedinačnih usporedbi uz uvjet da se izuzmu sve kombinacije za koje niti jedan od do sada obraĎenih sustava nije dojavio barem 1% sličnosti. Tablica 3.9 prikazuje 20/45 kombinacija datoteka za koje je ručnom provjerom utvrĎeno da su plagijati te im je dana ocjena 1. Tablica 3.9 Rezultati ručne usporedbe - potvrđeni plagijati Osoba1 ab39352_1.c af39592_1.c af39592_3.c ap40425.c eh39292.c eh39292.c ib39262.c dz41027.c af39592_1.c af39592_2.c mn40240.c ah40545.c ah40945.c dz41027.c it38671.c it38671.c ab39352_2.c ab39352_3.c af39592_1.c af39592_2.c Osoba2 ab39352_.c af39592_2.c af39592_4.c sp40106.c ib39262.c pr39084.c pr39084.c tk38463.c ll40615.c ll40615.c tk38463.c dh40591.c dh40591.c mn40240.c ll40615.c rd40025.c ab39352_3.c ab39352_4.c it38671.c it38671.c Ocjena 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Moss 98 98 98 98 98 98 98 96 93 93 91 90 90 89 86 85 84 83 81 81 Sherlock 72 18 100 64 100 100 100 62 20 0 21 2 57 29 9 1 100 94 3 0 JPlag 100 100 100 100 100 100 100 86 92 92 100 80 82 86 100 92 100 91 92 92 Codematch 100 62 100 100 100 100 100 99 52 86 92 26 60 87 51 47 96 87 44 48 Rezultati su sortirani u odnosu na padajuću ocjenu sličnosti sustava MOSS te potom abecednim redom. Ako promotrimo rezultate, može se zaključiti da je aplikacija Sherlock pomalo kaotična i očito poprilično neprecizna u velikom broju slučajeva. Aplikacije CodeMatch i JPlag ocjenjuju sličnost u malo širim rasponima od sustava MOSS. Druga skupina datoteka (Tablica 3.10) je ocijenjena sa 0.5 jer nije bilo moguće potvrditi niti opovrgnuti da se doista radi o plagijatu. Uzrok tome je kratak programski zadatak, strogo definirane strukture i tijeka izvoĎenja. Raspon ocjena koje Moss daje datotekama je 20%-70%, JPlag 0%-70%, CodeMatch 20%-50% te Sherlock 0%29 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA 10%. Jedino kod Sherlocka navedeni raspon ne nosi nikakvu težinu pošto i za pouzdane plagijate ponekad ocjenjuje s niskim postotkom sličnosti. Tablica 3.10 Rezultati ručne usporedbe - nepotvrđeni plagijati Osoba1 af39592_1.c af39592_2.c gb40626.c gb40626.c gb40626.c af39592_2.c af39592_3.c af39592_4.c ak37635.c gb40626.c ak37635.c ak37635.c af39592_1.c af39592_2.c af39592_3.c af39592_4.c ah40545.c ak37635.c ah40545.c ak37635.c Osoba2 rd40025.c rd40025.c it38671.c ll40615.c mp39510.c gb40626.c gb40626.c gb40626.c rd40025.c rd40025.c gb40626.c it38671.c ak37635.c ak37635.c ak37635.c ak37635.c rd40025.c mp39510.c it38671.c ll40615.c Ocjena 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 Moss 67 67 57 48 47 46 46 46 34 33 32 26 25 25 25 25 22 22 17 17 Sherlock 10 8 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 JPlag 58 58 0 0 0 68 66 65 0 0 0 0 0 0 0 0 0 0 0 0 Codematch 38 44 41 41 37 38 38 38 25 36 32 28 33 30 31 31 36 30 39 30 Preostala 241 kombinacija datoteka je ocijenjena s nulom jer nije pronaĎen dovoljno velik broj sličnosti. Tablica 3.11 prikazuje zadnjih 10 kombinacija datoteka. Sustavi Moss i JPlag datoteke koje ne smatraju plagijatima uopće ne uključuju u rezultate, pa je ovdje simbolično unesena ocjena 0. Aplikacija Sherlock je i dalje nepostojana u ocjenjivanju, dok se za CodeMatch da zaključiti da se ocjene ispod 30% mogu sa sigurnošću zanemariti. Tijekom ručnog usporeĎivanja izvornih tekstova nisu pronaĎene lažno pozitivno ocijenjene datoteke, dok je Sherlock opet primjer kako je moguće pronaći lažno negativno ocijenjene datoteke. Tablica 3.11 Rezultati ručne usporedbe - neplagirani izvorni tekstovi Osoba1 mn40240.c mp39510.c mp39510.c mp39510.c pr39084.c pr39084.c pr39084.c rd40025.c rd40025.c sh39708.c Osoba2 sh39708.c pr39084.c sh39708.c tk38463.c rd40025.c sh39708.c tk38463.c sh39708.c tk38463.c tk38463.c Ocjena 0 0 0 0 0 0 0 0 0 0 Moss 0 0 0 0 0 0 0 0 0 0 Sherlock 2 2 3 2 1 5 4 1 1 5 JPlag 0 0 0 0 0 0 0 0 0 0 Codematch 26 25 23 31 27 29 28 23 27 27 30 Analiza izvornih tekstova programa 4. Analiza izvornih tekstova programa Analiza izvornog teksta programa kod detekcije plagijata se uglavnom svodi na normalizaciju teksta te eventualno jednostavnu leksičku analizu koja je u stanju eliminirati nezanimljive dijelove teksta poput identifikatora. Slijedi kratak opis faza analize izvornih tekstova programa i dostupnih specijaliziranih alata koji ih obavljaju. 4.1. Leksiĉka analiza Leksička analiza je jedna od osnovnih operacija tijekom prevoĎenja izvornog programa u izvršni. To je proces raščlanjivanja znakova izvornog teksta programa, s ciljem da se stvori izlaz u obliku niza simbola koji se zovu leksičke jedinke (engl. lexical tokens). Analizu je moguće obaviti samostalnim programom koji učitava ulazne znakove i dijeli ih na posebne kategorije, koje zavise o programskom jeziku, na primjer: varijable, brojeve, znakovne skupove, ključne riječi ili naredbe. Jedan od poznatijih alata je program Lex koji na temelju ulazne datoteke s izvornim tekstom programa i datoteke s pravilima programskog jezika stvara datoteku s leksičkim jedinkama. 4.2. Sintaksna analiza Sintaksna analiza ili parsiranje je proces analiziranja programa, tj skupa leksičkih jedinki kako bi se odredila gramatička struktura u odnosu na neku zadanu formalnu gramatiku. Postoji nekoliko načina parsiranja, a dostupni su i različiti alati koji mogu olakšati sintaksnu analizu. Tako se (uz program Lex za leksičku analizu) za parsiranje tipično koristi Yacc, takoĎer slobodan za upotrebu. Dostupni su kompleksni sustavi koji obavljaju i leksičku i sintaksnu analizu na temelju prethodno pripremljenih pravila i gramatika. 4.3. Analiza tijeka izvoĊenja programa i optimizacija Konačno, na kraju dolazi analiza izvoĎenja programa i procesa optimizacije. Pokušava se odrediti je li došlo do kopiranja izvornog teksta programa na bilo kojem mjestu. Bilo da se radi o slučaju da su ti dijelovi nepotrebni, slučajno definirani ili namjerno umetnuti s ciljem otežavanja usporedbe sličnosti, tijekom ovog dijela analize dolazimo do nužne jezgre izvornog teksta programa. 4.4. Alati za analizu izvornog teksta programa Najpoznatiji program koji omogućuje automatiziranu izgradnju leksičkog analizatora je Lex (engl. Lexical analyser generator). Osim za izgradnju leksičkog analizatora, program Lex koristi se za rješavanje problema koje je moguće svesti na problem prihvaćanja regularnih jezika. Potrebno je pripremiti datoteku s pravilima i regularnim izrazima programskog jezika kojeg želimo koristiti te datoteku s izvornim tekstom programa, na temelju čega Lex generira izlaz u obliku datoteke s tokenima. Zamjerke 31 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA programu su neodgovarajuće korisničko sučelje i neučinkovitost generiranog programa. Osim Lexa, moguće je koristiti i neki od programa navedenih u nastavku. Flex; Radi se o djelomično promijenjenoj verziji Lexa za C/C++. Jlex; Radi se o analizatoru leksike za Javu. Quex; Radi se o analizatoru leksike za C++. Ragel; Radi se o analizatoru s podrškom za C, C++, Objektni-C, D, Javu i Ruby. Antlr; Radi se o generatoru leksičkih analizatora. Nakon leksičke analize, parsiranje se može odraditi s programom Yacc (engl. Yet Another Compiler-Compiler), koji kao ulaz prima izlaznu datoteku Lexa te na temelju pravila jezika grupira tokene u smislene skupine. Osim programa Yacc, sljedeće programe je takoĎer moguće koristiti u svrhu parsiranja: Bison; alternativa programu Yacca, koriste isti format ulaznih datoteka, Coco/R; program s podrškom za generiranje parsera proizvoljnih jezika, Lemon; generator LALR parsera za kontekstno neovisne gramatike, PQCC; generator parsera s puno opcija, Paraboiled; Javin paket za razvoj parsera, Antlr; generator parsera koji koristi LL gramatiku te GOLD; sustav za parsiranje s podrškom za različite jezike. Za potpunu analizu i izradu sintaksnog stabla izvornog teksta programa, pri izgradnji markera (5.1), koristit će se besplatan sustav za parsiranje GOLD [6]. 4.5. Sustav GOLD GOLD je sustav za parsiranje izvornih programa s podrškom za različite programske jezike. Slika 4.1 prikazuje tijek analize izvornih programa sustavom GOLD. Slika 4.1 Analiza izvornog programa sustavom GOLD Sustav koristi determinističke konačne automate za leksičku analizu te LALR (engl. Look-Ahead LR) parser. I jedno i drugo su strojevi s konačnim brojem stanja koji koriste tablice za odreĎivanje budućih akcija. Specifičnost dizajna ovog sustava je razdvojenost izgradnje LALR i DKA tablica od algoritama. Na taj način je moguće imati identične razvojne procese različitih gramatike, dok se parseri implementiraju posebno za različite programske jezike. 32 Analiza izvornih tekstova programa 4.5.1. Komponenta Builder Prevoditelj (engl. builder) je primarna komponenta sustava i ulazna točka aplikacije. Zadaća mu je analizirati sintaksu nekog jezika prikazanog gramatikom te konstruirati LALR i DKA tablice za isti. Nakon što je proces konstrukcije gotov, rezultat je zapisan u datoteku prevedenih tablica gramatike. Neke značajke prevoditelja su: freeware licenca, pretraživanje stanja, ugraĎeno ispitivanje, sustav za ispitivanje skupa datoteka, generiranje web-stranica, izvoz gramatika za program Yacc te izvoz tablica u formatu XML(engl. Extensible Markup Language). 4.5.2. Prevedene tablice gramatika Datoteka s prevedenim tablicama gramatika služi isključivo za pohranu informacija koje je prevoditelj generirao tijekom svog rada. Ovdje korištene gramatike su temeljene na BNF (engl. Backus-Naur Form) sustavu oznaka i regularnim izrazima. BNF sustav oznaka služi opisu sintaksi pojedinih programskih jezika, dok su regularni izrazi, najjednostavnije rečeno, nizovi znakova koji opisuju druge nizove znakova. Najčešća namjena regularnih izraza je opisivanje uzorka za pretraživanje nizova znakova. 4.5.3. Komponenta engine Za razliku od prevoditelja koji je implementiran isključivo za operacijski sustav Windows, komponenta za izvoĎenje jezika (engl. engine) se implementira za neki specifični programski jezik i platformu na kojem će se izvoditi. Komponenta sadrži implementacije LALR i DKA algoritama te se svaka primjerak ove komponente meĎusobno razlikuje. Moguće je implementirati ovu komponentu za bilo koji jezik, a neki od do sada implementiranih navedeni su u nastavku: Assembler (Intel x86), ANSI C, C#, D, Delphi, Java, Pascal, Python, Visual Basic, Visual Basic .NET te 33 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Visual C++. 4.5.4. Implementacija komponente za izvoĊenje jezika sustava GOLD-a u programskom jeziku C# Kako bi se mogao koristiti sustav GOLD unutar vlastitog projekta pisanog u programskom jeziku C#, na raspolaganju je javno dostupan Calitha C# GOLD Parser Engine. Radi se o reimplementaciji sustava GOLD, konkretno komponente za izvoĎenje jezika, sa svim originalnim mogućnostima početne implementacije, gdje je jedina adaptacija promjena programskog jezika. Korištenje se svodi na uključivanje prostora imena projekta i pripadnih razreda u jezgru vlastite aplikacije kako je prikazano u nastavku. using Calitha.Gold.Engine; Razlog korištenja sustava GOLD je podrška leksičkoj i sintaksnoj analizi izvornih tekstova programa u sustavu CSI prilikom izgradnje markera. U sljedećem poglavlju je prikazana primjena sustava GOLD kod odreĎivanja ključnih riječi, identifikatora, konstanti te kasnije sintaksnog stabla. Radi se o elementima od kojih će neki poslužiti nakon procesa odreĎivanja sličnosti kao statistički pogled na razlike dva teksta, dok se rad sa sintaksnim stablima može automatski preslikati u usporeĎivanje izvornih tekstova programa. 34 OdreĎivanje značajki izvornih tekstova programa 5. OdreĊivanje znaĉajki izvornih tekstova programa U poglavlju [2] su objašnjene metode obrade prirodnog teksta i algoritmi za usporedbu sličnosti znakovnih nizova. Iako izvorni tekstovi programa sadrže znakovne nizove oni se ne mogu usporeĎivati isključivo kao znakovni nizove zbog nekoliko razloga. Sadržaj izvornih tekstova se sastoji od ključnih riječi koje su specifične za programski jezik, specijalne znakove i operatore koji vrijede za većinu programskih jezika te promjenjivih elementa poput identifikatora, varijabli, metoda i komentara. Kako svi elementi nemaju istu ulogu niti su podložni promjenama potrebno je obraditi izvorni tekst programa na način koji nam omogućuje izdvajanje pojedinih grupa elemenata programskog jezika. U poglavlju [4] je opisan proces analize izvornih tekstova programa koji nudi potrebno raščlanjivanje elemenata. Sustavi i aplikacije za detekciju plagijata koriste kombinaciju analize izvornih tekstova programa s metodama analize običnih znakovnih nizova. Iako su u većini slučajevi njihovi rezultati pouzdani, niti jedan od do sada opisanih sustava nije u stanju usporediti izvorne tekstove programa koji su pisani u različitim programskim jezicima. U nastavku je opisana osnovna ideja izrade skupa značajki izvornog teksta programa (marker), njegova struktura te način na koji se te značajke odreĎuju i usporeĎuju. 5.1. Osnovna ideja Problem nekompatibilnosti procesa usporeĎivanja izvornih tekstova različitih programskih jezika je bila motivacija za izradu univerzalnog i sveobuhvatnog skupa značajki izvornih tekstova programa. Ni proces usporedbe nije strogo jednoznačno definiran jer potrebe i zahtjevi usporedbe nisu uvijek isti. Izrada svih mogućih traženih metoda usporedbe bi sama po sebi mogla biti izrazito dugotrajna i upitne koristi. Ovo je upravo polazna ideja za markere izvornih tekstova programa. Svako programsko rješenje, neovisno o programskom jeziku u kojem je pisano, moglo bi se raščlaniti na nekoliko osnovnih elemenata sa specifičnim redoslijedom i strukturom. Cilj ove raščlambe je odrediti i dobiti sve informacije i detalje o izvornom tekstu programa. Ostaje pitanje koje sve informacije mogu biti zanimljive prilikom usporedbe dva izvorna teksta programa. Za početak to mogu biti detalji poput veličine originalne datoteke, sažetka izračunatog nekim kriptografskim algoritmom nad njenim sadržajem, broja linija izvornog teksta programa, broja praznih linija, itd. Iako na prvi pogled nije očito, informacija poput sažetka datoteke se u daljnjoj analizi pokazala poprilično korisnom. Zamislimo scenarij u kojem student odluči preuzeti tuĎi rad pod svoj, bez da obavi ikakvu izmjenu programa. U tom slučaju će markeri oba izvorna teksta programa biti identični jer su algoritmi koji ih grade deterministički. Ako promotrimo usporedbu kao skup algoritama i metoda od kojih su neke pametnije od drugih, tada bi usporedba dva sažetka spadala u trivijalnije, ali itekako učinkovite i brze. Time se štedi na vremenu jer se oni pametniji algoritmi usporedbe uopće ne moraju pokretati. 35 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Sljedeće informacije koje bi bilo korisno imati jesu statički elementi programa poput ključnih riječi, operatora, konstanti i njihovog ponavljanja. Isto vrijedi za identifikatore varijabli, procedura i razreda te blokove i kontrolu tijeka programa. Moglo bi biti zanimljivo skup značajki s popisom varijabli, blokova i procedura koje se u izvoĎenju programa uopće ne koriste već su namjerno umetnute kako bi narušile sličnost s izvornim programom. Analiza rada postojećih sustava za detekciju plagijata je pokazala osjetljivost na ovaj način plagiranja. Problem je odrediti koji skup značajki je važniji i pouzdaniji u procesu usporedbe. Jasno je da je moguće napisati dva programa potpuno različite namjene, a da imaju identične varijable i imena, pogotovo ako se radi o kraćim radovima. 5.2. Opis strukture markera Marker predstavlja razred implementiran u objektno-orijentiranom programskom jeziku C# te se pohranjuje u bazu podataka. Njegovi privatni članovi su definirani kao skupovi logično povezanih elemenata, poput statičkih značajki datoteke, informacija o memorijskom zauzeću datoteke, leksičkoj analizi i metrici programa, sintaksnoj analizi i stablu te redundantni elementi izvornog teksta programa. U cilju što preglednijeg prikaza markera koristit će se format XML. Slika 5.1 prikazuje dio strukture markera čiji elementi su popunjeni vrijednostima za neku proizvoljnu datoteku. Slika 5.1 Prikaz sadržaja strukture markera Unutar oznake <marker> definira se XML atribut imena datoteke, identifikatora markera te datum i vrijeme kreiranja markera. Ovo je ujedno i glavna oznaka cijele XML datoteke, dok ostali dijelovi kao i njihova popunjenost može varirati u ovisnosti o programskom jeziku izvornog teksta programa. 36 OdreĎivanje značajki izvornih tekstova programa Ostale oznake koje definiraju grupe i vrste elemenata datoteke su: <checksums>, <properties>, <lex>, <syntax> i <kgrams>. Kako sustav GOLD podržava leksičku i sintaksnu analizu velikog broja programskih jezika, ostatak metoda definiranih za izgradnju markera mora biti neosjetljiv na jezik programa u kojem je izvornih tekst pisan. Za potrebe ispitivanja obraĎivat će se samo izvorni tekstovi programa pisani u programskom jeziku C. 5.2.1.Sažeci datoteke Sažeci (engl. checksums) su numeričke vrijednosti sadržaja datoteke dobivene pozivom nekog kriptografskog algoritma nad njenim sadržajem. Ideja je izračunati sažetak nad izvornom datotekom koja sadrži izvorni tekst programa te ponoviti postupak nad djelomično normaliziranom datotekom. Pod normalizacijom datoteke se smatra postupno brisanje praznina, tabulatora, oznaka za sljedeći redak te brisanje jednolinijskih i višelinijskih komentara. Rezultat obrade je manji skup informacija o datoteci koji se može pokazati ključnim u postupku trivijalne usporedbe izmeĎu dva markera. Naime, ovdje se uopće ne ulazi u dubinsku analizu izvornog teksta programa, već se gleda ukupni otisak datoteke. Zamislimo obavljanje jednostavnog upita u bazu podataka koji bi samo postavio pitanje postoji li već neki marker koji ima identičan sažetak. Interpretacija pronaĎenog duplikata je jednostavna, ali statistički gledano ne i sigurna. Vrlo vjerojatno se radi o identičnom markeru, no moguće je iako ne i vjerojatno da su različiti. Razred koji sadrži logiku odabira algoritma za izračun sažetaka od proizvoljnog ulaznog niza znakova je djelomično prikazan na slici 5.2 . Slika 5.2 Računanje sažetaka na uporabom ugrađene funkcije algoritma MD5 Osim poziva ugraĎene kriptografske funkcije algoritma MD5 (engl. MD5 MessageDigest Algorithm), u mogućnosti smo izabrati i neku drugu implementaciju, poput SHA1 (engl. Secure Hash Algorithm). Iako bi poziv ugraĎene metode GetHashCode() u programskom jeziku C# nad nizom znakova bio dovoljan (2^32 različitih vrijednosti) ovako je osigurano veće raspršenje (MD5 2^128, a SHA1 2^160 različitih vrijednosti). Ovi izračuni se obavljaju prije leksičke analize izvornog teksta. 37 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA 5.2.2.Karakteristike datoteke Pod karakteristikama datoteke (engl. properties) smatramo informacije o veličini datoteke, broju linija teksta, broju linija komentara, praznih linija, broja tokena izvornog teksta programa itd. Ove informacije se takoĎer dobivaju prije leksičke analize teksta. Razvijen je poseban razred Utilities s namjenom brzog i jednostavnog dohvata navedenih informacija tijekom stvaranja markera. Radi se o statičkom razredu čije se metode koriste bez stvaranja primjerka razreda. Metode koje se koriste u popunjavanju karakteristika su prikazane na slici 5.3. Slika 5.3 Metode za određivanje karakteristika izvornog teksta programa 5.2.3.Leksiĉka analiza Za potrebe leksičke analize korišten je sustav GOLD. U okviru stvaranja tokena potrebno je implementirati logiku koja će svaki token mapirati u pripadnu tablicu zajedno s ostalim informacijama o tokenu. Za konstante je potrebno zapisati kojeg su tipa i koja im je vrijednost, za identifikatore njihov tip, početnu vrijednost i ime, dok se u ovom dijelu analize za ključne riječi, operatore i specijalne znakove samo uvode brojači. Razred koji obavlja grupiranje znakova ulaznog niza iz izvornog teksta 38 OdreĎivanje značajki izvornih tekstova programa programa je StringTokenizer.cs. Slika 5.4 prikazuje samo dio njegovih metoda za analizu teksta. Slika 5.4 Metode za izgradnju liste tokena 5.2.4.Sintaksna analiza Tijekom sintaksne analize, za koju je opet zadužen sustav GOLD, obavlja se izgradnja sintaksnog stabla i dovršava posao započet u leksičkoj analizi. Konkretno, popunjavaju se neki dijelovi markera za koje tek sintaksna analiza može dati kontekst u kojem dobivaju smisao, poput mapiranja tipova na identifikatore i konstante. Razred u kojem je sadržan dio metoda za parsiranje nalazi se u razredu GoldLoader.cs i prikazan je na slici 5.5. Pri čitanju svakog elementa iz liste tokena, odreĎuje se sljedeća akcija na temelju pravila programskog jezika. TakoĎer se elementi dodaju u listu elemenata za grafički prikaz, koji se za potrebe aplikacije ovdje ne koristi. 39 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Slika 5.5 Razred GoldLoader i metode akcija parsiranja 5.2.5.K-grami Motivacija korištenja k-grama je uspješnost sustava za detekciju plagijata MOSS i njihovog algoritma odabira prozora – winnowing. Općenito, analiza izvornih tekstova programa je nejednoznačna i osjetljiva na umetanje, brisanje i izmjenu. Zato nužno da se izvorni tekst programa prvo normalizira. Svi nezanimljivi elementi se brišu (poput komentara) ili zamjenjuju generičkim izrazima (sva imena identifikatora s "ID"). Time se eliminira mogući utjecaj izmjene, a djelomično i umetanja teksta. Nakon inicijalne obrade teksta slijedi podešavanje osnovnih parametara k i t, gdje je k duljina k-grama, odnosno broj neprekinutih znakova niza, a t prag za dojavljivanje sličnosti nizova. Oba parametra je nužno pažljivo odabrati kako bi se izbjegao šum, ali i osiguralo dojavljivanje reprezentativnih sličnosti. Kad su svi k-grami odreĎeni, računaju se njihovi sažeci koji potom služe kao jedini elementi usporedbe u daljnjem radu. K-grame je potom nužno grupirati unutar tzv. "prozora". Prozor predstavlja 40 OdreĎivanje značajki izvornih tekstova programa grupu k-grama gdje veličina prozora w ujedno definira i broj k-grama. Ako s n definiramo duljinu niza cijelog teksta, tada formulom (5.1) definiramo prozor veličine w: (5.1) Takvi prozori se nalaze na pozicijama i, gdje je i element: (5.2) Ukoliko iskoristimo primjer iz poglavlja 2.4 tada bi za zadanu vrijednosti k=4 i w=3 prozori nad znakovnim nizom matematika sadržavali k-grame kao na Slika 5.6. Ukupno je odreĎeno 5 prozora veličine 3. Slika 5.6 Sadržaji prozora za znakovni niz matematika Algoritam winnowing koji opisuje kako odabrati sažetke unutar svakog prozora, definiran je u nastavku [3]. U svakom prozoru odabire se najmanja vrijednost sažetka. Ako postoji više minimalnih vrijednosti odabire se zadnja. Sve odabrane vrijednosti sažetaka se pohranjuju. Osim odabira najmanje vrijednosti sažetka može se odabrati i najveća, ovisno o vlastitom izboru. Korištenje winnowing algoritma se razlikuje od početne ideje sustava da se odabiru k-grami čije su vrijednosti sažetka pri modulo p operaciji jednake nuli, pri čemu je p neki proizvoljno odabrani broj. Ovakav pristup, iako iznimno točan za dobro odabrane brojeve p, isto tako može biti iznimno nesiguran ako se odabere nepovoljan broj. Nepovoljan broj je bilo koja vrijednost koja će u 0 modulo p operaciji dati jako mali skup sažetaka ili niti jedan te time onemogućiti dojavljivanje sličnosti. Algoritam winnowing osigurava odabir točno jednog sažetka iz svakog prozora, čime će očekuje da rezultantni skup sažetaka dobro predstavlja izvorni tekst programa. Modificirana metoda 0 modulo p koja nudi veću sigurnost pronalaska reprezentativnog uzorka predlaže uzimanje svih sažetaka k-grama u prozoru kod kojih standardna metoda 0 modulo p ne vraća niti jedan sažetak. Postupak se 41 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA ponavlja sve dok se ne pronaĎe prvi sljedeći rezultat 0 modulo p. Na slici 5.7 prikazane su metode za stvaranje k-grama i računanje njihovih sažetaka. Kada brzina i vrijeme ne bi bili faktor, najtočnije bi bilo usporeĎivati sve sažetke kgrama. Radi točnijeg odreĎivanja sličnosti, marker sadržava skup k-grama u skladu s algoritmom winnowing, kao i odreĎeni broj minimalnih k-grama. Dodavanje još jednog skupa u skladu s 0 modulo p operacijom je takoĎer moguće u bilo kojem trenutku. Obrada izvornog teksta programa prije stvaranja k-grama se svodi na normalizaciju i brisanje komentara. Dodatan koristan korak bi bio iskoristiti rezultat leksičke analize i zamjenu svih identifikatora varijabli i metoda nekom univerzalnom kraticom. Unutar markera definirane su dvije liste filtriranih k-grama, pri čemu je jedna stvorena algoritmom winnowing, dok druga odgovara vrijednostima odabranim 0 modulo p metodom. Slika 5.7 Metode za stvaranje k-grama 5.3. Automatizirano stvaranje skupa znaĉajki izvornih tekstova programa U okviru ovog diplomskog rada implementiran je web-sustav koji otkrivanje sličnosti izvornih tekstova programa temelji na usporeĎivanju markera izvornih tekstova programa. Implementirana je automatizirana izgradnja markera na temelju arhiva izvornih tekstova programa ili pojedinačnih datoteka. Sva analiza i obrada izvornog teksta programa se obavlja odmah prilikom predaje na sustav. Pokreće se leksička i sintaksna analiza čiji rezultati se pohranjuju ako je proces bio uspješan. Neovisno o 42 OdreĎivanje značajki izvornih tekstova programa tome, obavljaju se i izračuni sažetaka, općih karakteristika datoteke i vrijednosti kgrama po oba opisana algoritma. Nakon završene izgradnje, marker se pohranjuje u bazu podataka. Detaljni opis strukture implementiranog web-sustava i načina rada prikazan je u sljedećem poglavlju. 43 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA 6. Praktiĉni rad 6.1. Web-aplikacija CSI U okviru ovog diplomskog rada je za potrebe analize izvornih tekstova programa i izgradnje markera razvijena web-aplikacija CSI (engl. Code similarity inspection). Osnovna zadaća aplikacije je automatizirana izgradnja značajki izvornih tekstova programa, podešavanje parametara usporedbe te u konačnici otkrivanje sličnosti izmeĎu izvornih tekstova programa. Za svaku predanu datoteku izvornog teksta programa sustav gradi marker koji se sastoji od sažetaka (čije vrijednosti ovise o stupnju normalizacije teksta) te od pobrojanih praznih i punih linija teksta kao i komentara. Implementirana je leksička i semantička analiza izvornih tekstova programa temeljena na logici sustava Calitha GOLD. Prilikom predaje izvornih tekstova programa na sustav automatski se pokreće proces obrade teksta čiji je izlaz skup završnih tokena. Ti tokeni sadrže informacije o svojoj klasifikaciji (ključne riječi, operatori, specijalni znakovi, itd.). Tokeni su pobrojani i organizirani u rječnike (engl. Dictionary, Map). Isto je obavljeno za identifikatore i konstante. Omogućen je pojednostavljen prikaz sintaksnog stabla izgraĎenog tijekom parsiranja. Izračunati su k-grami temeljeni na algoritmu winnowing, kao i 0 modulo p operaciji. Zbog tijeka obrade datoteka neki parametri se podešavaju prilikom predavanja arhiva ili pojedinačnih datoteka na sustav, a neki prilikom definiranja zadatka usporedbe. Svaki marker nudi prikaz svih definiranih značajki, kao i djelomičnu XML datoteku koja sadrži sve te elemente. Cilj nepotpunog prikaza je ušteda vremena i memorije, iako je unutar stranice takoĎer moguće zatražiti preuzimanje potpune xml datoteke. Definiran je web-obrazac koji nudi podešavanje svih raspoloživih parametara koji mogu u nekoj mjeri utjecati na rezultate otkrivanja sličnosti. Svaki parametar je opisan te je predložena njegova preporučena kao i pretpostavljena (engl. default) vrijednost. I konačno, u okviru diplomskog rada je implementirana usporedba izvornih tekstova programa te prikaz rezultata. U nastavku slijede upute za korištenje web-aplikacije i opis njene strukture. Navedene su korištene tehnologije i nužni uvjeti koji moraju biti ispunjeni kako bi rad sustava bio uspješan. Opisani su skupovi izvornih tekstova programa korišteni za potrebe ispitivanja web-aplikacije i ponuĎene su upute prilikom podešavanja parametara usporedbe. Na kraju je demonstriran rad sustava na temelju unaprijed pripremljenih arhiva izvornih tekstova programa te dan osvrt na uspješnost usporedbe. 44 Praktični rad 6.1.1.Korištenje web-aplikacije Aplikacija je zamišljena kao sustav za koji nastavno osoblje može zatražiti registraciju svojim računom elektroničke pošte. Slika 6.1 prikazuje sučelje aplikacije na kojoj je obrazac za prijavu na sustav te obrazac za registriranje novog korisnika. Slika 6.1 Sučelje aplikacije Korisnici koji posjeduju korisnički račun mogu se prijaviti na sustav, nakon čega im je prikazana početna stranica i zaglavlje s navigacijom. Navigacija se sastoji od odabira tima, rada s izvještajima (engl. review), grupama korisnika, vlastitim postavkama te odjava sa sustava. Tim predstavlja proizvoljan broj korisnika koji imaju prava rada nad istim izvještajima. Ako načinimo usporedbu s proizvoljnim računarskim kolegijem, tada tim korisnika čine svi predavači, asistenti ili ispitivači zaduženi za obavljanje provjera znanja studenata tog kolegija. Studentima nije namijenjeno korištenje sustava, iako je predviĎena mogućnost komunikacije nekog drugog sustava kroz API (engl. Application programming interface), pa samim time je moguće implementirati slanje studentskih rješenja direktno na sustav CSI. Neovisno o tome, obavljanje usporedbi sličnosti i rad sa sustavom je namijenjen isključivo nastavnom osoblju. Slika 6.2 prikazuje navigaciju sustava CSI. Slika 6.2 Navigacija sustava CSI Korisnici sustava mogu: ureĎivati svoje osobne podatke, 45 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA definirati novi radni tim ili urediti postojeći (dodavanje/brisanje dodatnih članova), dodjeljivati i mijenjati dozvole članovima svog tima, stvoriti novi izvještaj ili ureĎivati postojeći, definirati listu zadataka unutar izvještaja, predati pojedinačne datoteke ili arhivu izvornih tekstova programa u neki zadatak, pregledati izgraĎene markere izvornih tekstova programa, preuzeti XML opis markera za neki izvorni tekst programa, definirati novu usporedbu ili pregledati postojeće, proizvoljno odreĎivati parametre usporedbe te težinu njihovog utjecaja na odreĎivanje sličnosti te preuzeti rezultate usporedbe u obliku tekstualne datoteke odreĎenog formata za daljnju obradu izvan sustava. Slika 6.3 prikazuje cijelu hijerarhiju elemenata u aplikaciji te njihovu meĎusobnu povezanost. Slika 6.3 Hijerarhija elemenata sustava CSI Otvaranjem korisničkog računa, korisniku se pretpostavljeno definira matični tim čiji je vlasnik taj korisnik i on automatski ima dozvole običnog korisnika. Korisnik ima mogućnost dodavati ili brisati druge korisnike iz svog tima, kao i dodjeljivati dozvole za rad unutar tima. Svaki korisnik, osim u svojem, može biti u neograničenom broju drugih timova gdje mu vlasnici odreĎuju dozvole. Dozvole koje se korisnicima pridodaju su: U (engl. user); nikakva posebna prava, C (engl. contributor); prava dodavanja novih izvještaja, zadataka i datoteka unutar tima 46 Praktični rad M (engl. manager); administrativna prava nad vlastitim timom Članovi s dozvolom barem C mogu unutar tima stvarati nove izvještaje ili ureĎivati postojeće. Slika 6.4 Stranica za rad s izvještajima Slika 6.4 prikazuje stranicu na kojoj je omogućen rad s izvještajima. Izvještaj je vršni element bilo kakve provjere izvornih tekstova programa te mu se može definirati ime i opis. On se sastoji od različitih zadataka (engl. tasks). Unutar kolegija izvještaj konceptualno odgovara nekoj laboratorijskoj vježbi, a zadaci unutar te vježbe odgovaraju pojedinim zadacima koje studenti moraju isprogramirati. Slika 6.5 Definiranje zadataka unutar izvještaja Slika 6.5 prikazuje definiranje zadataka unutar nekog izvještaja. Za svaki zadatak je takoĎer moguće definirati ime i opis. Prikazuju se i podaci o korisniku koji je definirao zadatak te kad je zadatak stvoren. Tek se unutar nekog zadatka dolazi do predaje pojedinačnih radova ili cijele arhive koja sadrži izvorne tekstove programa. Ako se radi o predaji pojedinačnih izvornih tekstova programa, tada je omogućeno definiranje i autora tog programa. U slučaju predaje arhive datoteka ime autora se dodjeljuje temeljem imena direktorija u kojem se izvorni tekst programa nalazi. Osim osnovnih detalja zadatka, ovdje je potrebno definirati i vrijednosti dva elementa koji se kasnije koriste u usporedbi izvornih tekstova. Radi se o k-gramima. Kako se cjelokupna analiza izvornih tekstova programa obavlja odmah prilikom predaje datoteka na sustav, nužno je odrediti vrijednosti za izračun k-grama odmah prilikom 47 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA definiranja zadatka. Utjecaj ovih parametara će biti detaljnije objašnjen u poglavlju o vrijednostima svih parametara usporedbe. Slika 6.6 prikazuje obrazac za predaju pojedinačnih datoteka uz definiranje autora, ali i predavanje arhiva datoteka s izvornim tekstom programa. Unutar nekog zadatka je dozvoljeno koristiti oba načina predaje datoteka, ali su za predavanje arhive definirani uvjeti strukture i vrste koji moraju biti zadovoljeni. Pretpostavi li se da se korijenski direktorij arhive zove root, autor ab12345, a datoteka s izvornim tekstom programa MojHelloWorld.c, tada struktura arhive mora biti sljedećeg formata: root/ab12345/MojHelloWorld.c Kako se za raspakiravanje arhive koriste već gotove svima dostupne metode za rad s arhivama, dodatan zahtjev sustava je da vrsta arhive bude zip. Slika 6.6 Predavanje datoteka na sustav Nakon što je korisnik na sustav predao arhivu studentskih radova ili pojedinačnu datoteku, u tablici datoteka se pojavljuje zapis o upravo analiziranoj datoteci zajedno 48 Praktični rad s poveznicom na njen marker ukoliko je on bio uspješno izgraĎen. Ukoliko sustav nije uspio odraditi leksičku analizu datoteke zbog nepoznate ekstenzije ili se datoteka nije mogla prevesti uslijed sintaksnih ili bilo kakvih drugih grešaka, korisnik dobiva informaciju o tome na vrhu stranice. U tom slučaju potrebno je ručno provjeriti datoteku te joj eventualno promijeniti ekstenziju i ponovo je predati na sustav. Slika 6.7 prikazuje popis predanih datoteka u okviru trenutnog zadatka. Slika 6.7 Popis predanih datoteka Tablica s informacijama o datotekama se može sortirati po bilo kojem stupcu, a omogućeno je i pretraživanje vrijednosti. Na kraju tablice je definirana opcija označivanja svih datoteka kao i akcija brisanja zapisa o datotekama sa sustava. Ukoliko se pobriše neki zapis trajno se gube informacije o datoteci kao i pripadni marker. Zapisi se mogu brisati pojedinačno ili svi odjednom. Sadržaj tablice se sastoji od informacija o autoru, imenu i veličini datoteke, sažetka sadržaja datoteke izračunatog nekim kriptografskim algoritmom radi većeg raspršenja, imena korisnika koji je obavio predaju datoteka na sustav, vremena te vrste predaje. Sve elemente tablice je moguće sortirati te je omogućeno filtriranje sadržaja pomoću pretraživanja. Sve datoteke koje su uspješno obraĎene imaju na lijevoj strani poveznicu na svoj marker. Ako korisnik želi pogledati detalji nekog markera, dovoljno je odabrati poveznicu koja se nalazi u krajnje lijevom stupcu tablice. Slika 6.8 prikazuje stranicu za pregledavanje detalja markera. Elementi markera su u prikazu grupirani u smislene 49 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA cjeline, kako po značenju tako i po vrsti analize kojom su dobiveni. Pod kraticom (engl. tab) općenito (engl. general) mogu se pronaći informacije o veličini datoteke, sažecima nad izvornim tekstom prije i nakon normalizacije te broju linija teksta, komentara i praznih linija. Kratica metrika (engl. metrics) sadrži brojače elemenata izvornog teksta, poput ključnih riječi, identifikatora, konstanti itd. Sintaksno stablo i kgrami izvornog teksta programa se nalaze pod istoimenim kraticama. Slika 6.8 Prikaz detalja markera Zadnja kratica nudi djelomični XML prikaz markera (Slika 6.9). Prikaz cijelog markera bi bio iznimno zahtjevan za kontrolu koja ga prikazuje, te je dodatno definirana poveznica za preuzimanje (engl. download) cijele XML datoteke sa sustava. 50 Praktični rad Slika 6.9 Djelomični XML prikaz markera 6.1.2.Struktura aplikacije Aplikacija se sastoji od 5 samostalno implementiranih projekata (prefiks CSI) i dva preuzeta projekta (prefiks GOLD): CSI CSI.Core CSI.Framework CSI.Test CSI.Worker GOLD.Calitha GOLD.Engine GOLD.Calitha i GOLD.Engine sadrže gotove alate za potpunu analizu izvornog teksta programa u vidu leksičke i sintakse analize i preuzeti su iz projekta Calitha C# GOLD Parser Engine. Projekt CSI.Worker sadrži metodu za kontinuirano praćenje statusa reda usporedbi kako bi se pokrenuo proces usporedbe čim se nova pojavi u redu čekanja. CSI.Framework sadrži skup pomoćnih metoda nespecifičnih za sam sustav CSI. Ostala tri projekta sadrže metode za obradu rezultata dobivenih alatima sustava GOLD te dodatne obrade koje se koriste u izradi markera od čega je najveći dio sadržan u CSI.Core (Slika 6.10). 51 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Slika 6.10 Popis razreda u projektu CSI.Core Od svih navedenih, razred Marker.cs sadrži glavnu logiku za organizaciju i popunjavanje elemenata te obradu izvornog teksta programa. Na početku su definirani svi privatni članovi markera poput lista k-grama, konstanti, identifikatora, ključnih riječi i sažetaka. Zatim su definirani konstruktori i tri grupe metoda za popunjavanje elemenata, getteri i setteri te metode za prikaz elemenata. Slika 6.11 prikazuje razred Marker.cs. Uz elemente koji su opisani u prethodnom poglavlju, u bazi se nalaze tablice u kojima se definiraju korisnici, uloge, veze korisnika i grupa, usporedbe te skupovi pravila koja definiraju utjecaj pojedinih parametara usporedbe. Korisnici mogu koristiti gotove predloške sustava ili definirati vlastite. 52 Praktični rad Slika 6.11 Implementacija markera Aplikacija se oslanja na bazu podatka čija shema je prikazana na Slika 6.12. 53 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Slika 6.12 Shema baze podataka sustava CSI 6.1.3.Korištene tehnologije Rad je izveden u potpunosti koristeći aktualne tehnologije Microsofta. Za izradu aplikacije korištena je razvojna okolina Visual Studio 2010 Professional, uz sustav kontrole verzija datoteka Team Foundation Server. Sustav je izveden kao webaplikacija temeljena na ASP.NET platformi, uz korištenje oblikovnog obrasca MVC (engl. Model-View-Controller), izvedenog kroz službenu nadogradnju na ASP.NET, zvanu ASP.NET MVC 2.0. Za potrebe rada aplikacije potrebno je osigurati web-poslužitelj IIS (engl. Internet Information Services) verzije 7.0 ili noviji, operacijski sustav Windows, programsku okolinu .NET Framework 4.0 te instaliranu nadogradnju ASP.NET MVC 2.0. Za spremanje izvornih tekstova programa te izraĎenih markera, kao i za administrativne potrebe (upravljanje korisnicima, provjerama, zadacima i dr.) koristi se sustav za upravljanje bazama podataka Microsoft SQL Server 2008. 54 Praktični rad 6.2. Skupovi ispitnih izvornih tekstova programa U ovom diplomskom radu su za potrebe ispitivanja rada aplikacije korištene tri arhive programskih rješenja nad kojima je prethodno bilo obavljeno otkrivanje sličnosti pomoću postojećih aplikacija (poglavlje 3.8). Radi se o studentskim radovima u okviru laboratorijskih vježbi na kolegijima Operacijski sustavi I studijskog programa FER-1. U trećoj arhivi se nalaze i dodatne datoteke koje su načinjene postupnim izmjenama postojećih izvornih programa, dakle plagijatima, a u svrhu kontrolne skupine. Sva imena i identifikatori studenata i datoteka su nasumično izmijenjani kako bi se poštivala njihova privatnost. 6.3. Parametri Sustav CSI nudi korisnicima slobodu izbora načina obavljanja usporedbe izvornih tekstova. Kako se u stvarnosti ne usporeĎuje izvorni tekst već skup značajki – marker koji je stvoren prilikom predavanja datoteka na sustav, moguće je složiti jednostavniju ili složeniju usporedbu, ovisno o tome što se želi postići. Kako je već opisano u poglavlju 5.2, značajke izvornih tekstova su grupirane u smislene cjeline, od općih izračuna sažetaka originalnog i normaliziranog teksta, do različitih metrika i k-grama. U nastavku slijedi opis tih cjelina, njihov utjecaj na otkrivanje sličnosti, opis računanja mjera sličnosti općenitih skupova podataka te njihova primjena. 6.3.1.Sažeci U otkrivanju sličnosti ovi elementi nemaju konkretnu težinu, no njihova korisnost leži u otkrivanju identičnosti. Kao prva linija otkrivanja duplikata, usporedba sažetaka originalnog i normaliziranog teksta programa je najmanje vremenski zahtjevna i vrlo jednostavna. Dvije datoteke, ukoliko su sadržajno identične imat će identične numeričke vrijednosti sažetaka. Isto vrijedi i za normalizirani tekst. Metode korištene za pročišćavanje teksta su pouzdane i ponovljive. Ako se usporedbom dvaju sažetaka otkrije da se radi o istoj vrijednosti, vrlo je vjerojatno da se radi o plagijatu te se ostavlja korisniku da to potvrdi i opovrgne. Primjer korisnosti usporedbe po ovom elementu je scenarij u kojem studenti samostalno predaju svoje zadatke na neki sustav za upravljanje kolegijima koji pomoću API-ja komunicira sa sustavom CSI. Ako usporedba sažetaka ocijeni neku datoteku kao potencijalnu kopiju, sustav CSI bi mogao drugom sustavu dojaviti da je pokušao predati potencijalni plagijat. Slučaj u kojem ova provjera ne bi imala smisla su jednostavni, kratki i opći programski zadaci u kojima se osim iste predvidive strukture očekuje i donekle identično imenovanje varijabli i metoda. Primjer je opet Hello World program. Ako se uzme u obzir prosječna generacija od otprilike 500 studenata, za očekivati je da će svi izvorni tekstovi biti praktički identični. Tijekom definiranja usporedbe nudi se unaprijed uključena ova opcija usporeĎivanja, tj. njeno izostavljanje ako to korisnici ne žele. Ako je opcija uključena te ako se ispostavi da rezultati upućuju na plagijat, ocjena sličnosti je apsolutna, tj. 1 i daljnji izračuni i usporedbe elemenata se ne obavljaju. Ako datoteke nemaju iste sažetke, ne možemo znati da se ipak ne radi o plagijatu pa se ocjena sličnosti dalje formira na temelju usporedbe ostalih elemenata i težina koje su im pridijeljene. 55 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA 6.3.2.Opće karakteristike Opće karakteristike izvornog teksta programa podrazumijevaju informacije poput brojača linija teksta, linija komentara, praznih linija, broja leksičkih jedinki itd. Ove informacije same po sebi ne nose nikakvu težinu prilikom odreĎivanja sličnosti. Ukoliko se ova grupa elemenata uključi u proces odreĎivanja sličnosti, dobivene brojke se koriste u vizualnoj analizi dviju datoteka i to potpuno informativno. Primjer za korištenje ove grupe je prilikom pronalaska dviju datoteka koje su potvrĎeni plagijati, a da je metoda prisvajanja izvornog teksta programa bila umetanje praznina, znakova novog retka ili komentara. 6.3.3.Statistike Statistike (metrics) sadržavaju brojače pojavljivanja konstanti, identifikatora, ključnih riječi te drugih statičkih elemenata jezika u kojem je izvorni tekst programa pisan. Kako bi ove tablice mogle biti usporedive, elementi se grupiraju pod najopćenitije moguće korijensko značenje, poput operatora (nebitno kakvi oni bili), ključnih riječi kontrole tijeka izvoĎenja programa (petlje) te numeričkih, znakovnih i drugih tipova podataka. Kako bi se ovi elementi mogli usporeĎivati u različitim programskim jezicima, u nekim slučajevima bi se moglo pokazati potrebnim implementirati metode koje bi mogle preslikavati jedan skup u drugi, bez gubitka integriteta podataka. Ovaj skup podataka sudjeluje s malom težinom u ukupnoj ocjeni sličnosti, pošto su primjerice identifikatori u potpunosti podložni izmjenama i obično su prvo što potencijalni plagijatori mijenjaju. No utjecaj ove grupe elemenata se dodatno odreĎuje na temelju važnijih parametara usporedbe te će zasigurno datoteke ocijenjene s visokom ocjenom sličnosti dobiti još veću ocjenu ukoliko se uspostavi da je i većina statistika podudarna, kao što će i niske ocjene biti još niže ako je podudarnost skupova mala. 6.3.4.Sintaksna stabla Sintaksna stabla su vizualno najintuitivniji prikaz izvornog teksta programa te ljudskom ispitivaču pružaju vjerojatno najugodniji način usporedbe dvaju izvornih tekstova programa. Što se programskog usporeĎivanja dvaju sintaksnih stabala tiče, radi se o vremenski poprilično zahtjevnoj usporedbi na koju se troše i memorijski resursi. Njihova upotreba se izuzima iz odreĎivanja sličnosti, no ukoliko korisnici žele uključiti ovaj element u proces usporedbe, tada je dobiven rezultat sigurno vrlo pouzdan. 6.3.5.K-grami Radi se o jedinom elementu usporedbe kojeg je potrebno definirati odmah prilikom definiranja zadatka (Slika 6.13). Kako se sva analiza izvornih tekstova odraĎuje odmah po predavanju datoteka na sustav, tako su i k-grami izvornog teksta programa izračunati odmah nakon normalizacije teksta. Obrazac nudi postavljanje vrijednosti duljine k-grama (engl. length), veličinu prozora za algoritam winnowing (engl. window size) te mogućnost uključivanja izračuna k-grama po algoritmu 0 modulo p. Duljina kgrama je broj znakova koji se izdvajaju u k-gram, a veličina prozora je broj k-grama meĎu kojima se odreĎuje onaj s najmanjom ili najvećom vrijednosti. P definira 56 Praktični rad vrijednost za koju se očekuje rezultat 0 pri dijeljenju vrijednosti k-grama u operaciji modulo p. Slika 6.13 Postavke za izračun k-grama Duljina k-grama je inicijalno postavljena na vrijednost 5. Manje vrijednosti će uzrokovati veći broj k-grama i manje pouzdane rezultate jer je veća šansa da će se manja grupa znakova, smislena ili ne, pronaći i u nekoj drugoj datoteci. Veće vrijednosti će otkriti specifičnije sličnosti, ali će ukupna sličnost datoteka biti ocijenjena s manjom ocjenom. Slično vrijedi i za veličinu prozora algoritma, manje vrijednosti će rezultirati većim skupom odabranih k-grama i potencijalno većom ocjenom koja ne mora biti pouzdana, dok će veće vrijednosti pronaći manji skup, ali i pouzdaniji. Ako korisnik želi uključiti i modulo p opciju izračuna k-grama, tada se uz standardne k-grama po winnowing algoritmu izdvajaju i sve vrijednosti k-grama koji pri modulo p operaciji daju rezultat 0. Ovo pridonosi odreĎivanju visoko specifičnih k-grama te se općenito oba skupa k-grama mogu smatrati visoko reprezentativnima za odreĎivanje sličnosti izvornih tekstova. Vrijednost varijable p treba odabrati na takav način da rezultantni skup k-grama sadrži od 25% do 45% originalnog skupa. Loš odabir bi recimo bio broj 2 jer je po zakonu velikih brojeva logično očekivati da će oko 50% kgrama biti izdvojeno. Bolji izbor bi bio neki manji primarni broj poput 3, 7 ili 11 gdje je statistički vjerojatno da će konačni skup probranih k-grama sadržavati otprilike 10% do 40% početnog skupa svih k-grama. K-grami u ukupnoj ocjeni sličnosti sudjeluju s preporučenom težinom od 0.85 (85% ukupne ocjene) iako korisnik sustava može promijeniti ovu vrijednost. Razlog ovako visokom udjelu u ukupnoj ocjeni je pouzdanost algoritma koji nad normaliziranom datotekom pronalazi doista reprezentativan uzorak vrijednosti. Ukoliko bi korisnici htjeli otkrivanje sličnosti prirodnog teksta, a ne izvornih tekstova programa, bilo bi dovoljno u proces usporedbe uključiti samo k-grame po oba algoritma s maksimalnom težinom. Vjerojatno bi u takvom procesu bilo pametno implementirati neki oblik normalizacije prirodnog teksta. 6.3.6.Raĉunanje mjera sliĉnosti skupova numeriĉkih podataka S ciljem pronalaska najbolje formule za odreĎivanje sličnosti, obavljeno je ispitivanje i usporedba nekoliko formula za izračun udaljenosti [16]. Iako je primjena tih formula 57 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA većinom u genetici i molekularnoj biologiji, uz manje izmjene i par ograničenja pokazale su se prikladnima za implementaciju i pouzdanima u svojim rezultatima. Ako su A i B podskupovi izgraĎeni nad univerzalnim skupom U te ako vrijedi A = {1, 2, 3, 4} i B= {3, 4, 7, 9}, tada definiramo simbole u nastavku: A* je broj elemenata skupa A koji su specifični i jedinstveni za taj skup, tj. nisu prisutni u B, B* je broj elemenata skupa B koji su specifični i jedinstveni za taj skup, tj. nisu prisutni u A, AB je broj zajedničkih elemenata, tj. , AB je broj različitih elemenata, tj. te S je mjera sličnosti skupova A i B. Za sadržaj skupova kako je prethodno definiran vrijedi sljedeće: A* = |{1, 2}| = 2, B* = |{7, 9}| = 2, AB = |{3, 4}| = 2 te AB = |{1, 2, 7, 9}| = 4. U nastavku slijede formule za računanje sličnosti skupova numeričkih vrijednosti te izračun sličnosti za prethodno definirane skupove A i B. Mjera Cosine Mjera sličnosti SCosine definirana je kao se kao omjer broja zajedničkih elemenata dva skupa i geometrijske sredine svih sadržanih elemenata. Domena ove mjere je [0, 1] gdje 0 znači da skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa identična. (6.1) Izvedba ove mjere je iz klasičnog izraza za kosinus kuta izmeĎu dva vektora. Za prethodno definirane skupove A i B ova mjera vraća procjenu sličnosti 0,5. Mjera Dice Mjera sličnosti SDice definira se kao omjer broja zajedničkih elemenata i aritmetičke sredine svih sadržanih elemenata. Domena ove mjere je [0, 1] gdje 0 znači da skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa identična. (6.2) Za prethodno definirane skupove A i B ova mjera vraća procjenu sličnosti 0,5. 58 Praktični rad Jaccardov indeks Pod drugim imenom poznat kao Tanimotov koeficijent sličnosti, odreĎuje sličnost kao omjer presjeka proizvoljnih skupova i unije istih. Domena ove mjere je [0, 1] gdje 0 znači da skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa identična. (6.3) Za prethodno definirane skupove A i B ova mjera vraća procjenu sličnosti 0,33. Mjera Tversky Ova mjera sličnosti je asimetrična zbog faktora i . Ukoliko ih se postavi na istu vrijednost, npr. 1, tada formula poprima identičan izgled kao Jaccardov indeks. Faktori služe za pridjeljivanje težine elementima skupa. Domena ove mjere je [0, 1] gdje 0 znači da skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa identična. (6.4) Za prethodno definirane skupove A i B te faktore vraća procjenu sličnosti 0,66. i postavljene na 0,5 ova mjera Radi usporedbe i ocjene rezultata navedenih mjera, obavljeno je manje ispitivanje nad nekoliko različitih skupova numeričkih podataka. Tablica 6.1 prikazuje rezultate tog ispitivanja. Tablica 6.1 Usporedba algoritama za izračun sličnosti skupova AB A* B* SCosine SDice SJaccard STversky A = {0,1,2,3,4} B = {0,1,2,4,5} 4 1 1 0,8 0,8 0,666666667 0,8 A = {0,1,2,3,4,5,6,7,8,9} B = {5,6,7,8,9,10,11,12,13} 5 5 4 0,527046277 0,526315789 0,357142857 0,526315789 A = {2,3,4,5,6,7,8,9} B = {5,6,7,8,9,10,11} 5 3 2 0,668153105 0,666666667 0,5 0,666666667 A = {0,1,2,3,4,5,6,7,8,9} B = {5,6,7,8,9,10,11} 5 5 2 0,597614305 0,588235294 0,416666667 0,588235294 A = {2,3,4,5,6,7,8,9} B = {5,6,7,8,9,10,11,12,13} 5 6 4 0,502518908 0,5 0,333333333 0,5 A = {0,1,2,3,4} B = {0,6,7,8,10} 1 4 4 0,2 0,2 0,111111111 0,2 Setovi podataka Na temelju dobivenih podataka usporedbe malih skupova, vidljivo je da su Cosine, Dice i Tversky s koeficijentima postavljenim na vrijednost 0.5 skoro pa identični što se izračuna tiče. Jaccardov indeks jedini ima osjetno odstupanje te strože ocjenjuje sličnost od ostalih algoritama. S ciljem odreĎivanja što bolje osjetljivosti u odreĎivanju 59 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA sličnosti, u svim daljnjim proračunima ispitivanja velikih skupova podataka kao i u programskom ostvarenju će se koristiti Jaccardov indeks. 6.4. Definiranje nove usporedbe i skupa pravila Kako korisnici jedne grupe imaju pristup istim zadacima i provjerama, omogućeno je da svaki od njih može definirati svoj skup pravila te ih upotrijebiti u neograničenom broju usporedbi. Zadaci koje studenti trebaju programski ostvariti nisu iste težine, opsega niti uvijek zahtijevaju istu razinu maštovitosti. Moguće je da će ponekad biti dovoljno ili nužno samo ispitati statistike izvornih tekstova programa, ukoliko se pouzdano zna da je zadatak kratak i da mu je struktura strogo definirana. Svim korisnicima se pri definiranju nove provjere nudi unaprijed pripremljen skup pravila koja su prihvatljiva u općenitom slučaju. Slika 6.14 Odabir skupa pravila za usporedbu Poveznica detalji (engl. Details) prikazana na Slika 6.14 otvara stranicu s informacijama o odabranom skupu pravila, dok poveznica novi skup pravila (engl. New Ruleset) otvara obrazac gdje korisnik može odabrati proizvoljne vrijednosti parametara, kao i njihov utjecaj na ocjenu sličnosti. Nakon što korisnik odabere skup pravila koji mu odgovara, proces usporedbe izvornih tekstova programa se pokreće odabirom gumba pokreni zadatak (engl. Submit Task). Iako skup pravila kojeg sustav nudi ima već odreĎene utjecaje parametara koji su prihvatljivi u većini slučajeva, korisnik može za svaki parametar definirati utjecaj u ocjeni u rasponu [0%,100.0%]. 60 Praktični rad Slika 6.15 Postavke parametara skupa pravila Slika 6.15 prikazuje postavke parametara pretpostavljenog skupa pravila. Ukoliko korisnik želi definirati svoj skup pravila, može načiniti novi predložak ili iskoristiti postojeći. Svaki od parametara nudi opciju uključivanja ili isključivanja, a u slučaju uključivanja i ravnalo kojim se definira utjecaj parametra. U slučaju da suma utjecaja svih parametara premaši 100%, pojedinačni utjecaji će se normirati. Svaki parametar sadrži opis svog utjecaja na usporedbu, treba li biti uključen te ako treba koliki mu je preporučeni raspon utjecaja u postocima. Opis se automatski prikazuje unutar stranice odabirom plavog gumba s upitnikom u gornjem desnom kutu bloka s parametrom (Slika 6.16). 61 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA Slika 6.16 Opisi utjecaja parametara na usporedbu 6.5. Pokretanje usporedbe Nakon što korisnik pokrene proces usporedbe izvornih tekstova programa sustav mu automatski dojavljuje poruku o uspješnosti stvaranja nove usporedbe, istu dodaje u red svih postojećih usporedbi koji je po tipu FCFS (engl. First Come First Serve) te dodaje zapis sa svim bitnim detaljima usporedbe u zapisnik do sada obavljenih usporedbi. Slika 6.17 prikazuje zapisnik s listom svih postojećih usporedbi. Budući da se usporedba izvornih tekstova programa obavlja u okviru zasebnog procesa odvojenog od web-aplikacije, omogućen je daljnji nesmetani rad s korisničkim sučeljem. Korisnik u svakom trenutku ima uvid u status usporedbe, kao i mogućnost trenutnog prekida procesa. Napredak usporedbe osvježava se kontinuiranim asinkronim upitima upotrebom tehnologije AJAX odabirom plavog gumba koji se nalazi desno od zaglavlja zapisnika. Slika 6.17 Zapisnik s detaljima usporedbi 62 Praktični rad 6.6. Demonstracija rada sustava na postojećoj arhivi izvornih tekstova Usporedbe izvornih tekstova postavljaju velike zahtjeve na resurse te je njihovo trajanje ponekad iznimno dugo. Ako definiramo varijablu n kao broj datoteka te F(n) kao funkciju koja računa broj potrebnih usporedbi koje sustav treba obaviti, tada vrijedi formula: (6.5) Slika 6.18 prikazuje ovisnost broja meĎusobnih usporedbi datoteka u odnosu na broj datoteka, koji pomnožen vremenskim jedinicama potrebnim za usporedbu može biti značajan. Slika 6.18 Ovisnost broja potrebnih usporedbi o ukupnom broju datoteka Dodatan utjecaj na trajanje izvoĎenja procesa usporedbe imaju skupovi pravila. Usporedba sličnosti izvornih tekstova programa po nekim elementima traje dulje od drugih. Primjerice usporedba skupova k-grama je zahtjevnija od usporeĎivanja relativno skromnog skupa sažetaka. Sustav je koncipiran tako da može podržati raspodjelu obavljanja usporedbi na pomoćne radilice i time drastično ubrzati proces usporedbe, ukoliko se za to pokaže potreba. Demonstracija rada sustava se sastoji od niza obavljenih usporedbi, od kojih će svaka koristiti vlastiti skup podataka te usporeĎivanje pojedinačnih i zbirnih rezultata s rezultatima ostalih sustava za detekciju plagijata. Za potrebe ispitivanja definirani su skupovi pravila opisani u nastavku. 63 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA CSI1; Uključena je usporedba isključivo sažetaka. CSI2; Uključena je usporedba k-grama dobivenih winnowing algoritmom. CSI3; Uključena je usporedba k-grama dobivenih 0 modulo p algoritmom. CSI4; Definirana je kombinacija CSI1 i CSI2. CSI5; Definirana je kombinacija CSI1 i CSI3. CSI6; Definirana je kombinacija CSI1, CSI2 i CSI3. U okviru ovog diplomskog rada obavljeno je ispitivanje uspješnosti sustava CSI na temelju arhive izvornih tekstova programa koja je bila korištena u ručnom odreĎivanju sličnosti. Obavljeno je 6 usporedbi, po jedna za svaki skup pravila koje smo prethodno definirali. Po završetku usporedbe status usporedbe se postavlja na završen (engl. finished) te taj status predstavlja poveznicu na stranicu s rezultatima usporedbe. Slika 6.19 prikazuje format rezultata usporedbe. Slika 6.19 Prikaz rezultata usporedbe sustavom CSI Vidljivo je da su različiti postoci označeni različitim bojama. Ovakav prikaz je odabran radi jednostavnijeg pregleda i lakše procjene ukupnih rezultata. 64 Praktični rad Ukupni rezultati su prikazani u proširenoj tablici rezultata ručne usporedbe sličnosti kako bi se dala potpunija slika pouzdanosti sustava CSI u odnosu na druge sustave za detekciju plagijata. Zbog količine podataka Tablica 6.2 je prikazana djelomično, no s dovoljno informacija kako bi se obavila analiza uspješnosti. Tablica 6.2 Rezultati otkrivanja sličnosti Osoba1 Osoba2 Ocjena MOSS Sherlock JPlag Codematch CSI1 CSI2 CSI3 CSI4 CSI5 CSI6 100 100 100 100 100 100 100 62 - 63,9 72,2 63,9 72,2 68 100 100 - 100 100 100 100 100 64 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 96 62 86 99 - 93,4 96,8 93,4 96,8 95,1 1 93 20 92 52 - 60,1 65,9 60,1 65,9 1 93 0 92 86 - 93,6 90,7 93,6 90,7 92,2 tk38463.c 1 91 21 100 92 - 82,8 85,2 82,8 85,2 dh40591.c 1 90 57 82 60 - 51,6 52,2 51,6 52,2 51,6 dz41027.c mn40240.c 1 89 29 86 87 - 78,6 83 78,6 it38671.c ll40615.c 1 86 9 100 51 - 48,9 51,7 48,9 51,7 50,3 it38671.c rd40025.c ab39352_1.c ab39352_.c 1 98 72 100 af39592_1.c af39592_2.c 1 af39592_3.c af39592_4.c 1 98 18 98 100 ap40425.c sp40106.c 1 eh39292.c ib39262.c 1 98 98 eh39292.c pr39084.c ib39262.c pr39084.c 1 98 1 98 dz41027.c tk38463.c 1 af39592_1.c ll40615.c af39592_2.c ll40615.c mn40240.c ah40945.c 83 100 63 84 80,8 1 85 1 92 47 - 37,9 44,8 37,9 44,8 41,3 ab39352_2.c ab39352_3.c 1 84 100 100 96 - 94,3 94,9 94,3 94,9 94,6 ab39352_3.c ab39352_4.c 1 83 94 91 87 - 90,6 91,4 90,6 91,4 af39592_1.c it38671.c 1 81 3 92 44 - 37,1 42,4 37,1 42,4 39,8 af39592_2.c it38671.c 1 81 0 92 48 - 46,7 49,6 46,7 49,6 48,2 af39592_1.c af39592_3.c 1 75 17 72 62 - 63,8 70,1 63,8 70,1 66,9 af39592_1.c af39592_4.c 1 75 17 72 62 - 63,8 70,1 63,8 70,1 66,9 af39592_2.c af39592_3.c 1 75 92 72 87 - 89,2 91,8 89,2 91,8 90,5 af39592_2.c af39592_4.c 1 75 0 72 87 - 89,2 91,8 89,2 91,8 90,5 ab39352_2.c ab39352_4.c 1 74 94 90 84 - 85,4 86,6 85,4 86,6 86 af39592_3.c it38671.c 1 73 0 73 46 - 42,3 47,7 42,3 47,7 45 af39592_3.c ll40615.c 1 73 25 73 79 - 84,7 84,8 84,7 84,8 84,8 af39592_4.c it38671.c 1 73 5 73 46 - 42,3 47,7 42,3 47,7 af39592_4.c ll40615.c 1 73 25 73 79 - 84,7 84,8 84,7 84,8 84,8 ll40615.c mp39510.c 1 70 6 0 41 - 50,7 56,7 50,7 56,7 53,7 af39592_1.c mp39510.c 1 69 7 0 34 - 38,4 44,2 38,4 44,2 41,3 91 45 Na temelju dobivenih rezultata može se zaključiti da sustav CSI definira sličnost podjednako uspješno kao i drugi sustavi za detekciju plagijata. Jasno je vidljivo odstupanje od aplikacije Sherlock za koju smo već prije zaključili da je pouzdana samo kad se radi o minimalnom broju izmjena izvornih tekstova programa. Po rezultatima je ponašanje sustava CSI najsličnije sustavu CodeMatch o čijim pozadinskim algoritmima nemamo puno informacija pošto se radi o sustavu komercijalne namjene. Temeljem ispitivanja može se pretpostaviti da se pozadinski algoritmi sustava CodeMatch u velikoj mjeri oslanjaju na usporedbu k-grama. Odstupanje ocjena sustava MOSS i CSI jasno pokazuje važnost uloge leksičke i sintaksne analize u otkrivanju sličnosti izvornih tekstova programa. Taj zaključak se 65 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA temelji na činjenici da u skupovima pravila nije bilo definirano korištenje elemenata dobivenih leksičkom i sintaksnom analizom, već su se usporeĎivali k-grami dobiveni nad normaliziranim tekstom. To je rezultiralo osjetno nižom ocjenom onih parova datoteka za koje je sustav MOSS dao pouzdanu procjenu. Dodatna potvrda ovog zaključka je dobivena ručnom usporedbom datoteka za koje je sustav MOSS dao veću procjenu sličnosti, a razlika je bila uzrokovana izmjenama imena varijabli i metoda. Analizom ocjena umetnutih plagijata zaključeno je da je sustav CSI umjereno osjetljiv na premještanje dijelova izvornog teksta programa. Ovakva metoda plagiranja utječe na usporedbe koje koriste k-grame. Problem je što se u tom slučaju više ne mogu pronaći k-grami koji su prije bili sastavljeni od sada premještenih dijelova teksta. Osim analize pouzdanosti načinjena je i gruba analiza brzine rada sustava CSI u odnosu na veličinu skupa datoteka koje treba usporediti. Za svaki skup pravila su načinjene tri uzastopne usporedbe te je za srednje vrijeme rada sustava uzeta aritmetička sredina svih vrijednosti. Svi skupovi pravila su bili ispitani nad 4 arhive različitih veličina. Tablica 6.3 Vrijeme obavljanja usporedbi sustavom CSI BROJ DATOTEKA BROJ USPOREDBI CSI1 CSI2 CSI3 CSI4 CSI5 CSI6 30 96 117 132 435 4560 6670 8646 0,6 s 0,8 s 1,8 s 1,8 s 0,6 s 1,2 s 2,4 s 2,4 s 0,6 s 1,2 s 3,0 s 3,6 s 0,6 s 1,2 s 2,4 s 2,8 s 0,6 s 1,6 s 3,0 s 3,6 s 0,6 s 1,8 s 3,6 s 4,4 s Tablica 6.3 prikazuje vrijeme potrebno sustavu CSI da obavi ispitivanje svakog skupa pravila nad arhivama datoteka. Na temelju dobivenih vremena trajanja usporedbi može se pretpostaviti da bi trajanje usporedbe za arhivu od 500 datoteka (čak 124750 pojedinačnih usporedbi) bilo 226,89 sekundi, odnosno 3,78 minuta što je apsolutno prihvatljivo. 66 Zaključak 7. Zakljuĉak U ovom diplomskom radu su obraĎene metode i algoritmi analize prirodnih i izvornih tekstova programa. Definiran je novi pristup usporeĎivanju sličnosti pomoću skupa značajki izvornih tekstova programa (markera). Ostvarena je web-aplikacija CSI koja nudi fino parametriziranje elemenata usporedbe te je načinjena analiza uspješnosti u otkrivanju sličnosti izvornih tekstova programa. Strogo definirana struktura markera je osmišljena dovoljno općenito da je uz dodatne metode preslikavanja moguće usporeĎivati izvorne tekstove programa pisanih u različitim programskim jezicima. Specifičnosti pojedinih programskih jezika koje se očituju u razlici ključnih riječi, operatora i specijalnih znakova vidljiva je samo u nejednakoj popunjenosti markera, što u konačnici ne mora onemogućiti usporedbu. Otkrivanje sličnosti usporedbom markera temelji se na skupu specijaliziranih metoda čija je zadaća usporediti pojedine elemente markera i vratiti procjenu sličnosti. Ti algoritmi su podijeljeni na nekoliko skupina, od trivijalnih usporedbi do zahtjevnih. Korisnik sustava ima mogućnost odabira koji algoritam se koristi u usporedbi, baš kao i koji element se uključuje u usporedbu ili izuzima iz nje. RazraĎen je obrazac za odreĎivanje težine utjecaja pojedinih elemenata u usporedbi kako bi korisnik mogao odrediti koji elementi trebaju imati veći utjecaj na ocjenu sličnosti. PonuĎeni su opisi parametara i njihove preporučene vrijednosti. Definiran je skup pravila s pretpostavljenim vrijednostima parametara koji u općenitom slučaju daje zadovoljavajuće rezultate. U sklopu programskog rješenja se za potrebe leksičke i sintaksne analize trebao koristiti sustav GOLD. Kako se pokazalo da su gramatike koje sustav GOLD koristi nepotpune, u ovom se trenutku leksička i sintaksna analiza izvornih tekstova programa ne obavljaju. U okviru diplomskog rada obavljeno je ispitivanje rada web-aplikacije CSI na prethodno definiranim arhivama izvornih tekstova programa. Dodatno je načinjena usporedba uspješnosti postojećih sustava za detekciju plagijata nad istim arhivama, kao i ručna provjera sličnosti jednog podskupa izvornih tekstova programa. Dobiveni rezultati su iskorišteni za detaljnu analizu načina rada postojećih sustava za detekciju plagijata, otkrivanje osjetljivosti na pojedine metode plagiranja i referentne vrijednosti za podešavanje parametara sustava CSI. Daljnja ispitivanja sustava CSI nad istim arhivama upućuju na pouzdanost procesa usporedbe i manje odstupanje od pojedinih sustava za detekciju plagijata. Način na koji je sustav SCI implementiran takoĎer ostavlja dosta prostora za nadogradnju i poboljšanja. Proces analize izvornih tekstova prilikom predavanja arhiva i pojedinačnih datoteka na sustav se može izvesti raspodijeljeno na više radilica. Takvom paralelizacijom bi se rasteretio sustav te postiglo značajno smanjenje vremena potrebnog za obradu svih poslova iz reda usporedbi. Zbog prirode programskih zadataka pokazala se potreba na neki način definirati strukturu ili programski odsječak koji bi se mogao izuzeti iz otkrivanja sličnosti, kako bi se postigla veća razlučivost procjene sličnosti. Kako se je sustav GOLD pokazao nedovoljno pouzdanim, potencijalno najkorisnija dorada sustava bi bilo ostvarenje 67 OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA pomoćnog programskog sustava koji bi na temelju definiranih gramatika mogao obaviti leksičku i sintaksnu analizu proizvoljnog programskog jezika. Uz takav pomoćni sustav bilo bi moguće razraditi metode za analizu sintaksnih stabala te na takav način doprinjeti pouzdanosti ukupne ocjene sličnosti izvornih tekstova programa. 68 Literatura 8. Literatura [1] Random House Webster's Unabridged Dictionary, Random house, 1995. [2] Web-sjedište sustava MOSS, A. Aiken, URL: http://theory.stanford.edu/~aiken/moss/ (10.01.2011.) [3] S. Schleimer, D. Wilkerson, A. Aiken Winnowing: Local Algorithms for Document Fingerprinting, 2003. URL:http://theory.stanford.edu/~aiken/publications/papers/sigmod03.pdf (15.01.2011.) [4] D. Eppstein , članak Longest common subsequence, URL:http://www.ics.uci.edu/~eppstein/161/960229.html, (15.01.2011.) [5] L. Allison, članak Suffix trees, URL: http://www.allisons.org/ll/AlgDS/Tree/Suffix/ (29.8.2010.) [6] Web-sjedište sustava GOLD, URL: http://www.devincook.com/goldparser/index.htm (prosinac 2010.) [7] Web-sjedište aplikacije Calitha GOLD Parser, URL:http://www.calitha.com/goldparser.html (prosinac 2010.) [8] mnogi, Jplag: Finding plagiarisms among a set of programs, 2000., URL:http://page.mi.fu-berlin.de/~prechelt/Biblio/jplagTR.pdf (10.01.2011.) [9] Web-sjedište sustava SID , URL: http://genome.math.uwaterloo.ca/SID/ (19.01.2011.) [10] Alexander Gammerman, Vladimir Vovk, članak Kolmogorov complexity: sources, theory and applications. The Computer Journal, vol. 42, no. 4, 1999. [11] Web-sjedište sustava SIM, URL: http://www.cs.vu.nl/~dick/sim.html (19.01.2011.) [12] Web-sjedište sustava CodeMatch, URL:http://www.sorp.biz/products_codesuite.htm (19.01.2011.) [13] Matt G. Ellis, Claude W. Anderson, članak Plagiarism Detection in Computer Code, 2005., URL: http://www.rose-hulman.edu/class/csse/faculty-staff/cssedepartment/seniorTheses/Matt%20Ellis.pdf (10.05.2011.) [14] Alan Parker, James O. Hamblen, članak Computer algorithms for plagiarism detection, IEEE Transactions on Education, 32(2):94{99, 1989. [15] J. A. W. Faidhi, S. K. Robinson, članak An empirical approach for detecting program similarity and plagiarism within a university programming environment, Computers & Education, 11(1):11, 1987. [16] Web-sjedište EyesOpen, URL: http://www.eyesopen.com/docs/toolkits/html/GraphSimTK-python/measure.html#built-insimilarity-measures [17] Web-sjedište sustava Boss, URL: http://www.dcs.warwick.ac.uk/boss/about.php 69
© Copyright 2024 Paperzz