BAB I PENDAHULUAN 1.1 Latar Belakang

dokumen-dokumen yang mirip
DETEKSI PLAGIARISME SOURCE CODE BERBASIS ABSTRACT SYNTAX TREE

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

Team project 2017 Dony Pratidana S. Hum Bima Agus Setyawan S. IIP

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

PENGECEKAN PLAGIARISME PADA CODE DALAM BAHASA C++

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

BAB 1 PENDAHULUAN. Universitas Kristen Maranatha

BAB 2 TINJAUAN PUSTAKA

BAB I PENDAHULUAN. Jiménez-Peris, dkk dalam paper-nya yang berjudul New Technologies in

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

BAB 1 PENDAHULUAN. Seiring dengan perkembangan teknologi yang begitu pesat, manusia semakin

BAB I PENDAHULUAN. pendapat, dan sebagainya dari orang lain dan menjadikannya seolah karangan dan

Aplikasi Rekursif dalam Analisis Sintaks Program

Fase-fase proses sebuah kompilasi

P11 Array. A. Sidiq Purnomo Program Studi Teknik Informatika Universitas Mercu Buana Yogyakarta

APLIKASI STATISTIK PENDETEKSIAN PLAGIARISME DOKUMENT TEXT DENGAN ALGORITMA RABIN KARP

BAB 3 LANDASAN TEORI

BAB I PENDAHULUAN. Dari tahun ke tahun sudah tidak dapat dipungkiri bahwa teknologi informasi

BAB I PENDAHULUAN. penunjang Al-Quran untuk memudahkan untuk mempelajarinya, yang bisa

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

BAB I PENDAHULUAN. Pengeluaran untuk produk Information Technology (IT) diseluruh dunia untuk. mulai bertransisi ke arah ini (Reisinger, 2012).

TEKNIK VECTOR SPACE MODEL (VSM) DALAM PENENTUAN PENANGANAN DAMPAK GAME ONLINE PADA ANAK

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Permasalahan

Jurnal Coding, Sistem Komputer Untan Volume 04, No.1 (2016), hal ISSN : x

BAB I PENDAHULUAN. penjiplakan suatu tulisan. Neville (2010) dalam buku The Complete Guide to

BAB 1 PENDAHULUAN Latar Belakang Masalah

Kuliah Online : TEKKOM [2013/VI]

BAB 1 PENDAHULUAN Latar Belakang

BAB III METODOLOGI PENELITIAN

Jurnal Ilmiah Sains, Teknologi, Ekonomi, Sosial dan Budaya Vol. 1 No. 4 Desember 2017

BAB I PENDAHULUAN. berinovasi menciptakan suatu karya yang original. Dalam hal ini tindakan negatif

ANALISIS KLASTERING LIRIK LAGU INDONESIA

Konsep Bahasa Pemrograman Pertemuan 5

BAB I PENDAHULUAN. Hadirnya teknologi informasi berdampak pada banyak sektor, termasuk

BAB II TINJAUAN PUSTAKA

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

P3 Pengantar Pemrograman C

BAB II SINTAKS 2.1. SINTAKS

BAB I PENDAHULUAN. dengan mudah diduplikasi (Schleimer, Wilkerson, & Aiken, 2003). Dengan

@copyright by Emy PENGANTAR ALGORITMA & PROGRAM & PROGRAM PENGERTIAN ALGORITMA NOTASI UNTUK ALGORITMA

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

SEMANTIK. Int vector[10];

BAB I PENDAHULUAN. sebagai sumber pertama dan utama yang banyak memuat ajaran-ajaran yang

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

BAB III ANALISA DAN DESAIN SISTEM

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

MATERI KULIAH ALGORITMA DAN PEMROGRAMAN I (2 SKS)

BAB 1. PENDAHULUAN. 1 Universitas Kristen Maranatha

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

BAB II TINJAUAN PUSTAKA. seolah-olah karya orang lain tersebut adalah karya kita dan mengakui hasil

Deteksi Otomatis Plagiarisme Source Code

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

BAB IV HASIL DAN UJI COBA

BAB 2 LANDASAN TEORI

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

Pemrograman Dasar I N T R O D U C T I O N T O J A V A

APLIKASI PENDETEKSI KEMIRIPANPADA DOKUMEN MENGGUNAKAN ALGORITMA RABIN KARP

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

