PENGEMBANGAN MODEL ABSTRACT SYNTAX TREE BERBASIS B-TREE DAN NAÏVE BAYES UNTUK PERHITUNGAN KESAMAAN SINTAKS PADA PROGRAM KOMPUTER SKRIPSI I GEDE WISESA PRIYA FENTIKA NIM. 1208605081 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS UDAYANA BUKIT JIMBARAN 2016 i
SURAT PERNYATAAN KEASLIAN KARYA ILMIAH Yang bertanda tangan di bawah ini menyatakan bahwa naskah Skripsi dengan judul:...... Nama : I Gede Wisesa Priya Fentika NIM : 1208605081 Program Studi : Teknik Informatika E-mail : sesa.fentika@gmail.com Nomor telp/hp : 087861375820 Alamat : Dusun Nyuh, Desa Lemukih, Kec. Sawan, Kab. Buleleng, Bali. Belum pernah dipublikasikan dalam dokumen skripsi, jurnal nasional maupun internasional atau dalam prosiding manapun, dan tidak sedang atau akan diajukan untuk publikasi di jurnal atau prosiding manapun. Apabila di kemudian hari terbukti terdapat pelanggaran kaidah-kaidah akademik pada karya ilmiah saya, maka saya bersedia menanggung sanksi-sanksi yang dijatuhkan karena kesalahan tersebut, sebagaimana diatur oleh Peraturan Menteri Pendidikan Nasional Nomor 17 Tahun 2010 tentang Pencegahan dan Penanggulangan Plagiat di Perguruan Tinggi. Demikian Surat Pernyataan ini saya buat dengan sesungguhnya untuk dapat dipergunakan bilamana diperlukan. Bukit Jimbaran, April 2016 Yang membuat pernyataan, (I Gede Wisesa Priya Fentika) NIM. 1208605081 i
PENGEMBANGAN MODEL ABSTRACT SYNTAX TREE BERBASIS B-TREE DAN NAÏVE BAYES UNTUK PERHITUNGAN KESAMAAN SINTAKS PADA PROGRAM KOMPUTER KOMPETENSI KOMPUTASI [SKRIPSI] Sebagai syarat untuk memperoleh gelar Sarjana Komputer pada Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Udayana Tulisan ini merupakan hasil penelitian yang belum pernah dipublikasikan I GEDE WISESA PRIYA FENTIKA NIM. 1208605081 Pembimbing I Pembimbing II I Made Widiartha, S.Si., M.Kom NIP. 198212202008011008 I Gede Santi Astawa, S.T., M.Cs NIP. 198012062006041003 ii
LEMBAR PENGESAHAN TUGAS AKHIR Judul Kompetensi Nama NIM : 1208605081 : Pengembangan Model Abstract Syntax Tree Berbasis B-Tree dan Naïve Bayes Untuk Perhitungan Kesamaan Sintaks Pada Program Komputer : Komputasi : I Gede Wisesa Priya Fentika Tanggal Seminar : 22 April 2016 Pembimbing I Disetujui Oleh : Penguji I (I Made Widiartha, S.Si., M.Kom) (I Komang Ari Mogi, S.Kom., M.Kom) NIP. 198212202008011008 NIP. 198409242008011007 Pembimbing II Penguji II (I Gede Santi Astawa, S.T., M.Cs) (Ida Bagus Made Mahendra, S.Kom., M.Kom) NIP. 198006162005011001 NIP. 198006212008121002 Penguji III (I Gede Arta Wibawa, S.T., M.Kom) NIP. 198310222008121001 Mengetahui, Ketua Jurusan Ilmu Komputer FMIPA Universitas Udayana (Agus Muliantara, S.Kom., M.Kom) NIP. 198006162005011001 iii
Judul : Pengembangan Model Abstract Syntax Tree Berbasis B-Tree dan Naïve Bayes Untuk Perhitungan Kesamaan Sintaks Pada Program Komputer Nama : I Gede Wisesa Priya Fentika (NIM: 1208605081) Pembimbing : 1. I Made Widiartha, S.Si., M.Kom 2. I Gede Santi Astawa, S.T., M.Cs ABSTRAK Pemrograman merupakan salah satu keterampilan (skill) yang harus dimiliki oleh setiap mahasiswa yang mengambil jurusan dalam ranah Teknologi Informasi (TI) pada Perguruan Tinggi. Setiap matakuliah pemrograman yang diambil, tugas membuat program merupakan suatu hal yang mutlak diperlukan untuk mengukur tingkat kepahaman akan konsep pemrograman yang diajarkan. Setiap tugas yang diberikan akan memiliki tenggat waktu (deadline) untuk dikumpulkan. Pengumpulan tugas yang bersamaan akan memunculkan permasalahan yaitu menentukan apakah dua buah program memiliki kesamaan atau tidak. Disamping itu, proses pemeriksaan tugas dilakukan secara manual sehingga membutuhkan waktu yang lama. Oleh karena itu diperlukan sebuah sistem yang dapat mempercepat dan mempermudah proses untuk pengecekan kesamaan kode program. Sistem dibuat dengan mengembangkan model Abstract Syntax Tree (AST) berbasis B-Tree dan Naïve Bayes. Sistem ini bernama Syntax Similarity Program (SSP). Pengujian yang dilakukan pada sistem bertujuan untuk mengukur ketepatan dalam memeriksa kesamaan kode program dan kecepatan dalam proses pemeriksaan. Ketepatan diuji dengan membandingkan hasil presentase kesamaan (PK) sistem dengan hasil perhitungan manual. Sedangkan Kecepatan diuji dengan menghitung kompleksitas waktu total dari proses-proses penting pada sistem. Hasil dari pengujian ketepatan menghasilkan nilai 100 % dan hasil dari pengujian kecepatan menghasilkan nilai kompleksitas waktu O(lg n 4 + n 3 ). Dengan total 10 himpunan kode program yang diuji, hasil pengujian membuktikan bahwa pengembangan model Abstract Syntax Tree (AST) berbasis B-Tree dan Naïve Bayes dapat berjalan dengan ketepatan dan kecepatan yang baik untuk memeriksa kesamaan kode program. Kata Kunci : Pemrograman, Abstract Syntax Tree (AST), B-Tree, Naïve Bayes, Syntax Similarity Program (SSP). iv
Title : Development of B-Tree based Abstract Syntax Tree and Naïve Bayes for Syntax Similarity Computation on Computer Programs Name : I Gede Wisesa Priya Fentika (NIM: 1208605081) Supervisor : 1. I Made Widiartha, S.Si., M.Kom 2. I Gede Santi Astawa, S.T., M.Cs ABSTRACT Programming is one of the skills prossessed by any student who majored in the realm of Information Technology (IT) in Higher Education. In each programming course taken, the task of creating a program is something that is necessary to measure the level of understanding of the concept of programming taught. Any given task will have a deadline to submit. The submission of tasks simultaneously will bring up problems that may determine whether the two programs have similarities or not. In addition, the evaluation process of a task is done manually so it takes a long time. Therefore, a system is needed that can speed up and simplify the process for checking the similarity of the program code. The system is created by developing the Abstract Syntax Tree (AST) based on B-Tree and Naive Bayes. This system is called Syntax Similarity Program (SSP). Tests conducted on the system aims to measure the accuracy in checking the program code and the speed in the examination process. Accuracy is tested by comparing the system of similarity percentage results (PK) with the results of manual computations while speed is tested by computing the total time complexity of important processes on the system. The results of testing the accuracy yielded the value of 100% and the results of testing the speed yielded value time complexity O(lg n 4 + n 3 ). With a total of 10 sets of program codes tested, the test results proved that the development model of Abstract Syntax Tree (AST) based on B-Tree and Naive Bayes could run with good accuracy and speed for examining the program codes. Keywords: Programming, Abstract Syntax Tree (AST), B-Tree, Naïve Bayes, Syntax Similarity Program (SSP) v
KATA PENGANTAR Penelitian dengan judul Pengembangan Model Abstract Syntax Tree Berbasis B-Tree dan Naïve Bayes Untuk Perhitungan Kesamaan Sintaks Pada Program Komputer ini disusun dalam rangkaian kegiatan pelaksanaan Tugas Akhir di Jurusan Ilmu Komputer FMIPA UNUD. Penelitian ini dilaksanakan pada periode Juli 2015 hingga April 2016 di Universitas Udayana. Sehubungan dengan telah terselesaikannya penelitian ini, maka diucapkan terima kasih dan penghargaan kepada berbagai pihak yang telah membantu penyusun, antara lain: 1. Bapak I Made Widiartha, S.Si., M.Kom sebagai Pembimbing I yang telah banyak meluangkan waktu untuk membantu pelaksanaan penelitian ini; 2. Bapak I Gede Santi Astawa, S.T., M.Cs sebagai Pembimbing II yang telah bersedia mengkritisi, memeriksa dan menyempurnakan penulisan ini; 3. Bapak Agus Muliantara, S.Kom., M.Kom selaku Ketua Jurusan Ilmu Komputer Universitas Udayana yang telah banyak memberikan masukan dan motivasi sehingga memperlancar dalam proses pengerjaan penelitian ini; 4. Bapak-bapak dan ibu-ibu dosen di Jurusan Ilmu Komputer yang telah meluangkan waktu turut memberikan saran dan masukan dalam pelaksanaan penelitian; 5. Kawan-kawan di Jurusan Ilmu Komputer yang telah memberikan dukungan moral dalam penyelesaian penelitian ini. Disadari pula bahwa sudah tentu hasil-hasil dari penelitian ini masih mengandung kelemahan dan kekurangan. Memperhatikan hal ini, maka masukan dan saran-saran penyempurnaan sangat diharapkan. Bukit Jimbaran, April 2016 Penyusun I Gede Wisesa Priya Fentika vi
DAFTAR ISI HALAMAN JUDUL... i LEMBAR PERNYATAAN... ii LEMBAR PENGESAHAN... iii ABSTRAK... iv ABSTRACT... v KATA PENGANTAR... vi DAFTAR ISI... vii DAFTAR TABEL... x DAFTAR GAMBAR... xi DAFTAR LAMPIRAN... xii BAB I PENDAHULUAN... 1 1.1 Latar Belakang... 1 1.2 Rumusan Masalah... 2 1.3 Batasan Masalah... 3 1.4 Tujuan Penelitian... 3 1.5 Manfaat Penelitian... 3 1.6 Metodologi Penelitian... 3 1.6.1 Desain Penelitian... 3 BAB II TINJAUAN PUSTAKA... 5 2.1 Sintaks Program Komputer... 5 2.1.1 Elemen Dasar Bahasa Java... 6 2.2 Ekspresi Reguler... 11 2.3 Abstract Syntax Tree (AST)... 14 2.4 Struktur Data B-Tree... 15 2.5 Probabilitas Naïve Bayes... 16 2.6 Tree Pattern Matching (TPM)... 17 BAB III ANALISIS DAN PERANCANGAN... 19 3.1 Kebutuhan Fungsional... 19 3.1.1 Melakukan Input Data... 19 3.1.2 Melakukan Ekstraksi Data... 20 vii
3.1.3 Pembuatan Abstract Syntax Tree (AST)... 20 3.1.4 Perhitungan Naïve Bayes... 20 3.1.5 Melakukan Tree Pattern Matching... 20 3.2 Rancangan Data... 21 3.3 Rancangan Antar Muka Sistem... 25 3.3.1 Header... 26 3.3.2 Input Data Program... 26 3.3.3 Hasil Ekstraksi Kode Program... 26 3.3.4 Proses Perhitungan... 27 3.3.5 Hasil Statistik... 27 3.4 Pengolahan Data... 28 3.4.1 Preprocessing... 28 3.4.2 Pembuatan Abstract Syntax Tree... 29 3.4.3 Perhitungan Naïve Bayes... 29 3.4.4 Proses Tree Pattern Matching... 30 3.5 Pengujian dan Evaluasi... 31 3.5.1 Skenario Pengujian... 31 3.5.2 Evaluasi Sistem... 31 BAB IV HASIL DAN PEMBAHASAN... 33 4.1 Implementasi Input Data... 33 4.2 Implementasi Melakukan Ekstraksi Data... 34 4.3 Implementasi Perhitungan Naïve Bayes... 39 4.4 Implementasi Pembuatan Abstract Syntax Tree (AST)... 41 4.5 Implementasi Proses Tree Pattern Matching (TPM)... 44 4.6 Implementasi Proses Inisialisasi Hasil Statistik... 46 4.7 Tampilan Antarmuka Sistem... 49 4.7.1 Tampilan Input Data... 49 4.7.2 Tampilan Lihat Kode Program... 50 4.7.3 Tampilan Data Kategori... 50 4.7.4 Tampilan Status Proses... 51 4.7.5 Tampilan Tabel Probabilitas... 51 4.7.6 Tampilan Tabel Detail Pemeriksaan... 52 viii
4.8 Hasil dan Pengujian Sistem... 52 4.8.1 Hasil Uji Coba Sistem... 52 4.8.2 Analisa Hasil... 55 BAB V KESIMPULAN DAN SARAN... 58 5.1 Kesimpulan... 58 5.2 Saran... 58 DAFTAR PUSTAKA... 59 LAMPIRAN ix
DAFTAR TABEL Tabel 2.1 Program hello world! Programmer A... 5 Tabel 2.2 Program hello world! pada Programmer B... 5 Tabel 2.3 Format Penulisan Elemen Kode Program pada Java... 6 Tabel 2.4 Kata Kunci pada Java... 9 Tabel 2.5 Daftar Separator di dalam Java... 10 Tabel 2.6 Daftar Metacharacter... 12 Tabel 2.7 Contoh Source Code pada Java... 14 Tabel 3.1 Data Penting pada Format Penulisan Elemen Pemrograman... 22 Tabel 3.2 Data Kategori untuk Kode Program... 24 Tabel 4.1 Pseudocode untuk Mencari File Input... 33 Tabel 4.2 Pseudocode untuk Melihat Isi File Input... 33 Tabel 4.3 Pseudocode Menghitung Jumlah Baris Kode Program... 34 Tabel 4.4 Daftar Regex untuk Ekstraksi Data... 35 Tabel 4.5 Pseudocode Melakukan Ekstraksi Data dengan Regex... 36 Tabel 4.6 Pseudocode Ekstraksi Struktur dari Kode Program... 37 Tabel 4.7 Pseudocode Ekstraksi Konten dari Kode Program... 37 Tabel 4.8 Contoh Kode Program Java untuk Menghitung Probabilitas... 39 Tabel 4.9 Pseudocode Menghitung Probabilitas dengan Naïve Bayes... 40 Tabel 4.10 Pseudocode Membuat Kelas Node untuk B-Tree... 41 Tabel 4.11 Pseudocode Pembuatan Node Root pada B-Tree... 43 Tabel 4.12 Pseudocode Pembuatan Node Child pada B-Tree... 43 Tabel 4.13 Pseudocode Proses Tree Pattern Matching Antara 2 Kode Program... 45 Tabel 4.14 Pseudocode Menampilkan Nilai Probabilitas pada Tabel... 47 Tabel 4.15 Pseudocode Menampilkan Tabel Detail Pemeriksaan Kode Program... 48 Tabel 4.16 Pseudocode Menampilkan Presentase Kesamaan... 49 Tabel 4.17 Hasil Perbandingan PK secara Manual dan Otomatis pada SSP. 53 x
DAFTAR GAMBAR Gambar 1.1 Rancangan Sistem... 4 Gambar 2.1 Model AST untuk Source Code pada Tabel 2.6... 14 Gambar 2.2 Contoh Struktur B-Tree dengan Nilai Orde 5... 15 Gambar 2.3 Sebuah Proses Mapping dengan TPM... 18 Gambar 3.1 Flowchart Proses Pemeriksaan Kode Program... 19 Gambar 3.2 Tampilan Antarmuka SSP versi 2.0... 25 Gambar 3.3 Tampilan Antarmuka Header pada SSP... 26 Gambar 3.4 Tampilan Antarmuka Input Data Program pada SSP... 26 Gambar 3.5 Tampilan Antarmuka Hasil Ekstraksi Kode Program pada SSP 27 Gambar 3.6 Tampilan Antarmuka Proses Perhitungan pada SSP... 27 Gambar 3.7 Tampilan Antarmuka Hasil Statistik pada SSP... 28 Gambar 3.8 Flowchart Ekstraksi Data... 28 Gambar 3.9 Flowchart Preprocessing... 29 Gambar 3.10 Flowchart Pembentukan Pohon... 29 Gambar 3.11 Flowchart Perhitungan Naïve Bayes... 29 Gambar 3.12 Flowchart Tree Pattern Matching... 30 Gambar 3.13 Skema Pemeriksaan Kesamaan untuk 2-5 Kode Program... 31 Gambar 4.1 Contoh B-Tree dari Sebuah Kode Program... 43 Gambar 4.2 Tampilan Hasil Input Data... 50 Gambar 4.3 Hasil Data Kategori dengan Input sama dengan 5... 50 Gambar 4.4 Tampilan Informasi Status Proses... 51 Gambar 4.5 Tampilan Tabel Probabilitas... 51 Gambar 4.6 Tampilan Tabel Detail Pemeriksaan... 51 Gambar 4.7 Tabel Hasil Pemeriksaan... 52 Gambar 4.8 Grafik Pengujian Ketepatan Pemeriksaan Kode Program Secara Manual dan Otomatis dengan SSP... 55 Gambar 4.9 Grafik Laju Pertumbuhan Fungsi Pemeriksaan Kode dengan n : 1-100... 56 xi
Gambar 4.10 Grafik Laju Pertumbuhan Fungsi Pemeriksaan Kode dengan n : 1-5... 57 xii
DAFTAR LAMPIRAN Lampiran 1. Input Kode Program Java xiii
1