INTEGRASI MODUL PENGELOMPOKAN KODE PROGRAM C BERDASARKAN STRUKTUR PADA TOKI LEARNING CENTER
MUHAMMAD FACHRUL ARLI
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2014
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA Dengan ini saya menyatakan bahwa skripsi berjudul Integrasi Modul Pengelompokan Kode Program C Berdasarkan Struktur pada TOKI Learning Center adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini. Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor. Bogor, September 2014 Muhammad Fachrul Arli NIM G64100114
ABSTRAK MUHAMMAD FACHRUL ARLI. Integrasi Modul Pengelompokan Kode Program C Berdasarkan Struktur pada TOKI Learning Center. Dibimbing oleh AHMAD RIDHA. Pendeteksian plagiarisme kode program secara manual memerlukan banyak waktu dan tenaga. Oleh sebab itu, sebuah sistem yang dapat membantu pendeteksian plagiat tugas pemrograman dibutuhkan. Tujuan penelitian ini adalah membangun aplikasi web yang mengimplementasikan modul pengelompokan kode program C berdasarkan struktur. Metode yang digunakan dalam membangun sistem pada penelitian ini adalah System Life Cycle. Hasil penelitian ini berupa aplikasi web yang membantu pendeteksian plagiat tugas pemrograman pada TOKI Learning Center. Aplikasi web memiliki 3 pilihan proses pengelompokan, yaitu menggunakan metode pengelompokan, menggunakan hasil test case, dan menggunakan gabungan hasil test case dengan metode pengelompokan. Metode pengelompokan yang digunakan ada 5, yaitu K-means, bisecting K-means, single linkage, average linkage, dan complete linkage. Untuk membantu pengajar menentukan plagiat, ada beberapa kondisi yang menjadi bahan pertimbangan yang ditampilkan oleh aplikasi web, yaitu hasil pengelompokan, waktu pengumpulan, jumlah yang dikumpulkan, dan kode program. Kata kunci: aplikasi web, kesamaan struktur, pemrograman C, pendeteksi plagiat, system life cycle
ABSTRACT MUHAMMAD FACHRUL ARLI. Integration of Structured-based C Code Clustering Module in TOKI Learning Center. Supervised by AHMAD RIDHA. Manual detection of source code plagiarism requires a lot of time and effort. Therefore, a system that could help to detect plagiarism of programming assignment is required. The purpose of this research is to build a web application that implements clustering module of C program code based on the structure. The method used to build the system in this research is System Life Cycle. The result of this research is a web application that helps to detect plagiarism of programming assignment in TOKI Learning Center. The application has 3 clustering options, i.e., using clustering method, using the result of test case, and using the combined result of the test case with the clustering method. There are 5 methods of clustering used in the web application, i.e., K-means, bisecting Kmeans, single linkage, average linkage, and complete linkage. To help instructor determine a plagiarism, there are several conditions for consideration provided by the web application, i.e., clustering result, submission time, number of submissions, and the source codes. Keywords: C programming, plagiarism detection, structure similarity, system life cycle, web application
INTEGRASI MODUL PENGELOMPOKAN KODE PROGRAM C BERDASARKAN STRUKTUR PADA TOKI LEARNING CENTER
MUHAMMAD FACHRUL ARLI
Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2014
Penguji : 1 Firman Ardiansyah, SKom MSi 2 Auzi Asfarian, SKomp MKomp
Judul Skripsi : Integrasi Modul Pengelompokan Kode Program C Berdasarkan Struktur pada TOKI Learning Center Nama : Muhammad Fachrul Arli NIM : G64100114
Disetujui oleh
Ahmad Ridha, SKom MS Pembimbing
Diketahui oleh
Dr Ir Agus Buono, MSi MKom Ketua Departemen
Tanggal Lulus:
PRAKATA Puji dan syukur penulis panjatkan ke hadirat Allah subhanahu wa-ta’ala atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas akhir ini. Shalawat serta salam juga penulis sampaikan pada junjungan Nabi besar Muhammad shallallahu ‘alaihi wa sallam beserta keluarga dan sahabatnya. Banyak pihak yang telah membantu penulis hingga terselesaikannya tugas akhir ini. Oleh sebab itu, penulis ingin mengucapkan rasa terima kasih kepada: 1 Ayahanda Armen Sirin dan Ibunda Deswelly yang senantiasa mendoakan, memotivasi, dan memberikan nasihat kepada penulis. 2 Bapak Ahmad Ridha, SKom MS selaku dosen pembimbing yang telah membimbing dan mengarahkan penulis selama penelitian tugas akhir ini. 3 Seluruh teman-teman Ilmu Komputer 47 atas dukungan dan kebersamaannya. Akhir kata, penulis berharap semoga tulisan ini dapat bermanfaat bagi para pembaca.
Bogor, September 2014 Muhammad Fachrul Arli
DAFTAR ISI DAFTAR TABEL
v
DAFTAR GAMBAR
v
DAFTAR LAMPIRAN
v
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
1
Tujuan Penelitian
2
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
METODE
2
Data Penelitian
2
Tahapan Penelitian
2
Perencanaan
3
Analisis
3
Perancangan
3
Implementasi
3
Penggunaan
3
HASIL DAN PEMBAHASAN
3
Perencanaan
3
Analisis
4
Perancangan
5
Implementasi
8
Model
8
View
10
Controller
11
Penggunaan
12
SIMPULAN
13
DAFTAR PUSTAKA
13
RIWAYAT HIDUP
28
DAFTAR TABEL 1 Daftar file bagian model 2 Daftar file bagian view 3 Daftar fungsi file cmain pada bagian controller
10 11 12
DAFTAR GAMBAR 1 2 3 4 5 6
Pola pengembangan System Life Cycle Use case diagram sistem pengelompokan tugas pemrograman Pemetaan database sistem pengelompokan tugas pemrograman Layout umum sistem pengelompokan tugas pemrograman Mockup sistem pengelompokan tugas pemrograman Tampilan halaman utama sistem pengelompokan tugas pemrograman
2 4 6 6 7 10
DAFTAR LAMPIRAN 1 Pemetaan database TOKI Learning Center 2 Acitivity diagram 3 Tampilan halaman sistem pengelompokan tugas pemrograman 4 Dokumen uji sistem pengelompokan tugas pemrograman
15 16 19 24
PENDAHULUAN Latar Belakang Plagiat tugas pemrograman merupakan tindakan yang menjadi masalah dalam bidang akademik. Pendeteksian kasus plagiat tugas pemrograman dapat dilakukan dengan memeriksa kode program secara manual. Akan tetapi, pemeriksaan secara manual untuk sebuah institusi akedemik memerlukan banyak waktu dan tenaga. Oleh sebab itu, sistem yang secara otomatis mengelompokkan tugas pemrograman berdasarkan kemiripan strukturnya diperlukan untuk mengatasi masalah ini. Penelitian yang berkaitan dengan pengelompokan kode program berdasarkan kemiripan strukturnya telah dilakukan oleh Gumilang (2013), Notyasa (2013), dan Triatmojo (2014). Mereka menggunakan kesamaan struktur kode program yang dikembangkan Burrows (2004). Penelitian Gumilang (2013) berhasil membangun modul pengelompokan kode program C dengan menggunakan algoritme K-means, Notyasa (2013) menggunakan algoritme bisecting K-means, dan Triatmojo (2014) menggunakan hierarchical agglomerative clustering yaitu single linkage, average linkage, dan complete linkage. Penelitian oleh Gumilang (2013), Notyasa (2013), dan Triatmojo (2014) tersebut menggunakan korpus kode program yang berasal dari lab Temu Kembali Informasi, Departemen Ilmu Komputer, Institut Pertanian Bogor. Kode program yang dipilih berasal dari tugas pemrograman yang memiliki banyak variasi penyelesaian. Berdasarkan hasil ketiga penelitian tersebut, terlihat adanya indikasi tindakan plagiat tugas pemrograman. Hal ini disimpulkan dari hasil pengelompokan yang didapat. Hasil penelitian tersebut mendapatkan jumlah kelompok yang terlalu sedikit dibanding jumlah data kode program yang digunakan. Departemen Ilmu Komputer, Institut Pertanian Bogor, menyelenggarakan tugas pemrograman secara online yang diberikan dan dikumpulkan pada aplikasi web TOKI Learning Center. Akan tetapi, aplikasi web TOKI Learning Center belum memiliki sistem yang dapat mengelompokkan tugas pemrograman berdasarkan kemiripan strukturnya. Oleh sebab itu, penelitian ini bertujuan membangun sebuah aplikasi web yang mengintegrasikan modul pengelompokan dari penelitian sebelumnya oleh Gumilang (2013), Notyasa (2013), dan Triatmojo (2014) pada TOKI Learning Center. Perumusan Masalah 1 2
Perumusan masalah dalam penelitian ini adalah: Bagaimana membangun sistem yang membantu pendeteksian kasus plagiat tugas pemrograman? Bagaimana mengintegrasikan modul pengelompokan kode program C, yang dibangun pada penelitian sebelumnya oleh Gumilang (2013), Notyasa (2013), dan Triatmojo (2014), dengan database TOKI Learning Center?
2 Tujuan Penelitian Tujuan penelitian ini adalah membangun sistem yang mengimplementasikan modul pengelompokan kode program C berdasarkan struktur, sebagai sistem yang membantu pendeteksian kasus plagiat tugas pemrograman pada TOKI Learning Center. Manfaat Penelitian Manfaat yang diharapkan dari hasil penelitian ini adalah mempercepat dan mempermudah pemeriksaan kasus plagiat tugas pemrograman pada TOKI Learning Center. Ruang Lingkup Penelitian Lingkup dari penelitian ini adalah sistem menyediakan tampilan dari hasil pengelompokan, bukan menentukan pelaku plagiat. Selanjutnya, modul pengelompokan yang digunakan sebanyak 5, yaitu K-means, bisecting Kmeans, single linkage, average linkage, dan complete linkage. Korpus berasal dari database TOKI Learning Center.
METODE Data Penelitian Data yang digunakan pada penelitian ini berasal dari database TOKI Learning Center. Struktur database TOKI Learning Center dianalisis untuk keperluan penelitian. Hasil dari analisis tersebut berguna untuk menentukan bagian data yang diperlukan oleh sistem yang dibangun pada penelitian ini.
Tahapan Penelitian Perencanaan
Penggunaan
Implementasi
Analisis
Perancangan
Gambar 1 Pola pengembangan System Life Cycle
3 Tahapan pada penelitian ini mengikuti tahapan pada model System Life Cycle (SLC) yang dikemukakan oleh McLeod dan Schell (2007). SLC memiliki beberapa tahapan seperti yang terlihat pada Gambar 1. Tahapan dimulai dari perencanaan, analisis, perancangan, implementasi, dan penggunaan. Perencanaan Tahap perencanaan yang dilakukan pada penelitian ini meliputi pendefinisian masalah, pendefinisian umum sistem yang dibangun, dan pengidentifikasian batasan penelitian. Tahap perencanaan ini berguna untuk menjelaskan sistem yang dibangun dan mempersiapkan kebutuhan yang diperlukan pada proses pembangunan sistem. Analisis Aktivitas yang dilakukan pada tahapan ini adalah pemahaman terhadap masalah yang ada, pendefinisian kebutuhan dari sistem yang dibangun, serta pendefinisian terhadap perilaku pelaku plagiat tugas pemrograman. Hasil analisis yang diperoleh dapat digunakan untuk menentukan solusi yang digunakan pada tahap perancangan. Perancangan Rancangan terhadap fungsi-fungsi yang terdapat dalam sistem dilakukan pada tahap ini. Pendefinisian kebutuhan sistem yang telah dilakukan pada tahap analisis, dirancang menjadi sebuah solusi yang siap untuk diimplementasikan ke dalam sistem. Perancangan yang dibuat pada penelitian ini meliputi perancangan diagram, database, antarmuka, dan arsitektur aplikasi. Implementasi Pada tahap ini, hasil perancangan diimplementasikan menjadi sebuah sistem yang siap digunakan. Selanjutnya, dilakukan pengujian terhadap sistem yang telah diinstalasi. Pengujian ini bertujuan memeriksa bahwa sistem telah memenuhi kebutuhan yang diperlukan oleh sistem. Penggunaan Pada tahap ini, pengguna telah dapat menggunakan sistem yang telah selesai dibangun. Penggunaan sistem dapat menghasilkan feedback untuk proses pengembangan sistem selanjutnya. Di samping itu, penjelasan penggunaan sistem dijelaskan pada tahap ini.
HASIL DAN PEMBAHASAN Perencanaan Pada tahap perencanaan dilakukan komunikasi dengan pengguna terkait sistem yang dibangun pada penelitian ini. Pengguna dari sistem ini adalah dosen Mata Kuliah Algoritme dan Pemrograman dari Departemen Ilmu
4 Komputer, Institut Pertanian Bogor. Komunikasi pada tahap perencanaan berhubungan dengan masalah yang dihadapi dan deskripsi umum sistem yang dibangun. Di samping itu, perencanaan juga memperhatikan batasan-batasan penelitian dan bahasa pemrograman yang digunakan. Sistem yang dibangun berupa web yang mengintegrasikan modul pengelompokan kode program C dengan database TOKI Learning Center. Modul pengelompokan kode program C berdasarkan kemiripan struktur telah dibagun pada penelitian sebelumnya oleh Gumilang (2013), Notyasa (2013), dan Triatmojo (2014). Modul pengelompokan tersebut belum terintegrasi dengan database TOKI Learning Center. Oleh sebab itu, modul tersebut menjadi metode pengelompokan yang digunakan pada sistem ini. Sistem yang dibangun mengelompokkan kode program C yang mirip berdasarkan struktur tapi tidak otomatis menentukan pelaku plagiat. Penentuan pelaku plagiat tetap dilakukan oleh pengguna sistem. Hal tersebut dikarenakan adanya kebijakan dari masing-masing pengguna sistem dalam menentukan pelaku plagiat. Sistem berbasis web yang dibangun diimplementasikan ke dalam bahasa pemrograman PHP dengan menggunakan framework CodeIgniter. Konsep Model, View, dan Controller (MVC) yang terdapat dalam framework CodeIgniter diterapkan pada pembangunan sistem. Sistem ini dimasukkan ke dalam server yang sama dengan aplikasi web TOKI Learning Center. Analisis Analisis yang dilakukan pada penelitian ini meliputi analisis terhadap masalah yang ada, kebutuhan pengguna, dan pendefinisian terhadap perilaku pelaku plagiat tugas pemrograman. Proses komunikasi dengan pengguna tetap berlangsung pada tahap ini. Melalui komunikasi didapatkan definisi kebutuhan pengguna terhadap sistem.
Menjalankan proses pengelompokan Membandingkan kode program
user
Menandai pelaku plagiat Mengekspor data hasil pengelompokan ke format XLS
Gambar 2 Use case diagram sistem pengelompokan tugas pemrograman Terdapat 4 kebutuhan pengguna terhadap sistem yang digambarkan melalui use case diagram seperti yang ditunjukkan pada Gambar 2. Use case
5 pertama berkaitan dengan pengelompokan kode program C yang mirip berdasarkan strukturnya. Pengguna dapat memberikan masukan untuk menjalankan proses pengelompokan. Proses pengelompokan merupakan kebutuhan utama yang harus dimiliki. Use case kedua adalah membandingkan kode program. Kebutuhan ini dilakukan untuk mempermudah membandingkan 2 buah kode program untuk diperiksa kemiripannya. Use case ketiga adalah menandai pelaku plagiat. Menandai pelaku plagiat merupakan kebutuhan yang dapat membantu pemeriksa dalam menandai dengan mudah pelaku plagiat setelah melakukan pemeriksaan. Use case keempat adalah mengekspor data hasil pengelompokan ke format XLS. Kebutuhan ini bertujuan memudahkan pengguna dalam mengolah data yang terdapat pada sistem pengelompokan tugas pemrograman. Penelitian pada tahap ini juga memperhatikan perilaku dari pelaku plagiat tugas pemrograman pada Mata Kuliah Algoritme dan Pemrograman. Analisis tindakan plagiat dilakukan dengan melihat kebiasaan dari pelaku plagiat dalam mengumpulkan tugas pemrograman. Informasi perilaku plagiat didapatkan dari komunikasi dengan dosen Mata Kuliah. Pelaku plagiat memiliki waktu pengumpulan yang lebih lama dibandingkan dengan sumber yang pertama kali menemukan jawaban dari tugas pemrograman. Di samping itu, sebagian besar pelaku plagiat hanya melakukan sedikit percobaan untuk menemukan jawaban yang benar. Karena itu, selain berdasarkan kemiripan struktur dari kode program yang dikumpulkan, dapat pula dilihat dari waktu pengumpulan dan jumlah yang dikumpulkan untuk melihat pelaku plagait. Sistem pada penelitian ini terintegrasi dengan database TOKI Learning Center. Oleh sebab itu, diperlukan sebuah analisis terhadap struktur dari database TOKI Learning Center untuk mengetahui data yang diperlukan pada penelitian ini. Pemetaan database TOKI Learning Center dapat dilihat pada Lampiran 1. Pemetaan database TOKI Learning Center terdiri atas tabel-tabel yang diperlukan sistem. Data yang berasal dari database TOKI Learning Center terdiri atas data kontes yang tersedia, tugas berdasarkan kontes, data pengguna sistem TOKI Learning Center, dan data pengumpulan tugas pemrograman. Perancangan Pada penelitian ini ada beberapa rancangan yang dibuat untuk membangun sistem. Perancangan terdiri atas rancangan diagram, database, antarmuka, dan arsitektur perangkat lunak. Perancangan ini bertujuan mempermudah tahap implementasi. Rancangan diagram menggunakan activity diagram yang berasal dari setiap use case. Activity diagram dari masing-masing use case dapat dilihat pada Lampiran 2. Activity diagram yang pertama menggambarkan aktivitas dari use case menjalankan proses pengelompokan. Proses pengelompokan dimulai dengan memilih kontes, tugas, dan proses pengelompokan yang diinginkan. Proses pengelompokan terdiri atas 3 pilihan, yaitu pengelompokan menggunakan metode pengelompokan, menggunakan test case, atau menggunakan test case dan metode pengelompokan. Activity diagram yang kedua menggambarkan aktivitas untuk membandingkan kode program.
6 Pengguna memilih 2 peserta pada cluster untuk membandingkan kode program dari kedua peserta tersebut. Activity diagram ketiga menggambarkan aktivitas menandai pelaku plagiat. Proses ini dimulai ketika pengguna menandai peserta yang dianggap plagiat. Username dari peserta yang ditandai dan nama pemeriksa disimpan ke dalam database sistem. Selanjutnya, sistem menampilkan nama pemeriksa dan tanda plagiat pada data peserta. Activity diagram yang terakhir menggambarkan aktivitas untuk mengekspor data hasil pengelompokan ke format XLS. Proses ini dilakukan dengan menjalankan fungsi ekspor data untuk mengunduh hasil pengelompokan beserta datanya ke dalam format XLS. PROBLEMS
CONTEST id …
id …
USERS id username …
database TOKI Learning Center database sistem pengelompokan tugas pemograman PLAGIARISM id username contest_id problem_id …
CLUSTERS id username contest_id problem_id …
Gambar 3 Pemetaan database sistem pengelompokan tugas pemrograman Rancangan database pada sistem dapat dilihat pada Gambar 3. Database yang dibangun pada sistem berguna sebagai tempat penyimpanan hasil pengelompokan yang dilakukan oleh sistem. Database sistem digambarkan terhubung dengan database TOKI Learning Center karena tabel pada database sistem menyimpan primary key dari tabel pada database TOKI Learning Center sebagai penciri dari tiap data yang tersimpan. header menu konten
footer
Gambar 4 Layout umum sistem pengelompokan tugas pemrograman
7 Rancangan antarmuka didahului dengan menentukan layout umum sistem seperti yang terlihat pada Gambar 4. Layout yang dirancang terdiri atas bagian header, menu, konten, dan footer. Selanjutnya, dibuat tampilan mockup untuk memberikan gambaran antarmuka yang digunakan pada sistem. Mockup untuk halaman utama dapat dilihat pada Gambar 5. Mockup tersebut memperlihatkan gambaran antarmuka halaman utama yang memiliki pilihan proses pengelompokan pada bagian menu. Pada bagian konten berisi tabeltabel untuk menyajikan hasil pengelompokan dan data dari peserta yang mengumpulkan tugas. Bagian konten juga sebagai tempat dilakukannya pemeriksaan plagiat dan menandai pelaku plagiat tugas pemrograman.
Gambar 5 Mockup sistem pengelompokan tugas pemrograman Perancangan arsitektur perangkat lunak pada penelitian ini didasari oleh konsep MVC. Model terdiri atas logika bisnis yang dibutuhkan sistem, yaitu praproses data, menyimpan hasil parsing ke XML, pengelompokan kode program, dan pengambilan data dari database. Praproses data pada penelitian ini menggunakan kode program yang telah dibangun oleh Notyasa (2013). Praproses data terdiri atas pembuangan preprocessor directives, tokenisasi, penyederhanaan, dan N-gram. Pada tahap praproses, hasil parsing disimpan dalam dokumen XML untuk digunakan kembali pada tahap selanjutnya. Metode pengelompokan yang digunakan terdiri atas 5 yaitu K-means, bisecting K-means, single linkage, average linkage, dan complete linkage. Kelima metode pengelompokan tersebut telah dibangun pada penelitian sebelumnya oleh Gumilang (2013), Notyasa (2013), dan Triatmojo (2013). Gumilang (2013) membangun kode program untuk metode pengelompokan Kmeans. Notyasa (2013) membangun kode program untuk metode pengelompokan bisecting K-means. Triatmojo (2014) membangun kode program metode hierarchical agglomerative clustering yaitu single linkage, average linkage, dan complete linkage.
8 Pengambilan data dari database dibagi menjadi 3 bagian yaitu database dari sistem, database dari TOKI Learning Center, dan database untuk login. Database dari sistem berhubungan dengan pengambilan data dari proses pengelompokan yang pernah dilakukan sistem, data pengerjaan tugas peserta, dan informasi pelaku plagiat. Database TOKI Learning Center berhubungan dengan kontes yang tersedia, tugas berdasarkan kontes yang ada, data peserta, dan data pengumpulan tugas pemrograman beserta kode programnya. View merupakan bagian yang menampilkan tampilan sistem kepada pengguna. View pada penelitian ini terdiri atas layout, header, form, menu, konten, halaman pesan kesalahan, dan footer. Layout, menu, dan konten memiliki 2 bentuk yaitu untuk halaman utama dan halaman hasil. Bagian form berguna untuk menampilkan form sistem login. Bagian halaman pesan kesalahan berguna untuk menampilkan pesan kesalahan data yang diproses. Controller merupakan bagian untuk mengatur alur masukan, proses logika, dan keluaran berupa tampilan kepada pengguna. Controller pada penelitian ini dibagi menjadi 2 file yaitu untuk fungsi login dan untuk fungsi pengelompokan. Pada bagian fungsi pengelompokan terdapat beberapa fungsi yang berperan dalam mengatur aliran data dan proses yang dimiliki sistem. Pada penelitian ini, beberapa fungsi yang harus ada dalam controller tersebut adalah fungsi utama, pengelompokan kode program, pemberian keterangan dan penandaan plagiat, ekspor data, pengambilan tugas berdasarkan kontes yang dipilih, dan laporan hasil kontes. Implementasi Implementasi kode program pada penelitian ini disesuaikan dengan konsep MVC berdasarkan hasil pada tahap perancangan. Berikut hasil implementasi kode program untuk membangun sistem pada penelitian ini: Model Implementasi pada bagian model terdiri atas praproses data, penyimpanan hasil parsing ke XML, pengelompokan kode program, dan pengambilan data dari database. Praproses data, proses penyimpanan hasil parsing ke XML, dan pengelompokan kode program telah dibangun pada penelitian sebelumnya, sehingga pada penelitian ini hanya menggunakan dan mengubah beberapa baris kode program yang disesuaikan dengan sistem yang dibangun. Di samping itu, file mclustering pada bagian model yang telah dibangun menjadi bagian yang perlu diperhatikan untuk pengembangan sistem dalam menambahkan metode pengelompokan yang baru. Berikut adalah potogan kode program dalam file mclustering yang diperhatikan untuk melakukan penambahan metode pengelompokan: 9 10 11 12 13 14
public function clustering($termFreqTable=array(), $method='', $i=1, $k='', $path='') { if($method=='bisecting_kmeans') { $this->load-> model('clustering/bisectKMeans/mBisectKMe ans'); $clusters =
9 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
$this->mBisectKMeans>bisectKMeans($termFreqTable,$i); } else if($method=='kmeans') { $this->load>model('clustering/kMeans/mKMeans'); $mode = "manual"; list($result,$cent,$prev) = $this->mKMeans->kMeans($path,$k,$mode); }else{ $mode = "auto"; $result = $this->mKMeans-> autoClustering($path,$mode); $a=0; foreach($result as $key1=>$key2){ } $b=0; foreach($key2 as $key3 => $val){ $clusters[$a][$b] = $key3 ; $b++; } $a++; } } //tambahkan metode baru disini
Pada fungsi clustering terlihat ada variabel termFreqTable, method, i, k, dan path. Variabel termFreqtable adalah variabel yang mengandung hasil praproses. Method adalah variabel yang mengandung nama metode yang dipilih oleh pengguna sistem, variabel ini yang berperan mengarahkan proses pengelompokan. Variabel i adalah parameter yang digunakan oleh metode pengelompokan yang dibatasi oleh ukuran jarak intrakelompok, misalnya algoritme bisecting K-means. Variabel k adalah parameter untuk metode pengelompokan yang dibatasi oleh jumlah kelompok, misalnya algoritme Kmeans. Variabel i dan k tidak dipakai secara bersamaan. Variabel i dan k dipilih sesuai dengan kebutuhan metode pengelompokan yang digunakan. Variabel path adalah variabel yang mengandung direktori dari hasil parsing. Variabel path khusus dibuat agar sistem dapat menjalankan modul yang dibangun oleh Gumilang (2013). Akan tetapi, untuk penambahan metode pengelompokan yang baru, variabel path dapat diabaikan dan pengembang cukup menggunakan hasil parsing yang telah disimpan dalam variabel termFreqtable. Implementasi pada bagian model menghasilkan beberapa file yang digunakan oleh sistem. File-file tersebut dimasukkan ke dalam folder yang sesuai dengan bagiannya. Daftar file utama pada bagian model beserta kegunaannya dapat dilihat pada Tabel 1. View Semua bagian tampilan halaman dari sistem penelitian ini dibangun pada bagian view. Implementasi tampilan dilakukan dengan melihat rancangan mockup yang telah dirancang. Proses implementasi tampilan disesuaikan dengan perubahan yang dibutuhkan agar tampilan terlihat lebih menarik dan sesuai dengan lingkungan penggunaan sistemnya. Tampilan halaman utama
10 sistem ini dapat dilihat pada Gambar 6. Implementasi view terdiri atas beberapa file yang dapat dilihat pada Tabel 2. Keseluruhan tampilan halaman yang ada pada sistem ini dapat dilihat pada Lampiran 3.
Nama File mprosescluster mclustering
msistem mtugas muser mpraproses mxmlparsing
Tabel 1 Daftar file bagian model Kegunaan Memulai tahapan pengelompokan kode program Melakukan pengelompokan kode progam berdasarkan metode pengelompokan yang dipilih Mengambil data yang diperlukan dari database sistem penelitian Mengambil data yang diperlukan dari database TOKI Learning Center Mengambil data untuk sistem login Melakukan praproses data Menyimpan hasil parsing ke XML
Gambar 6 Tampilan halaman utama sistem pengelompokan tugas pemrograman Pada bagian view terdapat bagian yang harus diperhatikan untuk melakukan penambahan metode pengelompokan baru. Bagian tersebut terletak pada file vMenuClutster dan vLayoutClutster. Pada kedua file tersebut terdapat baris script yang perlu ditambahkan untuk membuat sistem menampilkan nama metode pengelompokan baru. Berikut adalah bagian kode program pada vMenuClutster: 3 4 5
$select['bisecting_kmeans'] = 'i'; $select['kmeans'] = 'k'; //tambah metode baru disini
11 6 7 8 9 10 11
$options=array( //tambah nama metode baru disini 'bisecting_kmeans' => 'Bisecting K-means', 'kmeans' => 'K-Means', );
Berikut adalah bagian kode program pada vLayoutClutster: 40 41 42 43 44
script type="text/javascript"> pilih = new Array(); pilih['bisecting_kmeans'] = 'i'; pilih['kmeans'] = 'k'; //add new method here select['new_method'] = 'k' or ‘i’;
Tabel 2 Daftar file bagian view Nama File Kegunaan vLayoutCluster Layout dari halaman cluster vLayoutResult Layout dari halaman hasil vMenuCluster Menu pada halaman cluster vMenuResult Menu pada halaman hasil vContentCluster Konten dari halaman cluster vContentResult Konten dari halaman hasil vErrordata Halaman pesan kesalahan vForm Halaman form pada sistem login vHead Header dari tampilan sistem vFooter Footer dari tampilan sistem Controller Pada penelitian ini implementasi controller terdiri atas 2 file yaitu clogin dan cmain. File clogin merupakan file yang mengatur fungsi login, sedangkan file cmain merupakan file pengelola utama sistem pengelompokan. Pada file cmain semua proses utama diatur dengan menghubungkan antara bagian model dan view. Di samping itu, terdapat beberapa fungsi seperti yang dapat dilihat pada Tabel 3. Fungsi utama untuk mengarahkan proses pengelompokan yang dijalankan oleh sistem terdapat pada bagian fungsi cluster. Pada bagian controller terdapat bagian yang harus diperhatikan untuk melakukan penambahan metode pengelompokan baru. Bagian terserbut terletak pada file cmain. File cmain perlu ditambahkan beberapa baris kode program untuk dapat menjalankan metode pengelompokan baru oleh sistem. Berikut adalah bagian kode program pada cmain yang perlu penambahan: 41 42 43 44 45
public function cluster(){ if($this->input->post('run')==''){ redirect('cMain'); } else {
12 46 47 48
$select['bisecting_kmeans'] = 'i'; $select['kmeans'] = 'k'; //tambah method baru disini
Tabel 3 Daftar fungsi file cmain pada bagian controller Nama Fungsi Kegunaan index() Fungsi utama untuk halaman awal cluster() Fungsi untuk menjalankan proses pengelompokan get_problem() Fungsi untuk menerima perubahan kontes pada dropdown list kontes dan mengirmkan data berupa daftar tugas yang sesuai dengan kontes result_page() Mengarahkan untuk menjalankan halaman hasil update_plagiat() Mengarahkan data masukan untuk pelaku plagiat ke bagian model yang mengurus bagian plagiat update_note() Mengarahkan data masukan untuk keterangan ke bagian model yang mengurus bagian keterangan cetak() Mengekspor data pada sistem ke format XML Setelah sistem selesai dibangun, sistem diimplementasikan ke server yang sama dengan sistem TOKI Learning Center. Selanjutnya, tahap pengujian dilakukan terhadap sistem yang telah berhasil diimplementasikan ke server. Pengujian dilakukan secara black box berdasarkan skenario yang telah dibuat pada penelitian ini. Hasil pengujian yang pertama masih terdapat fungsi yang belum bekerja dengan semestinya. Fungsi yang masih gagal adalah fungsi pengelompokan berdasarkan kesamaan test case yang memberikan pesan error. Selanjutnya, dilakukan perbaikan sehingga tidak terdapat lagi error pada sistem. Dokumen pengujian dari penelitian ini dapat dilihat pada Lampiran 4. Penggunaan Sistem yang telah diimplentasikan dapat digunakan oleh pengguna. Penggunaan pada sistem ini dapat menghasilkan feedback untuk pengembangan sistem selanjutnya agar sistem menjadi lebih baik. Sistem memiliki 3 pilihan proses dalam melakukan pengelompokan, yaitu menggunakan metode pengelompokan, menggunakan kesamaan hasil test case, dan menggunakan gabungan kesamaan hasil test case dengan metode pengelompokan. Metode pengelompokan yang dimiliki oleh sistem ada 5, yaitu K-means dan bisecting K-means, single linkage, average linkage, dan complete linkage. Secara default sistem menggunakan gabungan kesamaan hasil test case dengan metode pengelompokan. Sistem pengelompokan tugas pemrograman memiliki beberapa kondisi yang membantu pendeteksian kasus plagiat. Kondisi yang digunakan, yaitu
13 hasil pengelompokan, jumlah yang dikumpulkan, waktu pengumpulan, dan kode program. Hasil pengelompokan berupa kelompok peserta yang memiliki kemiripan berdasarkan struktur kode program, hal ini membantu pengguna sistem untuk membandingkan kode program. Fakta bahwa peserta yang melakukan plagiat memiliki waktu pengumpulan lebih lambat dari sumbernya, menjadikan waktu pengumpulan sabagai bahan pertimbangan. Selanjutnya, jumlah tugas yang dikumpulkan dapat memperlihatkan pola pengumpulan tugas pemrograman oleh peserta. Peserta yang berada di kelompok yang sama dengan peserta lain yang memiliki waktu pengumpulan lebih lambat dan jumlah yang dikumpulan lebih sedikit dapat dicurigai melakukan tindakan plagiat. Untuk meyakinkan penentuan plagiat, pengguna sistem dapat melihat kode program dari peserta yang dicurigai melakukan plagiat. Sistem pengelompokan tugas pemrograman memiliki fungsi untuk membandingkan 2 kode program yang berguna melihat tingkat kemiripan. Sistem juga memiliki fungsi ekspor data hasil pemeriksaan ke format XLS yang berguna untuk mempermudah penilaian setelah dilakukan pemeriksaan kasus plagiat.
SIMPULAN Penelitian ini telah berhasil mengintegrasikan modul pengelompokan kode program C, yang dibangun pada penelitian sebelumnya oleh Gumilang (2013), Notyasa (2013), dan Triatmojo (2014), pada database TOKI Learning Center. Penelitian ini juga menghasilkan aplikasi web dinamis yang memiliki antarmuka yang dapat digunakan dengan baik oleh pengguna sistem, untuk membantu pengecekan kasus plagiat pada tugas pemrograman yang tersimpan dalam database TOKI Learning Center.
DAFTAR PUSTAKA Burrows S. 2004. Effecient and effective plagiarism detection for large code repositories [tesis]. Melbourne(AU): RMIT University. Gumilang AP. 2013. Pendeteksian penjiplakan kode program C dengan K-means [skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor. McLeod R Jr, Schell GP. 2007. Management Information System. Ed ke-10. New Jersey (US) : Pearson. Notyasa A. 2013. Pendeteksian penjiplakan kode program C dengan bisecting K-means [skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor. Triatmojo R. 2014. Pengelompokan kode program C berdasarkan kemiripan struktur menggunakan metode hierarchical agglomerative clustering [skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor.
14 Lampiran 1 Pemetaan database TOKI Learning Center
CONTEST
PROBLEMS
id …
id …
USERS
id …
SUBMISSIONS
id problem_id submitter_id contest_id … CONTESTS_USERS
contest_id user_id …
CONTESTS_PROBLEMS
contest_id problem_id …
15 Lampiran 2 Activity diagram Menjalankan proses pengelompokan user
sistem
memilih kontes Menampilkan daftar tugas sesuai dengan kontes Memilih tugas
Memilih proses pengelompokan
Memilih metode pengelompokan
metode pengelompokan / metode pengelompokan test case
&
Memilih i atau memasukkan nilai k
Proses pengelompokan Hasil pengelompokan
test case
16 Lanjutan Membandingkan kode program user
Memilih fitur pembandingan kode program
sistem
mengaktifkan fungsi pembandingan kode program
Memilih cluster
Memilih id peserta Menampilkan kode program pada tabel pertama Memilih id peserta yang lainnya Menampilkan kode program pada tabel kedua Membandingkan kode program
17 Lanjutan Menandai pelaku plagiat user
sistem
memeriksa tindakan plagiat
Menandai pelaku plagiat Menyimpan data plagiat peserta yang ditandai
Menyimpan username dari pengguna yang menandai Tampilan tanda plagiat dan nama pemeriksa
Mengekspor data ke format XLS user
sistem
Menjalankan proses pengelompokan
Menjalankan pilihan ekspor data Menjalankan proses download data pengelompokan ke client Hasil download disimpan di client
18 Lampiran 3 Tampilan halaman sistem pengelompokan tugas pemrograman Halaman login
Halaman cluster
19 Lanjutan Halaman cluster
Halaman cluster
Halaman cluster dengan fitur pembandingan kode program
20 Lanjutan Halaman cluster dengan tampilan pembandingan kode program
Halaman pesan kesalahan
21 Lanjutan Halaman hasil
Halaman hasil
22 Lanjutan Halaman hasil dengan pesan kesalahan
23 Lampiran 4 Dokumen uji sistem pengelompokan tugas pemrograman
Kode Uji
S001
S002
Deskripsi Uji
Memeriksa proses autentikasi berjalan sesuai dengan username dan password
Memeriksa keamanan aplikasi jika pengguna sudah mengetahui struktur halaman aplikasi dan bermaksud untuk langsung mengaksesnya lewat URL web browser
Kondisi Awal
Halaman login
Sudah logout dari halaman sistem
Skenario Uji
Hasil Yang Diharapkan
Hasil
Pengguna memasukkan data login (username dan password) yang tidak valid dan klik tombol login
Pengguna tidak bisa memasuki halaman utama dan diberikan pesan “username anda tidak terdaftar”
sukses
Pengguna memasukkan data login (username yang valid dan password tidak valid) dan mengklik tombol login
Pengguna tidak bisa memasuki halaman utama dan diberikan pesan “password anda salah”
sukses
Pengguna memasukkan data login (username dan password) yang valid dan mengklik tombol login
Pengguna memasuki halaman utama
sukses
Pengguna memasukkan langsung URL halaman index pada web browser
Tampil halaman login
sukses
24 Lanjutan
Kode Uji
S003
S004
S005
Deskripsi Uji Memeriksa kontes dan tugas dapat dipilih pengguna
Memeriksa checkbox pilihan clustering berjalan semestinya
Memeriksa hasil clustering
Kondisi Awal
Halaman utama
Skenario Uji
Hasil Yang Diharapkan
Hasil
Pengguna memilih kontes dan tugas pada halaman aplikasi web
Pengguna dapat memilih kontes dan tugas pada halaman aplikasi web
sukses
Pengguna tidak memilih satupun proses clutsering
Tombol proses dan pilihan metode clustering yang digunakan tidak tampil
sukses
Pengguna memilih salah satu atau semua proses clustering
Tombol proses tetap muncul dan metode clustering muncul apabila checkbox metode clustering dicentang dan hilang apabila tidak dicentang
sukses
Pengguna melakukan proses clustering dengan metode clustering dan test case
Tampil hasil clustering pada tabel cluster di halaman utama
sukses
Pengguna melakukan proses clustering hanya dengan metode clustering
Tampil hasil clustering pada tabel cluster di halaman utama
sukses
Pengguna melakukan proses clustering hanya dengan test case
Tampil hasil clustering pada tabel cluster di halaman utama
sukses
Pengguna melakukan proses clustering yang belum memiliki data kode program dari peserta
Tampil halaman error yang memberitahukan bahwa belum ada data yang dapat diproses
sukses
Halaman utama
Halaman utama
25 Lanjutan
Kode Uji
S006
S007
Deskripsi Uji
Memeriksa informasi yang ditampilkan tabel cluster
Memeriksa fungsi centang plagiat dan keterangan pada tabel peserta
Kondisi Awal
Halaman utama dengan hasil clustering
Halaman utama dengan hasil clustering dan data pada tabel peserta
Skenario Uji
Hasil Yang Diharapkan
Pengguna mengklik salah satu cluster pada tabel cluster
Tampil data peserta pada tabel peserta yang berisi id peserta, jumlah yang dikumpulkan dan waktu pengumpulan
sukses
Pengguna mengklik grade content sebelum mengklik salah satu peserta pada tabel ID Peserta
Tidak tampil apapun
sukses
Pengguna mengklik salah satu peserta pada tabel ID Peserta
Tampil kode program peserta pada tabel kode program
sukses
Pengguna mengklik grade content setelah mengklik salah satu peserta pada ID Peserta
Tampil hasil test case dari peserta yang dipilih
sukses
Pengguna memberikan keterangan pada kolom keterangan tanpa mengklik tombol simpan, kemudian pengguna mengklik hasil cluster yang lain dan kembali mengklik cluster yang dipilih sebelumnya
Keterangan yang diberikan tadi tidak tampil
sukses
Pengguna meberikan keterangan pada kolom keterangan dan mengklik tombol simpan, kemudian pengguna mengklik hasil cluster yang lain dan kemudian kembali klik cluster yang dipilih sebelumnya
Keterangan yang diberikan tadi tetap tampil
Hasil
sukses
26 Lanjutan
Kode Uji
S007
Deskripsi Uji
Memeriksa fungsi centang plagiat dan keterangan pada tabel peserta
Kondisi Awal
Halaman utama dengan hasil clustering dan data pada tabel peserta
Skenario Uji
Hasil Yang Diharapkan
Hasil
Pengguna mengklik checkbox yang belum ada tanda centang pada tabel peserta, kemudian pengguna mengklik hasil cluster yang lain dan kembali mengklik cluster yang dipilih sebelumnya
Kondisi checkbox yang diklik tetap ada tanda centang
sukses
Pengguna mengklik checkbox yang sudah ada tanda centang pada tabel peserta, kemudian pengguna mengklik hasil cluster yang lain dan kembali mengklik cluster yang dipilih sebelumnya
Kondisi checkbox yang diklik tetap tanpa ada tanda centang
sukses
Pengguna mengklik beberapa checkbox pada tabel peserta, kemudian pengguna memuat kembali halaman dan kembali mengklik cluster yang sama dengan sebelumnya
Kondisi checkbox sama seperti saat halaman belum dimuat kembali
sukses
Pengguna memberikan keterangan pada kolom keterangan dan mengklik tombol simpan, kemudian pengguna memuat kembali halaman dan kembali mengklik cluster yang sama dengan sebelumnya
Keterangan yang telah disimpan tetap tampil seperti sebelum halaman dimuat kembali
sukses
Pengguna memberikan keterangan pada kolom keterangan tanpa mengklik tombol simpan, kemudian pengguna memuat kembali halaman dan kembali mengklik cluster yang sama dengan sebelumnya
Keterangan yang diberikan tadi tidak tampil
sukses
27 Lanjutan
Kode Uji
Deskripsi Uji
S008
Memeriksa fungsi ekspor rekapan data ke format XLS
S009
S010
S011
S012
Memeriksa fungsi pembandingan kode program
Memeriksa halaman hasil
Memeriksa hasil kontes
Memeriksa fungsi logout
Kondisi Awal Halaman utama
Hasil Yang Diharapkan
Hasil
Pengguna mengklik button export to excel
Terjadi proses download data cluster dari sistem
sukses
Pengguna mengklik checkbox fitur pembandingan kode program
Tampil 2 tabel untuk membandingkan kode program
sukses
Pengguna mengklik 2 id peserta yang berbeda
Tampil kode program yang mewakili masingmasing id peserta yang diklik
sukses
Pengguna mengklik tab “Hasil”
Tampil halaman hasil
sukses
Pengguna memilih kontes yang belum memiliki data hasil cluster dan mengklik tombol proses
Tampil tulisan keterangan error
sukses
Pengguna memilih kontes yang sudah memiliki data hasil cluster dan mengklik tombol proses
Tampil data laporan kontes pada tabel
sukses
Pengguna mengklik tombol logout
Tampil halaman login
sukses
Skenario Uji
Halaman utama
Halaman utama
Halaman hasil
Halaman utama
28
RIWAYAT HIDUP Penulis dilahirkan di Dumai pada tanggal 29 November 1991, merupakan anak kedua dari Bapak Armen Sirin dan Ibu Deswelly. Pada Tahun 2004 sampai 2007 penulis menempuh pendidikan sekolah menengah pertama di SMP Negeri Binaan Khusus Dumai. Kemudian penulis melanjutkan pendidikannya di SMA Negeri 10 Padang pada tahun 2007 sampai 2010. Lulus dari sekolah menengah atas, penulis diterima di Departemen Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor melalui jalur Seleksi Nasional Masuk Perguruan Tinggi Negri (SNMPTN) pada tahun 2010.