• Tidak ada hasil yang ditemukan

BAB V IMPLEMENTASI DAN PENGUJIAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB V IMPLEMENTASI DAN PENGUJIAN"

Copied!
17
0
0

Teks penuh

(1)

1

IMPLEMENTASI DAN PENGUJIAN

Berdasarkan analisis pada BAB III dan perancangan pada BAB IV, telah dikembangkan detektor plagiarisme bernama Deimos untuk mendeteksi plagiarisme source code di kelas pemrograman dasar Teknik Informatika ITB. Pada Bab ini dijelaskan mengenai implementasi dan pengujian Deimos berturut-turut pada Subbab 5.1 dan Subbab 5.2.

5.1 Implementasi

Pada Tugas Akhir ini, telah diimplementasikan sebuah detektor plagiarisme dengan nama Deimos. Penjelasan mengenai lingkungan implementasi dan pengembangan dapat dilihat di Subbab 5.1.1. Batasan implementasi diuraikan pada Subbab 5.1.2. Detil implementasi dapat dilihat pada Subbab 5.1.3 sampai Subbab 0.

5.1.1 Lingkungan Implementasi dan Pengembangan

Detektor plagiarisme Deimos yang diimplementasikan dalam platform Java Runtime Environment dan PHP dikembangkan dalam lingkungan perangkat keras sebagai berikut:

1. Prosesor Intel Pentium M 1,7 GHz. 2. Memory DDR2 768 MB.

3. Harddisk IDE 40 GB.

Spesifikasi perangkat lunak yang dibutuhkan untuk implementasi deteksi plagiarisme Deimos dalam platform Java Runtime Environment dan PHP yaitu:

1. Sistem Operasi Microsoft Windows XP Professional Edition SP2. 2. Java Runtime Environment 1.6.0.

3. Java Platform, Standard Edition Development Kit 1.6.0 4. NetBeans 5.5 IDE.

5. Macromedia Dreamweaver 8 6. Web Server Apache 2.2.0

(2)

5.1.2 Batasan Implementasi

Batasan dalam implementasi detektor plagiarisme yang diberi nama Deimos dapat dijabarkan sebagai berikut:

1. Saat ini Deimos hanya dapat menangani deteksi pada source code dalam bahasa pemrograman LISP dan Pascal sesuai dengan analisis pada Subbab 3.2.7.1.

2. Penyusunan dan penghapusan file-file source code dilakukan secara manual. 5.1.3 Implementasi Kelas

Setiap kelas pada aplikasi backend akan diimplementasikan dalam bahasa pemrograman Java. Sebuah kelas akan diimplementasikan dalam sebuah file. Sedangkan pada aplikasi web, sebuah kelas diimplementasikan dalam PHP. Kelas-kelas yang diimplementasikan sesuai pada perancangan Kelas-kelas yang telah diuraikan di Subbab 4.1 dan Subbab 4.2.

Pada aplikasi backend, ada perbedaan antara implementasi dan perancangan pada Subbab 4.1. Perbedaan tersebut ada pada implementasi scanner dan parser serta ketergantungan pada kelas DatabaseConnector.

Pada implementasinya, proses scanning dan parsing dilakukan secara sekuensial. Pertama-tama source code dibaca per karakter ketika proses scanning. Proses scanning akan menghasilkan rangkaian token atau sering juga disebut sebagai rangkaian simbol. Rangkaian simbol tersebut akan menjadi input bagi parser. Token string yang akan digunakan untuk pembandingan dihasilkan ketika parsing dilakukan terhadap rangkaian simbol tersebut. Implementasi scanner dan parser untuk bahasa pemrograman Pascal sesuai dengan deskripsi di atas. Namun, ada perlakuan khusus untuk bahasa pemrograman LISP. Struktur sintaks bahasa pemrograman LISP sangatlah sederhana, sehingga dimungkinan scanning dan parsing dalam satu kali pass. Keuntungan satu kali pass adalah proses tokenizing yang lebih efisien, sehingga proses deteksi akan memakan waktu lebih singkat. Oleh karena itu pada implementasinya, kelas Scanner_LISP tidak mempunyai method selain konstruktor dan method override startScan() yang mengembalikan null. Pembacaan source code, sekaligus scanning dan parsing menjadi tanggung jawab kelas Parser_LISP, yang juga akan menghasilkan token string.

(3)

Perbedaan implementasi scanner dan parser untuk bahasa pemrograman Pascal dan LISP ini juga dapat menjadi petunjuk untuk pembangunan scanner dan parser untuk bahasa pemrograman lain di kemudian hari. Untuk bahasa-bahasa pemrograman prosedural dan object-oriented seperti C, C++ dan Java yang mempunyai grammar sintaks yang cukup rumit, sebaiknya implementasi scanner dan parser-nya mengikuti implementasi scanner dan parser Pascal, dengan satu kali pass pada pembacaan source code dan satu kali pass untuk pembacaan rangkaian simbol. Sedangkan untuk bahasa-bahasa pemrograman dengan sintaks yang terbatas, misalnya bahasa pemrograman paradigma fungsional atau logik seperti Prolog, dapat dipakai implementasi seperti scanner dan parser LISP yang sekaligus melakukan scanning dan parsing dalam satu kali pass.