BAB III ANALISA DAN DESAIN SISTEM. Analisa masalah yang didapat dari penelitian ini adalah membuat data

IV. RANCANG BANGUN SISTEM. Perangkat lunak bantu yang dibuat adalah perangkat lunak yang digunakan untuk

BAB I PENDAHULUAN 1.1 Latar Belakang

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK. Maimunah, S.Si,M.Kom

Struktur Data. PDE - Struktur Data 1

BAB II LANDASAN TEORI

BAB 3 ANALISIS MASALAH DAN PERANCANGAN

Aplikasi Pendeteksi Dugaan Awal Plagiarisme Pada Tugas Siswa Dan Mahasiswa Berdasarkan Kemiripan Isi Teks Menggunakan Algoritma Levenshtein Distance

BAB IV ANALISA DAN PERANCANGAN

STRUKTUR DASAR PHP ASUMSI 02/10/2014

Implementasi Algoritma Jaro-Winkler Distance Untuk Sistem Pendeteksi Plagiarisme Pada Dokumen Skripsi

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

INFORMATION RETRIEVAL SYSTEM PADA PENCARIAN FILE DOKUMEN BERBASIS TEKS DENGAN METODE VECTOR SPACE MODEL DAN ALGORITMA ECS STEMMER

BAB 4 IMPLEMENTASI DAN EVALUASI

Spesifikasi Program. Pendahuluan

Pendahuluan. Komang Anom Budi Utama, Skom

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

IMPLEMENTASI METODE TERM FREQUENCY INVERSED DOCUMENT FREQUENCE (TF-IDF) DAN VECTOR SPACE MODEL PADA APLIKASI PEMBERKASAN SKRIPSI BERBASIS WEB

BAB 1 PENDAHULUAN UKDW

Komponen sebuah Kompilator

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

BAB III ANALISIS DAN PERANCANGAN

BAB III ANALISIS DAN PERANCANGAN

BAB I PENDAHULUAN 1.1. Latar Belakang

TEKNIK KOMPILASI. Firrar Utdirartatmo

OPTIMASI QUERY UNTUK PENCARIAN DATA MENGGUNAKAN PENGURAIAN KALIMAT DAN ALGORITME LEVENSHTEIN DISTANCE

PENYAJIAN ALGORITMA. a. Stuctured English b. Psedoucode

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB III ANALISA MASALAH DAN PERANCANGAN PROGRAM

PERSETUJUAI\ ARTIKEL ILMIAH. Mashar Eka Putra Dai. S1-Sistem Informasi. Teknik Informatika. Teknik. Penerapan Metode Document Frequency

BAB I PENDAHULUAN. bagaimana membuat mesin (komputer) dapat melakukan pekerjaan seperti dan

BAB I PENDAHULUAN 1.1 Latar Belakang

LANGUAGES AND TRANSLATOR

Teknik Kompilasi. Notasi Bahasa

Pendahuluan. Tujuan Pembelajaran :

MODUL PRAKTIKUM PEMROGRAMAN PASCAL. Fight #1 PENGENALAN PASCAL, VARIABEL, TIPE DAN KONSTANTA.

1 Bagian 1: Mencetak isi binary tree

BAB I PENDAHULUAN 1.1. Latar Belakang

TPI4202 e-tp.ub.ac.id

Transkripsi:

BAB I PENDAHULUAN 1.1 Latar Belakang Di dalam dunia pemrograman komputer, kode program (source code) adalah kumpulan deklarasi atau pernyataan dari bahasa pemrograman computer yang di tulis dan bisa dibaca oleh manusia. Source code merupakan pernyataan yang digunakan oleh programmer untuk berkomunikasi dengan computer menggunakan beberapa perintah yang terdefinisi. Source code ini biasanya dibuat dalam satu atau lebih file teks, terkadang disimpan didalam database yang tersimpan sebagai prosedur dan bisa juga muncul sebagai potongan kode yang tercetak di buku ataupun media lainnya. Banyaknya pernyataan atau deklarasi dari file source code bisa diatur dan diubah dalam bentuk directory pohon, atau biasa dikenal dengan source tree, (Jalal & Prasetya, 2014). Plagiarisme (penjiplakan) dalam pembuatan program dan penulisan source code cukup sering terjadi dan dilakukan di kalangan akademisi dan programmer, (Kurniawati & Wicaksono, 2008). Plagiarisme merupakan tindakan penipuan hasil karya orang lain tanpa sepengetahuan dari penulis aslinya, yang melanggar suatu Hak Cipta dan Hak Moral. Ketertarikan programmer terhadap tindakan plagiarisme, digunakan oleh rasionalitas instrumental. Programmer lebih memperhitungkan tentang efisiensi, efektifitas dan nilai yang dimiliki oleh sumber daya yang ada untuk mencapai tujuan yang diharapkan, (Makhfiyana & Mudzakkir, 2014). Abstract Syntax Tree (AST) adalah representasi source code sebuah file ke dalam sebuah file ke dalam bentuk pohon atau tree. Setiap node dalam AST merepresentasikan sebuah construct yang terdapat dalam sebuah Bahasa pemrograman. AST merupakan salah satu contoh dari syntax tree. Syntax tree sendiri merupakan bagian yang terdapat dalam compiler. Dalam compiler, syntax tree bertugas untuk melakukan analisa sintaks dan semantik. Pada analisa sintaks, 1

