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
i
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. Eko Budi C., S.Kom, M.Kom.
NIP. 108.0611.0442 NIP. 108.9504.0330
Mengetahui
Ketua Jurusan Teknik Informatika
Yuda Munarko, S.Kom, M.Sc. NIP. 108.0611.0443
ii
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 Pembimbing II
Yufis Azhar, S.Kom, M.Kom. Yuda Munarko, S.Kom, M.Sc.
v
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 Pembimbing II
Yufis Azhar, S.Kom, M.Kom. Yuda Munarko, S.Kom, M.Sc.
vi
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
vii
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
viii
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
ix
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
x
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
xi
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
xii
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
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
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.