Perbedaan kedua antara perancangan kelas dan implementasinya adalah pada penggunaan DatabaseConnector. Kelas DatabaseConnector merupakan kelas boundary yang bertanggung jawab atas koneksi ke basis data sehingga operasi-operasi modifikasi basis data dan pengambilan record dari basis data dapat dilakukan. Pada model perancangan di Subbab 4.1, hanya kelas-kelas entity saja yang menggunakan

DatabaseConnector, sehingga koneksi ke basis data dibuat ketika objek kelas entity tersebut dibuat. Namun ternyata pembuatan koneksi ke JDBC pada platform Java memakan waktu yang cukup lama, yang terutama akan dirasakan ketika ribuan operasi basis data dilakukan seperti pada eksekusi deteksi ini. Oleh karena itu pada implementasi aplikasi backend, sebuah objek DatabaseConnector dihidupkan di Main pada awal eksekusi aplikasi. Selain itu, koneksi ke basis data dibuat dan statement untuk operasi-operasi select disiapkan. Kemudian objek dari kelas

DatabaseConnector ini akan di-pass melalui parameter ke setiap kelas lainnya, sehingga otomatis setiap kelas yang diimplementasikan mempunyai hubungan dependency terhadap kelas DatabaseConnector. Dengan implementasi seperti yang telah dideskripsikan, waktu yang diperlukan untuk deteksi plagiarisme menjadi jauh lebih singkat karena koneksi ke JDBC hanya dilakukan satu kali saja. Koneksi yang dibuat di awal tersebut akan dipakai untuk berbagai operasi basis data selama proses deteksi berlangsung.

(4)

5.1.4 Implementasi Antarmuka

Antarmuka untuk komponen aplikasi web dan aplikasi backend berbeda. Pada aplikasi web, setiap halaman web diimplementasikan secara fisik sebagai satu buah fileHTML yang terpisah dari kode yang akan dieksekusi bila ada aksi yang dilakukan user. Implementasi tampilan pada aplikasi web sesuai dengan perancangan pada Subbab 4.4. Sedangkan pada aplikasi backend, tidak ada antarmuka. Aplikasi backend memang dirancang untuk tidak digunakan langsung oleh pengguna, melainkan eksekusinya di-trigger oleh aplikasi web seperti eksekusi perintah pada shell, sehingga antarmuka tidak diperlukan.

5.1.5 Implementasi Penyimpanan Data Persisten

Sesuai dengan perancangan representasi persisten kelas entity yang sudah diuraikan pada Subbab 4.3, diimplementasikan tabel-tabel dalam basis data relasional sebagai penyimpanan data persisten untuk Deimos.

Selain tabel-tabel pada perancangan, diimplementasikan dua buah tabel yang bukan merupakan representasi dari kelas entity. Isi kedua tabel tersebut tidak pernah diubah oleh eksekusi aplikasi, melainkan berdasarkan kehendak programmer. Tabel yang pertama adalah tabel language, yang berfungsi untuk menyimpan informasi daftar bahasa pemrograman yang dapat ditangani Deimos. Tabel yang kedua adalah tabel

symbols yang dibutuhkan oleh turunan kelas Scanner. Tabel tersebut berisi simbol-simbol yang merupakan reserved words pada bahasa pemrograman.

Walaupun implementasi tabel-tabel lain sesuai dengan perancangan yang telah didefinisikan, ada perubahan pada tabel tile. Pada perancangan di Subbab 4.3, tabel tersebut mempunyai atribut start_token_id dan end_token_id, yang menandakan token awal dan token akhir yang menjadi bagian dari tile. Kedua atribut tersebut mengacu kepada token_id di tabel token, yang sebenarnya digunakan untuk keperluan tampilan aplikasi web untuk bagian-bagian yang diduga merupakan hasil praktek plagiarisme. Ketika tampilan tersebut dibuat, posisi baris dan kolom yang tersimpan di tabel token diambil. Mengingat bahwa operasi select untuk mengambil posisi token dilakukan cukup sering, maka pada implementasi ini atribut

(5)

token akhir yaitu atribut startrow, startcol, endrow, endcol. Dengan begitu pembuatan tampilan akan menjadi lebih efisien. Selain itu, informasi token yang diperlukan untuk pembuatan tampilan hanyalah informasi posisi pada file source code saja. Jika informasi posisi tersebut sudah bisa didapatkan di tabel tile, maka isi tabel

token dapat dihapus segera setelah eksekusi deteksi plagiarisme selesai. Dengan begitu maka selain efisiensi pada proses pembuatan tampilan, memori yang dipakai untuk penyimpanan data juga lebih kecil.

Detil implementasi tabel penyimpanan data persisten untuk Deimos dapat dilihat pada Tabel V-1.

Tabel V-1. Detil Implementasi Penyimpanan Data Persisten Untuk Deimos

No. Nama Tabel Atribut Keterangan

directory_name (primary key)

detection_date start_time end_time minimum_match_length language 1. detection email_address

Menyimpan informasi mengenai proses deteksi.

program_id (primary key)

subdirectory_name pass_parsing num_files

2. program

directory_name (foreign key)

Menyimpan informasi mengenai program. Program dapat terdiri dari banyak file source code.

token_id (primary key)

content filename startrow startcol endrow endcol 3. token

program_id (foreign key)

Menyimpan informasi mengenai token. Token adalah elemen tunggal dari bahasa pemrograman.

pair_id (primary key)

similarity program1_id program2_id

4. pair

directoryName (foreign key)

Menyimpan informasi mengenai pasangan program yang telah dibandingkan dan mempunyai nilai similaritas.