compiler memeriksa struktur grammar bahasa pemrograman yang ditulis, (Telnoni, 2015). Masalah similarity (kemiripan) source code dapat menjadi salah satu solusi pendekatan deteksi tindakan plagiarisme. Adanya indikasi similarity harus di cermati secara seksama karena perlu penafsiran dan pembahasan khusus untuk memberikan keputusan seberapa besar tingkat kemiripan suatu source code dengan source code yang lainnya. Besarnya tingkat kemiripan tersebut bisa sigunakan sebagai salah satu dasar untuk menganalisa dan mempertimbangkan suatu source code melakukan tindakan plagiarisme atau tidak. Dewasa ini Plagiarisme banyak dilakukan dikalangan akademis maupun non akademis. Dengan alasan efisien waktu dan biaya banyak kalangan khususnya akademis yang melakukan kegiatan ini. Khususnya di jurusan Teknik Informatika, sering dan banyak jenis similarity (kemiripan) pada source code yang dijumpai pada tugas-tugas pemrograman yang diberikan kepada mahasiswa oleh para pengajar. Deteksi kemiripan bisa dilihat dari type-type plagiarisme source code. Code Plagiarisme adalah istilah yang digunakan untuk mendiskripsikan adanya kemiripan isi source code antar 2 code yang berbeda. Similarity source code dapat terjadi secara keseluruhan code ataupun sebagian, serta dengan sedikit perubahan pada bagian yang tidak signifikan.terdapat 3 tipe kemiripan testual yang terjadi pada dua buah source code, (Liliana, Budhi, Wibisono, & Tanojo, 2012). 1. Type I Fragmen yang di-copy dari file original secara sama persis di keseluruan bagian, kecuali adanya perbedaan-perbedaan secara whitespaces (spasi atau enter yang tidak memiliki arti), comment, dan modifikasi pada jumlah baris. Tipe ini disebut juga sebagai exact clone. 2. Type II Type ini hampir sama seperti Type I, namun di Type II, terdapat modifikasi pada variable atau fungsi yang ada. Modifkasi bisa berupa pergantian nama, perubahan tipe data ataupun perubahan dan pergantian fungsi tertentu seperti looping. 2

3. Type III Type III adalah kombinasi dari Type I dan Type II. Plagiarisme file dilakukan dengan cara menambahkan statement yang tidak begitu penting. Plagiarisme source code dapat di hitung tingkat plagiarisme-nya dengan mencari similaritas dari kedua source code. Eka Budhy Prasetya dan Ahmad Fadly Dzil Jalal (2014) berpendapat bahwa untuk menghitung similaritas suatu source code dengan menggunakan algoritma leveinshten distance dan smithwaterman, cara perhitungannya yaitu membuat sebuah matriks yang terbuat dari dua string squence dari hasil AST suatu source code. Namun ada salah satu struktur yang kurang cocok untuk dihutung dengan menggunakan leveinshtein distance, yaitu comment. Comment kurang cocok jika dihitung dengan leveinshtein distance karena comment terdiri dari term term, oleh karena itu penulis menggusulkan untuk menggunakan perhitungan cosine similarity untuk perhitungan comment-nya. Jadi pada penelitian ini perhitungan similaritas dari suatu source code menggunakan leveinshtein distance untuk struktur dan cosine similarity untuk comment. 1.2 Rumusan Masalah Adapun rumusan masalah dalam penelitian ini adalah sebagai berikut : Bagaimana cara mengubah sebuah source code menjadi bentuk AST (Abstract Syntax Tree)? Bagaimana cara mendeteksi plagiarisme pada source code dengan menggunakan AST (Abstract Syntax Tree)? Bagaimana cara menghitung kedekatan source code dengan menggunakan Levenshtein Distance dan Cosine similarity? 1.3 Tujuan Tujuan yang ingin dicapai dalam pembuatan Tugas Akhir ini adalah untuk menggetahui Plagiarisme pada Source code Program berbasis Abstract 3

