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. 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 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 Pembimbing II Yufis Azhar, S.Kom, M.Kom. Yuda Munarko, S.Kom, M.Sc. NIP. 108.1410.0544 NIP. 108.0611.0443 ii
Yang bertanda tangan di bawah ini : LEMBAR PERNYATAAN 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 Pembimbing I Mengetahui Pembimbing II Yufis Azhar, S.Kom, M.Kom. Yuda Munarko, S.Kom, M.Sc. NIP. 108.1410.0544 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... LEMBAR PERSETUJUAN... LEMBAR PERNYATAAN... ABSTRACT... LEMBAR PERSEMBAHAN... i ii iii iv 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. 3 rd 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.