tile_id (primary key)

startrow startcol endrow endcol filename color

pair_id (foreign key) 5. tile

program_id (foreign key)

Menyimpan informasi mengenai tile. Pada algoritma Running Karp-Rabin Greedy String Tiling, sebuah tile menyimpan posisi dan panjang sebuah substring yang sama pada kedua token string yang dibandingkan.

language_id (primary key) 6. language

language_name

Menyimpan informasi daftar bahasa pemrograman yang dapat ditangani

Deimos.

language_id (primary_key)

symbol_name (primary_key) 7. symbols

token_value

Menyimpan simbol-simbol yang merupakan reserved words pada bahasa pemrograman

(6)

5.1.6 Implementasi Extendability untuk Bahasa Pemrograman Lain

Pada Tugas Akhir ini, Deimos dikembangkan agar dapat menangani deteksi plagiarisme pada source code berbahasa pemrograman LISP dan Pascal. Namun untuk membuktikan kemudahan extendability terhadap bahasa pemrograman lain, diimplementasikan pula scanner dan parser untuk bahasa C. Pada subbab ini, akan diuraikan langkah-langkah untuk penambahan fitur deteksi plagiarisme untuk source code dalam bahasa pemrograman C.

Batasan implementasi untuk pembuktian extendability ini yaitu bahwa scanner dan parser yang dibangun hanya dapat menangani sintaks bahasa C yang bersifat Pascal-like. Walaupun grammar yang dipakai sebagai dasar pembangunan scanner dan parser diambil dari The ANSI C Programming Language [KER98], tidak seluruh grammar yang didefinisikan pada buku tersebut diimplementasikan. Hanya sintaks-sintaks pilihan yang mirip dengan sintaks-sintaks bahasa pemrograman Pascal saja yang dapat ditangani oleh scanner dan parser tersebut. Hal ini dikarenakan tujuan implementasi ini adalah untuk membuktikan extendability Deimos saja.

Langkah-langkah menambahkan fitur deteksi plagiarisme untuk source code dalam bahasa pemrograman C diuraikan sebagai berikut:

1. Penentuan token set untuk bahasa pemrograman C. Token set adalah kumpulan token yang mewakili elemen bahasa pemrograman. Token harus berupa bilangan bulat (integer). Penentuan token set ini didasarkan pada kriteria plagiarisme yang harus ditentukan sebelumnya.

2. Implementasi kelas Scanner_C yang meng-extends kelas Scanner. Method

startScan() di-override. Method tersebut mengembalikan rangkaian simbol yang dihasilkan dari proses scanning.

3. Implementasi kelas Parser_C yang meng-extends kelas Parser. Method startParse() di-override. Proses parsing dilakukan sambil menyimpan token yang dihasilkan ke penyimpanan data persisten.

4. Setelah Scanner_C dan Parser_C selesai diimplementasikan, pada method chooseLanguage() di kelas DirectoryBrowser tambahkan cabang else if baru yang memanggil konstruktor Scanner_C dan Parser_C jika bahasa pemrograman

(7)

source code target deteksi adalah bahasa C. Berikut ini adalah kode yang harus ditambahkan pada method chooseLanguage():

else if (language.equals("c")) {

scanner = new Scanner_C(dbconn); parser = new Parser_C(dbconn);

}

5. Pada tabel language di basis data Deimos, tambahkan record baru dengan atribut

language_name bernilai “c”.

Melalui langkah-langkah yang telah didefinisikan di atas, Deimos sudah mampu mendeteksi plagiarisme pada kumpulan source code berbahasa pemrograman C. Waktu yang diperlukan untuk penambahan fitur penanganan bahasa C tersebut kurang dari seminggu.

5.2 Pengujian

Pada Tugas Akhir ini telah dilakukan pengujian terhadap detektor plagiarisme Deimos. Lingkungan pengujian dideskripsikan pada Subbab 5.2.1, sedangkan detil pengujian diberikan pada Subbab 5.2.2 dan Subbab 5.2.3.3.

5.2.1 Lingkungan Pengujian

Lingkungan pengujian Deimos secara keseluruhan dapat dilihat pada Gambar V-1. Deimos terletak pada layer “Detektor plagiarisme Deimos”. Lingkungan pengujian membentuk jaringan intranet lokal.

(8)

Server pengujian yang digunakan merupakan server tempat terinstalasinya LMS Milestone (lihat Subbab 3.1). Server pengujian tersebut memiliki spesifikasi perangkat keras sebagai berikut:

1. Processor Intel Pentium 4 – 3 GHz; 2. Memori – 512 MB DDR;

3. Harddisk IDE – 120 GB;

Spesifikasi perangkat lunak yang dimiliki server pengujian tersebut yaitu sebagai berikut:

1. Sistem Operasi Ubuntu Linux 7.04

2. Java Platform, Standard Edition Development Kit 1.6.0 3. Web Server Apache 2.2.3

4. Basis Data MySQL 5.0.38.

Aplikasi web Deimos dapat diakses dari komputer lain pada jaringan intranet lokal tersebut melalui alamat http://milestone.if.itb.ac.id/Deimos/.

5.2.2 Persiapan Pengujian

