Integrasi Modul Pengelompokan Kode Program C Berdasarkan Struktur pada TOKI Learning Center

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

Kondisi
Awal
Halaman
utama

Memeriksa
fungsi
pembandingan
kode program

Halaman
utama

Memeriksa
halaman hasil

Halaman
utama

Memeriksa
hasil kontes

Memeriksa
fungsi logout

Halaman
hasil

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

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.