Syntax Tree (AST) dengan menggunakan kedekatan Levenshtein Distance dan Cosine similarity. 1.4 Batasan Masalah Adapun beberapa batasan masalah yang terdapat pada Tugas Akhir ini adalah: File (source code) yang dibandingkan hanya 1 class dengan fotmat.java (dot java) dan bukan Package ataupun Project Program menggunakan bahasa pemrograman Java Dalam penelitian ini untuk menentukan kedekatannya menggunakan Levenshtein Distance dan Cosine similarity File yang dibandingkan harus file java yang sejenis dalam artian jika diinputkan sama maka outputnya sama. 1.5 Metodologi Penelitian 1.5.1 Studi Pustaka Studi Pustaka merupakan tahapan untuk memahami konsep Plagiarisme pada Source code dan memahami kedekatan dengan menggunakan Levenshtein Distance dan Cosine similarity yang berbasis Abstract Syntax Tree. Pemahaman konsep didapatkan dari jurnal atau buku yang dapat dijadikan sebagai sumber rujukan. 1.5.2 Prepocessing 1.5.2.1 File menggunakan format.java (dot java) File yang akan di bandingkan harus memiliki format.java (dot Java) bukan berupa Project ataupun Package. Dengan memasukkan letak directory dari file yang akan diandingkan. 1.5.2.2 Mengubah file.java (dot java) kedalam bentuk AST Pengubahan file java menjadi bentuk AST (Abstract Syntax Tree) yang akan dibandingkan. 1.5.2.3 Case-Folding (Comment) 4

Dalam tahap ini dilakukan proses penerimaan karakter dari AST dan mengubah bentuk karakter AST yang berhuruf capital menjadi huruf kecil semua dan menghilangkan karakter selain angka dan karakter a-z. 1.5.2.4 Tokenizing Tokenizing adalah tahapan untuk menjadikan bentuk dokumen AST ke bentuk parsing berdasarkan spasi agar terbentuk kumpulan kata untuk dibandingkan. 1.5.2.5 Formalization Hasil proses parsing dari AST berupa node atau token unik yang membentuk suatu rangkaian sequence yang bermakna secara strukutral. Token merupakan hasil pengkategorian dari setiap kata atau karakter yang terdapat pada source code dimana setiap token terdefinisi dengan ID unik hasil generate parser dari AST. 1.5.3 Processing 1.5.3.1 Perbandingan AST dari file java File yang dibandingkan adalah data Testing (query) dengan juga data Training (Document) dari file java yang sudah diubah ke AST dan sudah di Tokenizing dan juga Case-folding. 1.5.3.2 Levenshtein Distance (Struktur) Levenshtein distance digunakan untuk mengukur nilai kesamaan atau kemiripan struktur program dari dua program java. 1.5.3.3 Cosine similarity (Comment) Perhitungan Kedekatan (kemiripan) dengan menggunakan rumus dan perhitungan kosinus. Dari kemiripan kosinus ini bisa diketahui file yang lebih mendekati atau mirip sama file pembandingnya. 1.5.3.4 Threshold Untuk menentukan sebuah file melakukan plagiarisme atau tidak maka kita harus menentukan Threshold (ambang batas) dari plagirisme. Treshold adalah besaran numerik pada output yang berhubungan dengan ambang penentuan 5

sebuah masalah. Cara menentukan tresholdnya adalah dengan cara melihat secara nyata atau melihat dari user. 1.5.4 Desain System Start Input dua file berformat java Comment YA Comment : Melakukan Case-Folding Menjadikan parse dari AST file.java dengan menggunakan Tokenizing TIDAK Strukture (Identifier, Perulangan, Dll) : Melakukan Formalization dengan menghilangkan Noise yang ada Mendeklarasikan parse dari Formalization AST ke bentuk ID unik Menghitung kedekatan strukture dengan menggunakan Levenshtein Distance Output Presentasi Similarity Source Code Menghitung Similarity dari Comment antara file.java dengan Cosine Similarity End Gambar 1.1 Alur System Penjelasan dari Skema System: Adapun proses dari system yang akan di terapkan adalah seperti pada gambar diatas. Tahap yang pertama dilakukan adalah mempersiapkan dan menginputkan file yang memiliki format.java (dot java) dengan mencari 6