Sebelum dilakukan pengujian, dilakukan pemilihan data sample yang diambil dari kelas IF1282 Dasar Pemrograman yang diselenggarakan pada semester II 2006/2007. Setelah itu dilakukan instalasi aplikasi backend dan aplikasi web ke komputer dengan spesifikasi yang telah diuraikan pada Subbab 5.2.1. Penjelasan detil mengenai data uji dan instalasi diuraikan pada Subbab 5.2.2.1 dan Subbab 5.2.2.2.

5.2.2.1 Data Uji

Pengujian detektor plagiarisme Deimos akan dilakukan dengan menggunakan data uji dari source code hasil pengumpulan kelas IF1282 Dasar Pemrograman yang diselenggarakan pada semester II 2006/2007.

Mata kuliah IF1282 Dasar Pemrograman adalah kuliah pemrograman pertama yang wajib ditempuh oleh semua mahasiswa Sekolah Teknik Elektro dan Informatika ITB tahun pertama. Pada mata kuliah tersebut, dua bahasa pemrograman digunakan untuk pengerjaan tugas praktikum, yaitu LISP dan Pascal. Praktikum menggunakan bahasa pemrograman LISP diselenggarakan pada paruh pertama semester, sementara

(9)

praktikum menggunakan bahasa pemrograman Pascal diselenggarakan pada paruh kedua semester. Berdasarkan analisis yang telah dilakukan, dapat disimpulkan karakteristik source code hasil praktikum mata kuliah IF1282 Dasar Pemrograman yang diselenggarakan pada semester II 2006/2007 yaitu:

1. Banyak terdapat kesalahan dalam penamaan ekstensi file source code berbahasa pemrograman LISP. Hal ini disebabkan sebagian besar mahasiswa belum terbiasa menggunakan komputer. Kesalahan ini berangsur-angsur berkurang pada tiap praktikum.

2. Sebagian besar file source code LISP tidak lulus kompilasi. Karena itu, selama ini asisten harus mengeksekusi ekspresi-s satu per satu untuk kebutuhan penilaian. Sedangkan pada praktikum berbahasa pemrograman Pascal, jumlah source code yang tidak lulus kompilasi sudah berkurang dibandingkan dengan pada praktikum LISP.

Proses penilaian tidak dilakukan oleh satu orang asisten. Terdapat 24 orang asisten yang masing-masing bertanggung jawab untuk menilai beberapa source code. Oleh karena itu, walaupun sebagian dari asisten menyadari adanya bagian source code yang serupa, tidak semua kasus plagiarisme ditemukan karena ada kemungkinan bahwa hasil-hasil praktek plagiarisme diperiksa oleh asisten yang berbeda-beda.

Berdasarkan analisis tentang parameter sensitivitas algoritma Running Karp-Rabin Greedy String Tiling pada Subbab 3.2.3, pemilihan nilai sensitivitas untuk deteksi plagiarisme perlu mendapat perhatian khusus. Panjang source code yang bisa diukur dengan menghitung jumlah statement atau ekspresi perlu dipertimbangkan ketika memilih parameter. Dari perhitungan kasar banyaknya statement atau banyaknya simbol, dapat diketahui jumlah token rata-rata. Untuk source code hasil praktikum mata kuliah IF1282, banyaknya statement pada source code berbahasa Pascal kira-kira antara 20 sampai 50 statement, sedangkan jumlah token untuk source code berbahasa pemrograman LISP dapat mencapai ratusan. Agar tidak banyak kesalahan deteksi tapi tidak hanya source code identik saja yang ditemukan, diberikan beberapa petunjuk dan saran mengenai pemilihan nilai sensitivitas.

Sebaiknya nilai sensivitas tidak terlalu mendekati minimum, karena akan ada banyak kesalahan deteksi terjadi. Secara umum pada kelas pemrograman dasar, pada setiap source code pasti terdapat 1-2 baris yang sama dengan source code lainnya yang

(10)

posisinya menyebar karena setiap source code merupakan solusi terhadap permasalahan yang sama. Jika nilai sensitivitas diisi minimum, bagian-bagian source code yang sama karena ketidaksengajaan tersebut akan diduga merupakan praktek plagiarisme.

Jika nilai sensivitas mendekati nilai maksimal, maka hanya source code yang sangat identik satu sama lain saja yang diduga merupakan hasil praktek plagiarisme. Jika nilai sensitivitas lebih besar dari nilai maksimal, maka hasil deteksi akan sama saja seperti hasil deteksi pada nilai sensivitas maksimal. Maka dari itu, jika pengajar hanya ingin menemukan pasangan source code yang identik, nilai sensitivitas dapat diisi cukup besar.

Untuk source code berbahasa pemrograman Pascal di kelas pemrograman IF1282, nilai antara 3 sampai 10 sudah dapat menghasilkan dugaan plagiarisme yang cukup akurat. Sedangkan untuk source code berbahasa pemrograman LISP, nilai antara 10 sampai 40 disarankan. Nilai sensitivitas untuk LISP cenderung lebih besar karena pendefinisian token set dan banyaknya token yang dihasilkan dapat mencapai ratusan. 5.2.2.2 Instalasi Prototipe

Sebelum pengujian dilakukan, terlebih dahulu dilakukan instalasi Deimos ke server yang telah dideskripsikan pada Subbab 5.2.1. Pada Subbab ini, akan dijelaskan cara instalasi Deimos sebagai bagian dari persiapan pengujian.

Berikut ini diuraikan langkah-langkah instalasi Deimos:

1. Lakukan instalasi tabel-tabel basis data Deimos termasuk record-record statik yang diperlukan pada tabel language dan tabel symbols. Caranya dapat dengan langsung mengeksekusi perintah SQL atau import file berisi perintah SQL.

2. Copy direktori aplikasi backend Deimos ke server yang dituju. Terdapat file dengan nama config.txt pada direktori aplikasi. Pada file tersebut, isilah path, username dan password basis data sesuai dengan konfigurasi basis data tempat tabel-tabel yang diperlukan Deimos berada.

3. Copy direktori aplikasi web Deimos ke server yang dituju. Tempatkan di direktori yang bisa diakses melalui protokol http. Terdapat file dengan nama config.inc.php pada direktori aplikasi web tersebut. Pada file tersebut, isilah path, username dan password basis data sesuai dengan konfigurasi basis data tempat tabel-tabel yang

(11)

diperlukan Deimos berada. Isi juga path tempat menyimpan direktori aplikasi backend pada file konfigurasi tersebut.

5.2.3 Kasus Uji

Pada subbab ini, dibahas mengenai kasus uji untuk pengujian unit, pengujian fungsional berdasarkan use case, dan pengujian non-fungsional. Detil setiap pengujian diberikan pada Subbab 5.2.3.1, Subbab 5.2.3.2, dan Subbab 5.2.3.3.

5.2.3.1 Pengujian unit

Untuk menguji fungsionalitas Deimos, dilakukan pengujian untuk unit yang mempunyai fungsionalitas utama pada aplikasi backend. Untuk keperluan pengujian unit ini, dibuat driver pengujian untuk empat unit yang merupakan core functionality dari Deimos, yaitu unit Scanner-Parser untuk bahasa pemrograman Pascal, unit Scanner-Parser untuk bahasa pemrograman LISP, dan unit Comparator yang menerapkan algoritma RKR-GST. Detil hasil pengujian unit dapat dilihat pada Tabel V-2.

Tabel V-2. Hasil Pengujian Unit Pada Aplikasi Backend Deimos

No Unit Deskripsi Data masukan Hasil uji

Alamat email:

if13066@students.if.itb.ac.id

Diterima

1. MailSender Mengirim email ke alamat

masukan.

Alamat email: ck_jagoan@yahoo.com

Diterima

File source code praktikum IF1282 tanggal 15 Maret 2007

Diterima

2. Parser_LISP Membaca file source code

berbahasa pemrograman LISP dan menghasilkan token string.

File source code praktikum IF1282 tanggal 27 Maret 2007

Diterima

File source code praktikum IF1282 tanggal 30 April 2007

Diterima

3. Scanner_Pascal

dan Parser_Pascal

Membaca file source code berbahasa pemrograman Pascal

dan menghasilkan token string. File source code praktikum IF2081 tanggal 17 November 2005

Diterima

Dua buah file berisi string identik yang ditulis manual.

Diterima

Dua buah file berisi string berbeda yang ditulis manual.

Diterima

Dua buah file berisi string dengan beberapa segmen yang identik yang ditulis manual.

Diterima

Dua buah file berisi token string identik yang dihasilkan oleh ParserLISP.

Diterima

Dua buah file berisi token string berbeda yang dihasilkan oleh ParserLISP.

Diterima

4. Comparator_RKRGST Membandingkan dua buah string

untuk menemukan bagian-bagian yang sama dan menghitung nilai similaritas pasangan string tersebut.

(12)

No Unit Deskripsi Data masukan Hasil uji string dengan beberapa

segmen yang identik yang dihasilkan oleh ParserLISP. Dua buah file berisi token string identik yang dihasilkan oleh ParserPascal.

Diterima

Dua buah file berisi token string berbeda yang

dihasilkan oleh ParserPascal.

Diterima

Dua buah file berisi token string dengan beberapa segmen yang identik yang dihasilkan oleh ParserPascal.

Diterima

5.2.3.2 Pengujian Fungsional Berdasarkan Use Case

Pengujian fungsional untuk setiap use case yang didefinisikan pada subbab 3.2.5 dibahas pada subbab ini. Pengujian untuk use case mendeteksi plagiarisme otomatis, use case melihat hasil deteksi, dan use case menghapus hasil deteksi diberikan berturut-turut pada Subbab 5.2.3.2.1, Subbab 5.2.3.2.2, dan Subbab 5.2.3.2.3.

5.2.3.2.1 Butir Uji Mendeteksi Plagiarisme Otomatis

Pada Subbab ini dibahas mengenai pengujian use case mendeteksi plagiarisme otomatis. Seperti yang telah dibahas pada Subbab 5.2.2.1, data uji diambil dari hasil praktikum mata kuliah IF1282 Dasar Pemrograman semester II 2006/2007.

Pertama-tama pengujian dilakukan untuk pasangan source code dengan karakteristik yang berbeda-beda, yaitu pasangan source code identik, pasangan source code berbeda, dan pasangan dengan sebagian source code identik. Terdapat juga pasangan yang diduga merupakan hasil plagiarisme berdasarkan deteksi manual, namun terdapat perbedaan pada aspek-aspek tertentu dari source code seperti indentasi, komentar, nama identifier, dan sebagainya. Setelah itu, pengujian dilakukan untuk kumpulan source code yang dibuat berdasarkan soal pemrograman yang sama untuk setiap mahasiswa.

