DETEKSI PLAGIARISME SOURCE CODE BERBASIS ABSTRACT SYNTAX TREE
TUGAS AKHIR Sebagai Persyaratan Guna Meraih Gelar Sarjana Strata 1 Teknik Informatika Universitas Muhammadiyah Malang
SETIYA PUTRA UTAMA 201210370311278
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2016
LEMBAR PENGESAHAN
DETEKI PLAGIARISME SOURCE CODE BERBASIS ABSTRACT SYNTAX TREE
TUGAS AKHIR Sebagai Persyaratan Pengajuan Judul Tugas Akhir Teknik Informatika Universitas Muhammadiyah Malang
Disusun Oleh : SETIYA PUTRA UTAMA 201210370311278
Tugas Akhir ini telah diuji dan dinyatakan lulus melalui sidang majelis penguji pada Tanggal 28 Juli 2016. Menyetujui Penguji I
Penguji II
Gita Indah M., S.T, M. Kom. NIP. 108.0611.0442
Eko Budi C., S.Kom, M.Kom. NIP. 108.9504.0330
Mengetahui Ketua Jurusan Teknik Informatika
Yuda Munarko, S.Kom, M.Sc. NIP. 108.0611.0443
i
LEMBAR PERSETUJUAN
DETEKI PLAGIARISME SOURCE CODE BERBASIS ABSTRACT SYNTAX TREE
TUGAS AKHIR
Sebagai Persyaratan Pengajuan Judul Tugas Akhir Teknik Informatika Universitas Muhammadiyah Malang
Menyetujui
Pembimbing I
Yufis Azhar, S.Kom, M.Kom. NIP. 108.1410.0544
Pembimbing II
Yuda Munarko, S.Kom, M.Sc. NIP. 108.0611.0443
ii
LEMBAR PERNYATAAN Yang bertanda tangan di bawah ini : Nama
: SETIYA PUTRA UTAMA
NIM
: 201210370311278
Fakultas/ Jurusan
: TEKNIK / INFORMATIKA
Dengan ini saya menyatakan bahwa Tugas Akhir dengan judul “DETEKI PLAGIARISME SOURCE CODE BERBASIS ABSTRACT SYNTAX TREE” beserta seluruh isinya adalah karya saya sendiri dan bukan merupakan karya tulis orang lain, baik sebagian maupun seluruhnya, kecuali dalam bentuk kutipan yang telah disebutkan sumbernya. Demikian surat pernyataan ini saya buat dengan sebenar-benarnya. Apabila kemudian ditemukan adanya pelanggaran terhadap etika keilmuan dalam karya saya ini maka saya siap menanggung segala bentuk resiko / sanksi yang berlaku. Malang, 18 Juli 2016 Yang Membuat Pernyataan
Setiya Putra Utama NIM. 201210370311278
Mengetahui Pembimbing I
Yufis Azhar, S.Kom, M.Kom. NIP. 108.1410.0544
Pembimbing II
Yuda Munarko, S.Kom, M.Sc. NIP. 108.0611.0443
v
LEMBAR PERSEMBAHAN Puji syukur kepada Allah SWT atas rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Tugas Akhir ini. Serta shalawat dan salam selalu tercurahkan kepada junjungan Nabi besar Muhammad SAW beserta sahabat, keluarga dan umatnya. Penulis menyampaikan ucapan terima kasih yang tak terhingga kepada : 1. Bapak Yuda Munarko, S.Kom, M.Sc selaku ketua jurusan Teknik Informatika Universitas Muhammadiyah Malang 2. Bapak Yufis Ashar, S.Kom, M.Kom dan Bapak Yuda Munarko, S.Kom, M.Sc selaku pembimbing Tugas Akhir 3. Semua Dosen pengajar serta Staf di jurusan Teknik Informatika yang membantu dan memberikan bekal ilmu pengetahuan 4. Ibunda Rantiyani, Amd. Keb dan Ayahanda Djoko Pitono yang telah memberikan dukungan, semangat, motivasi, kasih sayang, materi dan doa yang tiada hentinya, serta saudara dan adik saya Dhinisya Dwi Putri Lestari yang selalu bertanya “Kapan Lulus?” 5. Keluarga Besar UKM Radio UMMfm yang selalu memberi dukungan, doa, motivasi serta dedikasi yang saya dapatkan 6. Serta teman – teman yang telah membantu proses penyelesaian Tugas Akhir ini
vi
KATA PENGANTAR Alhamdulillah, segala Puji bagi Allah SWT yang telah memberikan rahmat dan petunjuk serta kelancaran jalan sehingga penulis dapat menyelesaikan penelitian Tugas Akhir yang berjudul “DETEKSI PLAGIARISME SOURCE CODE BERBASIS ABSTRACT SYNTAX TREE”. Pada penelitian ini, dibuat suatu sistem Deteksi Plagiarisme Source Code berbasis Abstract Syntax Tree dengan menggunakan Algoritma Leveinshtein Distance dan Cosine Similarity. Penulis berharap dengan dibuatnya sistem ini dapat membantu mengurangi dan menekan tindakan plagiarisme atau penjiplakan yang terjadi pada dunia programming khususnya bahasa pemrograman Java. Penulis menyadari bahwa penelitian ini masih jauh dari kesempurnaan. Oleh karena itu, penulis mengharapkan kritik dan saran yang membangun untuk pengembangan kedepannya. Semoga Tugas Akhir ini dapat memberikan manfaat bagi semua pihak, khususnya bagi jurusan Teknik Informatika. Akhir kata penulis mengucapkan terima kasih kepada semua pihak yang telah membantu hingga Tugas Akhir ini terselesaikan.
Malang, 18 Juli 2016
Penulis
vii
DAFTAR ISI LEMBAR PENGESAHAN ..........................................................................
i
LEMBAR PERSETUJUAN .........................................................................
ii
LEMBAR PERNYATAAN ..........................................................................
iii
ABSTRACT ...................................................................................................
iv
LEMBAR PERSEMBAHAN .......................................................................
vi
KATA PENGANTAR ................................................................................... vii DAFTAR ISI .................................................................................................. viii DAFTAR GAMBAR .....................................................................................
xi
DAFTAR TABEL ......................................................................................... xii BAB I PENDAHULUAN ..............................................................................
1
1.1 Latar Belakang .......................................................................................
1
1.2 Rumusan Masalah ..................................................................................
3
1.3 Tujuan ....................................................................................................
3
1.4 Batasan Masalah ....................................................................................
4
1.5 Metodologi Penelitian ............................................................................
4
1.5.1 Studi Pustaka ..................................................................................
4
1.5.2 Preprocessing ..................................................................................
4
1.5.2.1 File menggunakan format .java (dot java) ...............................
4
1.5.2.2 Mengubah file .java (dot java) kedalam bentuk AST ..............
4
1.5.2.3 Case – Folding (Comment) ......................................................
4
1.5.2.4 Tokenizing ...............................................................................
5
1.5.2.5 Formalization ...........................................................................
5
1.5.3 Processing .......................................................................................
5
1.5.3.1 Perbandingan AST dari file java .............................................
5
1.5.3.2 Leveinshtein Distance (Struktur) .............................................
5
viii
1.5.3.3 Cosine Similarity (Comment) ..................................................
5
1.5.3.4 Threshold .................................................................................
5
1.5.4 Desain System ................................................................................
6
1.5.5 Pengujian dan Evaluasi ...................................................................
7
1.6 Sistematika Penulisan ............................................................................
8
1.6.1 BAB I (Pendahuluan) .....................................................................
8
1.6.2 BAB II (Tinjauan Pustaka) .............................................................
8
1.6.3 BAB III (Analisa Masalah dan Penyelesaian Masalah) .................
8
1.6.4 BAB IV (Implementasi dan Pengujian) .........................................
9
1.6.5 BAB V (Penutup) ...........................................................................
9
BAB II TINJAUAN PUSTAKA ................................................................... 10 2.1 Plagiarisme ............................................................................................ 10 2.2 Data Mining ........................................................................................... 12 2.2.1 Pengertian Data Mining .................................................................. 12 2.2.2 Fungsi Data Mining ........................................................................ 13 2.3 Abstract Syntax Tree ............................................................................. 14 2.4 Algoritma Cosine Similarity .................................................................. 15 2.5 Algoritma Leveinshtein Distance .......................................................... 17 2.5.1 Pengertian Algoritma Leveinshtein Distance ................................. 17 2.5.2 Langkah – langkah Algoritma Leveinshtein Distance ................... 18 2.5.3 Contoh Kasus Algoritma Leveinshtein Distance ............................ 20 2.5.4 Penggunaan Algoritma Leveinshtein Distance ............................... 22 2.6 Perhitungan Akhir .................................................................................. 22 BAB III ANALISA DAN PERANCANGAN SYSTEM ............................ 23 3.1 Analisa Masalah ..................................................................................... 23 3.2 Analisa System ...................................................................................... 23 3.3 Analisa Data Masukan ........................................................................... 26 3.4 Analisa Preprocessing ............................................................................ 27
ix
3.5 Analisa Algoritma dan Perhitungan ...................................................... 30 3.5.1 Analisa Algoritma Cosine Similarity ............................................. 30 3.5.2 Analisa Algoritma Leveinshtein Distance ...................................... 31 3.5.3 Perhitungan Total ........................................................................... 32 BAB IV IMPLEMENTASI DAN PENGUJIAN SYSTEM ....................... 34 4.1 Implementasi System ............................................................................. 34 4.1.1 Implementasi Perangkat Keras ....................................................... 34 4.1.2 Implementasi Perangkat Lunak ...................................................... 34 4.1.3 Implementasi Pemanggilan Source dan Abstract Syntax Tree ....... 35 4.1.4 Implementasi Algoritma Cosine Similarity .................................... 37 4.1.5 Implementasi Algoritma Leveinshtein Distance ............................ 38 4.2 Pengujian System ................................................................................... 39 4.2.1 Pengujian Algoritma Cosine Similarity .......................................... 40 4.2.1.1 Hasil Pengujian Algoritma Cosine Similarity ......................... 40 4.2.1.2 Skenario Algoritma Cosine Similarity .................................... 42 4.2.2 Pengujian Algoritma Leveinshtein Distance .................................. 43 4.2.2.1 Hasil Pengujian Algoritma Leveinshtein Distance .................. 43 4.2.2.2 Skenario Algoritma Leveinshtein Distance ............................. 45 4.2.3 Penentuan Alpha dan Beta .............................................................. 45 4.2.4 Pengujian Penarikan Kesimpulan dan Ringkasan .......................... 46 4.2.4.1 Hasil Pengujian Penarikan Kesimpulan dan Ringkasan .......... 46 4.2.4.2 Skenario Penarikan Kesimpulan dan Ringkasan ..................... 47 BAB V PENUTUP ......................................................................................... 49 5.1 Kesimpulan ............................................................................................ 49 5.2 Saran ...................................................................................................... 50 DAFTAR PUSTAKA LAMPIRAN
x
DAFTAR GAMBAR Gambar 1.1 Alur System .................................................................................
6
Gambar 2.1 Contoh Source Code ................................................................... 14 Gambar 2.2 Contoh AST Program .................................................................. 15 Gambar 2.3 Algoritma Leveinshtein Distance ................................................ 19 Gambar 3.1 Gambaran System ....................................................................... 24 Gambar 3.2 Gambaran System Plagiarisme .................................................... 25 Gambar 3.3 Contoh Source Code 1 ................................................................ 28 Gambar 3.4 Contoh Source Code 2 ................................................................ 28 Gambar 3.5 Hasil Pengambilan Comment ...................................................... 28 Gambar 3.6 Hasil Case-Folding ..................................................................... 29 Gambar 3.7 Urutan Hasil Token Unik ............................................................ 30 Gambar 4.1 Pemanggilan Directory ................................................................ 35 Gambar 4.2 Parsing Directory ......................................................................... 36 Gambar 4.3 Pemanggilan AST Comment ....................................................... 36 Gambar 4.4 Pemanggilan dan Formalization .................................................. 37 Gambar 4.5 Pseudocode Algoritma Cosine Similarity ................................... 38 Gambar 4.6 Pseudocode Algoritma Leveinshtein Distance ............................ 38 Gambar 4.7 Pengujian Source code 1 ............................................................. 39 Gambar 4.8 Pengujian Source code 2 ............................................................. 40
xi
DAFTAR TABEL Tabel 2.1 Contoh kasus Cosine Similarity ...................................................... 16 Tabel 2.2 Sebelum Transformasi .................................................................... 20 Tabel 2.3 Setelah Transformasi ....................................................................... 20 Tabel 2.4 Matriks Leveinshtein Distance ........................................................ 21 Tabel 3.1 Library yang digunakan .................................................................. 26 Tabel 3.2 Daftar isis Library ........................................................................... 26 Tabel 3.3 Hasil Tokenizing Comment ............................................................ 29 Tabel 3.4 Inisialisasi Token ............................................................................ 29 Tabel 3.5 Perhitungan Cosine Similarity ........................................................ 30 Tabel 3.6 Perhitungan Leveinshtein Distance ................................................. 31 Tabel 3.7 Contoh Threshold ............................................................................ 33 Tabel 4.1 Pengambilan Comment ................................................................... 41 Tabel 4.2 Proses Case-Folding ....................................................................... 41 Tabel 4.3 Perhitungan Cosine Similarity ........................................................ 42 Tabel 4.4 Urutan Token Unik ......................................................................... 43 Tabel 4.5 Struktur dan Inisialisasi token unik source code 1 ......................... 44 Tabel 4.6 Struktur dan Inisialisasi token unik source code 2 ......................... 44 Tabel 4.7 Perhitungan Gabungan Akhir .......................................................... 47 Tabel 4.8 Hasil Penarikan Kesimpulan ........................................................... 47
xii
DAFTAR PUSTAKA
Andhika, Fatardhi R. 2010. Penerapan String Sugestion dengan Algoritma Leveinshtein Distance dan Alternatif Algoritma lain dalam Aplikasi. Bandung, Institut Teknologi Bandung. Efraim, Turban. Reiner, Kelly R dan Potter, Rizhard. 2005. Introduction to Information Technology. 3rd Edition. USA : John Willey & Sons, Inc. Ilmy, Muhammad Bahari & Rahmi, Nitia. 2006. Penerapan Algoritma Leveinshtein Distance untuk Mengoreksi Kesalahan Pengejaan pada Editor Teks. Institut Teknologi Bandung. Jalal, A. F. D. & Presetya, Eka Budhy. 2014. Deteksi Similarity Source Code Menggunakan
Metode
Deteksi
Abstract
Syntax
Tree.
Universitas
Muhammadiyah Jakarta. Kurniawan, A. & Wicaksana, I Wayan S. 2008. Perbandingan Pendekatan Deteksi
Plagiarisme
Dokumen
dalam
Bahasa
Inggris.
Universitas
Gunadarma. Lilian. Budhi, Gregorius. Wibisono, A. & Tanojo, Ricky. 2012. Pengecekan Plagiarisme pada Code Dalam Bahasa C++. Universitas Kristen Petra Surabaya. Makhfiyana, I. & Mudzakkir, M. 2014. Rasionalitas Plagiarisme di Kalangan Mahasiswa Fakultas Ilmu Sosial Unesa, 3. Universitas Negri Surabaya. Mutiara, Andika Benny & Agustina, Sinta. 2010. Anti Plagiarisme Application With Algorithm Karp – Rabin at Thesis in Gunadarma University. Gunadarma University. Septian, Widi Tia. 2012. Diteksi Plagiat pada Dokument Text Menggunakan Metode Cosine Similarity. BINUS University.
Soelistyo, Hendry. 2011. Plagiarisme, Pelanggaran Hak Cipta dan Etika. Kanisius Jakarta.
Telnoni, Patrick Adolf. 2015. Perancangan Tools Pencegahan Serangan Drive By Download dengan Kombinasi Plugin DeFusinator dan Abstract Syntax Tree. Universitas Telkom Bandung.