directory letak program yang ingin di bandingkan, setelah selesai terinput maka system akan mengubah bentuk program tersebut membentuk AST (Abstract Syntax tree) yang kita butuhkan yang nantinya kita olah menjadi parse sebagai perbandingan. Jika ingin membandingkan Comment yang ada, maka kita harus melakukan Tokenizing dan Case-Folding. Untuk membandingkan Commentnya bisa menggunakan Cosine similarity dan menghasilkan presentasi kemiripannya. Dan jika ingin membandingkat struktur yang ada seperti (identifier, Perulangan, Pengondisian, dan lain - lain) maka langkah yang harus dilakukan oleh system adalah melakukan formalization untuk menghilangkan noise dan melakukan pendeklarasian parse ke dalam bentuk ID unik, setelah itu system menghitung tingkat Similaritas dengan menggunakan perhitungan Levenshtien Distance dan menghasilkan presentasi similaritasnya. 1.5.5 Pengujian dan Evaluasi Tahap ini dapat dilakukan uji coba dan evaluasi terhadap system yang telah dibangun. Pengujian terhadap system yang dilakukan adalah menguji tingkat similaritynya dengan menggunakan Kedekatan Kosinus untuk menentukan kedekatan dari comment dan menggunakan Levenshtein Distance untuk menentukan similaritas dari struktur datanya. Semakin tinggi tingkat tingkat similaritasnya maka semakin besar pula tingkat plagiarismenya. Rumus kedekatan dari Cosine similarity : Rumus kedekatan dari Levenshtein distance : Keterangan: 7

Sim (m, n) = Tingkat kemiripan antara source code m dan source code n Dis = Nilai Levensthein Distance (nilai akhir perbandingan string m dan string n yang ada pada pojok kanan bawah matriks) MaxLength = Jumlah karakter maksimum dua source code Rumus Final Similarity : Keterangan: α = 0 < α 1 β = 1 α Nilai α masih dalam penelitian untuk tingkat optimasinya dan begitu juga β. Hasil dari perhitungan Sim Final ini akan di bandingkan dengan threshold yang ada. Jika hasil terakhir kurang dari threshold maka tingkat plagiarisme rendah, begitu juga sebaliknya. 1.6 Sistematika Penulisan Penjelasan sistematika merupakan suatu penjabaran secara deskriptif tentang hal-hal yang ditulis, yang secara garis besar terdiri dari bagian awal, bagian isi dan bagian akhir. 1.6.1 BAB I (Pendahuluan) Pada bab ini disajikan latar belakang, permasalahan, rumusan masalah, desain system, tujuan penelitian, manfaat penelitian dan sistematika penulisan. 1.6.2 BAB II (Tinjauan Pustaka) Pada bab ini disajikan tentang teori-teori yang berhubungan dengan fakta atau studi kasus yang sedang dibahas. Disamping itu juga dapat disajikan mengenai berbagai pendapat yang berhubungan dan bermanfaat sebagai bahan untuk melakukan analisis dan implementasi terhadap studi kasus yang akan dilakukan pada BAB IV. 1.6.3 BAB III (Analisa Masalah dan Penyelesaian) 8

Pada bab ini menyajikan analisa dan penyelesaian dari rumusan masalah yang sudah ada menjadi rancangan awal system. Rancangan tersebut bisa meliputi diagram, prototype dan beberapa bentuk penyajian perancangan yang lain yang sesuai dengan studi kasus yang diambil pada penelitian tersebut. 1.6.4 BAB VI (Implementasi dan Pengujian) Pada bab ini disajikan bentuk implementasi dari studi kasus dan perancangan awal yang telah dibuat. Implementasi seluruhnya akan disajikan dalam bab ini. 1.6.5 BAB V (Penutup) Bab ini merupakan kristalisasi dari semua yang telah dicapai pada masing-masing bab sebelumnya. Tersusun atas kesimpulan dan saran. 9