Waktu yang dibutuhkan untuk mendeteksi plagiarisme pada source code LISP lebih lama dari source code Pascal karena jumlah token yang dihasilkan dari source code LISP biasanya lebih panjang. Waktu untuk melakukan pembandingan menggunakan RKR-GST meningkat secara eksponensial berdasarkan jumlah token pada token string yang dihasilkan parser.

(13)

Identifikasi U-M-01

No. SRS/Usecase UC-M-01

Nama Butir Uji Mendeteksi plagiarisme otomatis

Tujuan Mendeteksi plagiarisme otomatis pada kumpulan source code

Deskripsi Pengguna menginisiasi deteksi plagiarisme otomatis pada kumpulan source code melalui aplikasi web, kemudian deteksi dieksekusi pada aplikasi backend.

Kondisi Awal Kumpulan source code sudah terdapat pada direktori.

Tanggal Pengujian 3 Juni 2007

Penguji Cynthia Kustanto

Skenario Uji

1. Memilih nama direktori dan bahasa pemrograman source code target deteksi, memasukkan nilai sensitivitas lalu menekan tombol “Eksekusi deteksi”.

Kriteria Evaluasi Hasil

Pesan “deteksi selesai” ditampilkan di web browser.

Kasus dan Hasil Uji (Data normal, bahasa pemrograman Pascal)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Pasangan source code identik, sensitivitas minimum

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

identik, sensitivitas mendekati maksimum.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

berbeda, sensitivitas minimum.

Nilai similaritas 0-40% Nilai similaritas 0% [ X ] diterima [ ] ditolak Pasangan source code

berbeda, sensitivitas mendekati maksimum.

Nilai similaritas 0% Sesuai yang diharapkan. [ X ] diterima [ ] ditolak Pasangan source code

yang bagian awal dan akhirnya identik, tapi bagian tengah berbeda.

Bagian awal dan akhir dianggap sebagai dugaan plagiarisme.

Bagian awal dan akhir dianggap sebagai dugaan plagiarisme. Nilai similaritas 80%.

[ X ] diterima [ ] ditolak Pasangan source code

yang identik, tapi komentar dan indentasi diubah.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

yang identik, tapi nama identifier diubah semua.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

yang identik, tapi cara menulis variabel berbeda.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

yang identik, tapi ada perubahan urutan statement. Sensitivitas minimum.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak

Pasangan source code identik, tapi ada perubahan urutan statement. Sensitivitas 5 (sensitivitas dalam range yang disarankan).

Nilai similaritas tidak 100%, karena bagian yang urutan statement-nya berubah dianggap berbeda.

Sesuai yang diharapkan. [ X ] diterima [ ] ditolak

Kumpulan source code

Pascal dari IF1282, jumlah source code 20.

Waktu deteksi kurang dari 30 detik.

Waktu deteksi sekitar belasan detik.

[ X ] diterima [ ] ditolak

(14)

Kasus dan Hasil Uji (Data normal, bahasa pemrograman Pascal)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Kumpulan source code

Pascal dari IF1282, jumlah source code 50.

Waktu deteksi kurang dari 5 menit.

Waktu deteksi sekitar 30 detik.

[ X ] diterima [ ] ditolak Kumpulan source code

Pascal dari IF1282, jumlah source code 100.

Waktu deteksi kurang dari 10 menit.

Waktu deteksi sekitar 2 menit.

[ X ] diterima [ ] ditolak

Kasus dan Hasil Uji (Data normal, bahasa pemrograman LISP)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Pasangan source code identik, sensitivitas minimum.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

identik, sensitivitas mendekati maksimum.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

berbeda, sensitivitas minimum.

Nilai similaritas 0-40% Sesuai yang diharapkan. [ X ] diterima [ ] ditolak Pasangan source code

berbeda, sensitivitas mendekati maksimum.

Nilai similaritas 0% Sesuai yang diharapkan. [ X ] diterima [ ] ditolak Pasangan source code

yang bagian awal dan akhirnya identik, tapi bagian tengah berbeda.

Bagian awal dan akhir dianggap sebagai dugaan plagiarisme.

Bagian awal dan akhir dianggap sebagai dugaan plagiarisme. Nilai similaritas 80%.

[ X ] diterima [ ] ditolak Pasangan source code

yang identik, tapi komentar dan indentasi diubah.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

yang identik, tapi nama identifier diubah.

Nilai similaritas 100% Nilai similaritas 100% [ X ] diterima [ ] ditolak Pasangan source code

yang identik, tapi ada perubahan urutan deklarasi fungsi. Sensitivitas 11.

Nilai similaritas mendekati 100%.

Sesuai yang diharapkan. [ X ] diterima [ ] ditolak

Kumpulan source code

LISP dari IF1282, jumlah source code 20.

Waktu deteksi kurang dari 2 menit.

Waktu deteksi sekitar 1 menit.

[ X ] diterima [ ] ditolak Kumpulan source code

LISP dari IF1282, jumlah source code 50.

Waktu deteksi kurang dari 30 menit.

Waktu deteksi sekitar 12 menit.

[ X ] diterima [ ] ditolak Kumpulan source code

LISP dari IF1282, jumlah source code 100.

Waktu deteksi kurang dari 2 jam.

Waktu deteksi sekitar 1 jam.

[ X ] diterima [ ] ditolak

Kasus dan Hasil Uji (Data salah: isi direktori masukan bukan source code yang valid)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Nama direktori : 2007.03.27_soal1(lisp) Bahasa pemrograman : Pascal

Semua source code tidak lulus parsing, pembandingan tidak dilakukan.

Semua source code tidak lulus parsing, pembandingan tidak dilakukan.

[ X ] diterima [ ] ditolak

(15)

5.2.3.2.2 Butir Uji Melihat Hasil Deteksi

Pada Subbab ini dibahas mengenai pengujian use case melihat hasil deteksi. Data uji diambil dari hasil pengujian use case mendeteksi plagiarisme otomatis yang telah diuraikan pada Subbab 5.2.3.2.1. Kasus normal pengujian yaitu jika deteksi telah selesai dilakukan dan source code terdapat di direktori yang dispesifikasikan. Pengujian skenario tidak normal juga dilakukan untuk menguji apakah peringatan ditampilkan dengan baik jika kasus tidak normal terjadi.

Identifikasi U-M-02

No. SRS/Usecase UC-M-02

Nama Butir Uji Melihat hasil deteksi

Tujuan Melihat hasil deteksi plagiarisme otomatis pada source code

Deskripsi Pengguna melihat hasil deteksi plagiarisme otomatis yang ditampilkan pada halaman format HTML.

Kondisi Awal Hasil deteksi tersimpan di basis data

Tanggal Pengujian 24 Mei 2007

Penguji Cynthia Kustanto

Skenario Uji

1. Menekan tombol “Lihat hasil deteksi”.

2. Memilih pasangan source code yang ingin dilihat hasil deteksinya.

Kriteria Evaluasi Hasil

Hasil deteksi ditampilkan di halaman HTML sesuai antarmuka pada Gambar IV-7 dan Gambar IV-8.

Kasus dan Hasil Uji (Data normal)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Nama direktori: 2007.03.15(lisp) Hasil deteksi ditampilkan di web browser. Hasil deteksi ditampilkan di web browser. [ X ] diterima [ ] ditolak Nama direktori: 2007.04.30(pascal) Hasil deteksi ditampilkan di web browser. Hasil deteksi ditampilkan di web browser. [ X ] diterima [ ] ditolak

Kasus dan Hasil Uji (Data salah: tidak ada hasil deteksi atau tidak ada source code)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Nama direktori: 2007.03.27_soal1(lisp) ketika deteksi belum selesai

Pesan “deteksi belum selesai” ditampilkan di halaman utama hasil deteksi.

Pesan “deteksi belum selesai” ditampilkan di halaman utama hasil deteksi.

[ X ] diterima [ ] ditolak Nama direktori:

2007.04.24_soal1(pasc al). Direktori dihapus terlebih dahulu dari memori.

Pesan “tidak terdapat source code pada direktori” ditampilkan di halaman pasangan source code.

Pesan “tidak terdapat source code pada direktori” ditampilkan di halaman pasangan source code. [ X ] diterima [ ] ditolak Catatan

(16)

5.2.3.2.3 Butir Uji Menghapus Hasil Deteksi

Identifikasi U-M-03

No. SRS/Usecase UC-M-03

Nama Butir Uji Menghapus hasil deteksi

Tujuan Menghapus hasil deteksi plagiarisme otomatis pada source code

Deskripsi Pengguna menghapus hasil deteksi plagiarisme otomatis pada source code yang terdapat dalam direktori yang dipilih.

Kondisi Awal Hasil deteksi tersimpan di basis data.

Tanggal Pengujian 24 Mei 2007

Penguji Cynthia Kustanto

Skenario Uji

1. Memilih nama direktori yang hasil deteksinya ingin dihapus kemudian menekan tombol “Hapus hasil deteksi”.

Kriteria Evaluasi Hasil

Seluruh hasil deteksi yang berkaitan dengan source code pada direktori yang dipilih dihapus dari basis data.

Kasus dan Hasil Uji (Data normal)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Nama direktori: 2007.03.27_soal1(lisp)

Hasil deteksi dihapus dari basis data.

Hasil deteksi dihapus dari basis data.

[ X ] diterima [ ] ditolak Nama direktori:

2007.04.30(pascal)

Hasil deteksi dihapus dari basis data.

Hasil deteksi dihapus dari basis data.

[ X ] diterima [ ] ditolak

Kasus dan Hasil Uji (Data salah: hasil deteksi pada basis data tidak lengkap)

Data Masukan Yang diharapkan Pengamatan Kesimpulan

Nama direktori: 2007.04.24_soal1(pasc al).

Tidak ada hasil deteksi apapun pada basis data, tidak ada pesan error.

Tidak ada hasil deteksi apapun pada basis data, tidak ada pesan error.

[ X ] diterima [ ] ditolak

Catatan

5.2.3.3 Pengujian non-fungsional

Berdasarkan penjelasan pada Subbab 3.2.3, ada tiga buah spesifikasi non-fungsional Deimos. Detil hasil pengujian tiap spesifikasi dapat dilihat pada Tabel V-3.

Tabel V-3. Hasil Pengujian Spesifikasi Non-fungsional

Spesifikasi non-fungsional Hasil uji

Pengajar dapat trigger deteksi dan mengakses data hasil deteksi dari berbagai komputer.

Deimos dapat diakses dari berbagai komputer melalui web browser. Proses deteksi yang efisien. Detektor harus dapat

menangani jumlah source code yang mencapai ratusan dalam waktu yang dapat ditoleransi.

Dengan menggunakan lingkungan pengujian pada Subbab 5.2.1, Deimos

mampu menangani 100 buah source code di bawah 1 jam.

Detektor dapat dikembangkan lebih lanjut agar dapat menangani bahasa pemrograman lain tanpa

mengembangkan ulang seluruh detektor.

Untuk menangani bahasa pemrograman lain, hanya perlu menambahkan scanner dan/atau parser baru ke subsistem Tokenizer (lihat Subbab 0 untuk detil implementasi).

Pengajar dapat menentukan sensitivitas deteksi sehingga dapat disesuaikan dengan tingkat kerumitan topik pemrograman.

Terdapat parameter minimum-match-length pada algoritma RKR-GST yang merupakan representasi sensitivitas.

(17)

5.2.4 Evaluasi Pengujian

Berdasarkan pengujian, Deimos dapat memenuhi setiap spesifikasi fungsional dan non-fungsional yang didefinisikan pada Subbab 3.2.3. Berdasarkan penjelasan di Subbab 1.1, statistik hasil deteksi digunakan untuk membantu pengajar ketika melakukan drill-down, sehingga pengajar dapat menentukan kasus-kasus plagiarisme berdasarkan statistik yang dihasilkan Deimos. Tingkat kepercayaan terhadap dugaan kasus plagiarisme yang dihasilkan Deimos tersebut bervariasi tergantung pada similaritas pasangan source code dan parameter sensitivitas yang dipilih.

Secara umum, untuk pasangan source code yang mempunyai similaritas 100%, dapat diyakini bahwa pasangan tersebut merupakan hasil plagiarisme. Begitu pula untuk pasangan source code yang mempunyai similaritas mendekati 0%, bisa disimpulkan bahwa pasangan tersebut tidak mempunyai kesamaan. Namun untuk pasangan dengan similaritas 0%, perlu dilihat lagi mengenai kesesuaian isi source code dengan kriteria spesifikasi soal pemrograman yang diberikan, karena terkadang mahasiswa mengumpulkan source code yang salah.

Untuk deteksi dengan sensitivitas tinggi, kesalahan deteksi dapat terjadi jika kesamaan bagian source code yang tidak disengaja dianggap sebagai dugaan plagiarisme. Sedangkan untuk deteksi dengan sensitivitas rendah, kesalahan deteksi dapat terjadi karena diabaikannya kesamaan pada segmen-segmen program yang pendek. Oleh karena itu, untuk pasangan source code yang similaritasnya tidak mendekati 100% dan tidak mendekati 0%, sebaiknya pengajar membuka halaman perbandingan pasangan source code sehingga bagian-bagian yang diduga merupakan hasil plagiarisme dapat dilihat dengan jelas. Dengan melihat tampilan pasangan source code tersebut, pengajar dapat memutuskan apakah kesamaan pada bagian-bagian source code yang ditandai merupakan kesamaan yang disengaja atau bukan. Berdasarkan analisis hasil pengujian di atas, sebaiknya nilai similaritas tidak menjadi keputusan final untuk menentukan kasus-kasus plagiarisme yang dilakukan mahasiswa karena ada kemungkinan hasil deteksi salah terutama untuk kasus plagiarisme segmen. Oleh karena itu, untuk dugaan-dugaan plagiarisme yang meragukan hendaknya pengajar mencermati isi source code pasangan tersebut sebelum membuat keputusan.

Gambar

Tabel V-1. Detil Implementasi Penyimpanan Data Persisten Untuk  Deimos
Gambar V-1. Lingkungan Pengujian  Deimos
Tabel V-2. Hasil Pengujian Unit Pada Aplikasi Backend  Deimos
Tabel V-3. Hasil Pengujian Spesifikasi Non-fungsional  Spesifikasi non-fungsional  Hasil uji  Pengajar dapat trigger deteksi dan mengakses data hasil

Referensi

Dokumen terkait

Oleh karena itu penulis melihat, apakah manajemen konflik yang dikatakan baik tersebut hanya sebatas pada perwujudan perdamaian saja, bagaimana terkait manajemen

Indikator Kinerja konsumsi ikan pada tahun 2019 sebesar 31,11 kg/kapita/thn atau mencapai 165,30% dari target RPJMD tahun 2019, capaian tersebut sudah mencapai

Para pekerja yang karena berakhirnya kontrak kerja diberhentikan atau kontrak kerjanya tidak dipatuhi oleh pengusaha, kecuali sebagai akibat ketidakcocokkannya untuk bekerja

HAFISZ TOHIR DAERAH PEMILIHAN SUMATERA SELATAN I.. Oleh karena itu Anggota DPR RI berkewajiban untuk selalu mengunjungi ke daerah pemilihan telah ditetapkan sesuai dengan

Pengembangan sumber daya manusia adalah dengan cara mengenali kemampuan karyawannya, menempatkan karyawan sesuai dengan kompetensinya – yang dapat dilakukan dengan

Dalam pelak- sanaan Pengawasan Orang Asing, pihak imigrasi melakukan kerjasama dengan instansi terkait yang dikenal dengan Tim Koordinasi Pengawasan Orang Asing

Perubahan Daya Menu perubahan daya berfungsi untuk proses mengubah daya listrik dengan beberapa tahapan seperti mengisi form permohonan perubahan daya, melakukan survey perubahan

Beberapa penelitian yang berkaitan dengan kenaikan berat badan bayi atau status gizi pada bayi telah dilakukan, diantaranya Zein (2012) dan Sari (2010) tentang