BAB II
KAJIAN PUSTAKA
Dalam pengembangan kemampuan automatic grade Marmoset terhadap project dan hasil
penilaian
pemrograman
ini
diperlukan
beberapa
teori
untuk
mendukung
proses
pengembangannya. Berikut ini adalah teori-teori dasar yang digunakan dalam melakukan pengembangan kemampuan automatic grade Marmoset terhadap project dan hasil penilaian pemrograman.
2.1
Teori Pemrograman Komputer
Pemrograman komputer (sering disebut coding) adalah proses merancang, menulis, testing, debugging, dan memelihara source code dari program komputer. Source code ditulis dalam satu atau banyak bahasa pemrograman. Tujuan dari pemrograman adalah untuk menciptakan satu set instruksi yang digunakan komputer untuk melakukan operasi tertentu atau untuk menunjukkan perilaku yang diinginkan. Proses penulisan source code sering memerlukan keahlian dalam berbagai mata pelajaran, termasuk pengetahuan dari domain sistem, algoritma khusus dan logika formal (Wikipedia, 2012). Progam komputer yang dibuat dari source code harus memenuhi beberapa sifat yang fundamental. Sifat fundamental tersebut yang paling relevan adalah : 1. Reliability Reliability adalah seberapa sering keluaran dari program itu benar. Hal ini tergantung kepada kebenaran dari algoritma, dan minimal kesalahan dari pemrograman, seperti kesalahan logika. 2. Robustness Robustness adalah seberapa baik program dapat mengatasi masalah bukan karena kesalahan programmer. Hal ini termasuk data yang tidak benar, tidak tepat atau rusak, tidak tersedianya resource yang dibutuhkan, dan kesalahan user.
10
BAB II KAJIAN PUSTAKA
3. Usability
11
Usability adalah kemudahan yang user dapatkan pada saat menggunakan program. Hal
ini melibatkan berbagai tekstual, graphical dan beberapa elemen dari hardware yang
dapat meningkatkan kejelasan dan kelengkapan user interface program.
4. Portability
Portability adalah keterhubungan antara hardware komputer dengan platform sistem
operasi yang dapat mengkompilasi source code dari program dan dijalankan. Hal ini tergantung pada perbedaan dalam fasilitas pemrograman yang disediakan oleh platform yang berbeda, termasuk perangkat keras dan sumber daya sistem operasi, perilaku yang
diharapkan dari sistem hardware dan operasi, dan ketersediaan compiler platform
tertentu. 5. Maintainability Maintainability adalah kemudahan untuk sebuah program dapat dimodifikasi oleh developer dengan tujuan untuk pengembangan atau penyesuaian, memperbaiki bugs dan keamanan, atau disesuaikan dengan kebutuhan yang baru. 6. Efficiency/performance Efficiency/performance adalah jumlah dari resource yang digunakan seperti processor time, memory space, bandwidth jaringan dan interaksi user. Hal ini mencakup juga membersihkan temporary file dan tidak ada memory leaks. 2.2
Teori Penilaian Program atau Source code
Sebuah program dikatakan tepat (correct) apabila komputasi yang dilakukan program tersebut sesuai dengan tujuan pembuatannya. Penilaian terhadap sebuah program pertama-tama dilakukan terhadap ketepatannya, karena program yang tidak tepat dapat dikatakan gagal memenuhi tujuannya. Ketepatan program, baik secara sintaks maupun semantik, akan dibahas dalam Subbab 2.2.1 Dalam pendekatan penilaian blackbox, benar tidaknya program ditentukan dari hasil eksekusinya saja. Penilai akan memroses source code menggunakan kompilator atau interpreter, memberikan masukan tertentu dan kemudian mengamati hasil keluaran program Pengembangan Kemampuan Automatic Grade Marmoset terhadap Project dan Hasil Penilaian Pemrograman
BAB II KAJIAN PUSTAKA
12
tersebut. Jika keluaran yang dihasilkan oleh program sesuai dengan keluaran yang
diharapkan oleh penilai, maka program dinyatakan benar. Pendekatan blackbox merupakan cara yang paling sederhana untuk menilai ketepatan program dan dapat diotomasikan dengan
mudah.
Dalam pendekatan blackbox, proses penilaian dilakukan dalam dua tahap, tahap analisis statik dan tahap analisis dinamik. Dalam tahap analisis statik, source code program diubah
ke dalam format siap eksekusi menggunakan kompilator atau interpreter. Dalam tahap
analisis dinamik, program dieksekusi, diberi masukan dan kemudian keluaran yang dihasilkannya diperiksa (Ronny, 2008). 2.2.1 Ketepatan Sintaks dan Semantik
Source code yang memiliki kesalahan semantik tidak akan menghasilkan eksekusi program yang benar, sementara source code yang memiliki kesalahan sintaks tidak akan dapat menghasilkan program yang dapat dieksekusi sama sekali. Sintaks
sebuah
bahasa
pemrograman
mendefinisikan
hubungan
formal
antara
komponen-komponennya, menyediakan deskripsi struktural tentang kalimat-kalimat yang legal dalam bahasa tersebut (Slonneger Kenneth, 1995). Aturan-aturan sintaks / tata bahasa (grammar) dalam sebuah bahasa pemrograman menyediakan cara agar source code dapat ditranslasikan dan kemudian dieksekusi oleh sistem komputer. Kesalahan sintaks pada source code akan menyebabkan kegagalan proses translasi, dan dengan demikian tidak akan dihasilkan program yang dapat dieksekusi (Novrina S.Kom, 2010). Semantik bahasa pemrograman menggambarkan hubungan antara bentuk sintaks tertentu dengan model komputasinya, sedangkan semantik sebuah program merupakan cara untuk memahami atau menginterpretasikan program tersebut dan memprediksi hasil eksekusinya (Aaby, 2004). 2.3
Teori Automatic grade
Automatic grade system adalah sistem penilaian otomatis pada sebuah source code. Ada beberapa tools yang dapat melakukan penilaian otomatis secara online diantaranya : Pengembangan Kemampuan Automatic Grade Marmoset terhadap Project dan Hasil Penilaian Pemrograman
BAB II KAJIAN PUSTAKA
13
codechef.com, codeforces.com, acm.timus.ru, codegolf.com, spoj.pl. Sejak tahun 1961,
kuliah pengantar pemrograman dan metode numerik di Universitas Stanford telah menggunakan program penilai dalam bentuk library tambahan yang dikompilasi bersama source
code
mahasiswa.
Autograder
ini
melakukan
penilaian
secara
blackbox,
input terhadap hasil kompilasi source code mahasiswa dan mencocokkan hasil memberikan keluaran dengan keluaran yang diharapkan (George E Forsythe, 1965). Dalam bidang informatika, autograding yang dilakukan umumnya berbasis pada pengujian
blackbox, mulai program penilai yang digunakan pada berbagai universitas (AskSlashdot, 2006), sampai dengan program juri otomatis pada International Olympiad in Informatics
(IOI). Autograder untuk kepentingan pendidikan secara spesifik perlu mencakup penilaian atas aspek-aspek lain di luar ketepatan program (program correctness) melalui eksekusi program ke dalam proses autograding, seperti misalnya aspek readability, efisiensi, atau kompleksitas, namun penilaian efisiensi, readability, dan kompleksitas belum dapat diterapkan dalam sistem automatic grade program yang ada saat ini (Ronny, 2008). 2.4
Marmoset
Marmoset adalah sebuah sistem automatic grade yang dirancang untuk menilai project secara otomatis dan dapat meninjau kembali source code yang telah di-submit ke dalam sistem yang melalui web interface. Marmoset dapat menilai project untuk bahasa Java, C, OCaml, dan Ruby. Marmoset dijalankan di dalam sebuah webserver dan servet container yang bernama Apache Tomcat.
Pengembangan Kemampuan Automatic Grade Marmoset terhadap Project dan Hasil Penilaian Pemrograman
BAB II KAJIAN PUSTAKA
14
Gambar 2 Arsitektur Sistem dari Marmoset
Gambar 2 menjelaskan bahwa Marmoset memiliki 2 server yang digunakan dalam sistem, yaitu
Submit server dan Build server. Submit server berfungsi untuk menerima dan
menyimpan project yang diberikan oleh students. Sedangkan build server dikhususkan untuk membangun project yang telah ditentukan dalam build server dan melakukan pengujian terhadap project tersebut. CVS repository merupakan tempat menyimpan soal-soal yang diberikan oleh instructor untuk student. 2.5
Tools Pendukung
Pada subbab ini dijelaskan secara singkat mengenai teknologi yang dipergunakan untuk mendukung pengembangan sistem automatic grade Marmoset. 2.5.1 Linux Linux adalah nama yang diberikan kepada sistem operasi komputer bertipe Unix. Linux merupakan salah satu contoh hasil pengembangan perangkat lunak dan sumber terbuka utama. Seperti perangkat lunak bebas dan sumber terbuka lainnya pada umumnya, kode sumber Linux dapat dimodifikasi, digunakan dan didistribusikan kembali secara bebas oleh siapa saja. Nama “Linux” berasal dari nama pembuatnya, yang diperkenalkan tahun 1991 oleh Linus Torvalds. Sistemnya, peralatan sistem dan pustakanya umumnya berasal dari sistem operasi GNU, yang diumumkan tahun 1983 oleh Richard Stallman. Kontribusi GNU adalah dasar dari munculnya nama alternative GNU/Linux. Pengembangan Kemampuan Automatic Grade Marmoset terhadap Project dan Hasil Penilaian Pemrograman
BAB II KAJIAN PUSTAKA
15
Linux telah lama dikenal untuk penggunaannya di server, dan didukung oleh perusahaan
perusahaan komputer ternama seperti Intel, Dell, Hewlett-Packard, IBM, Novell, Oracle Corporation, Red Hat, dan Sun Microsystems. Linux digunakan sebagai sistem operasi di
berbagai macam jenis perangkat keras komputer, termasuk komputer desktop, supercomputer, benam seperti pembaca buku elektronik, sistem permainan video (Playstation 2, dan sistem playstation 3 dan XBox), telepon genggam dan router. Para pengamat teknologi informatika
beranggapan kesuksesan Linux dikarenakan Linux tidak bergantung kepada vendor, biaya operasional yang rendah, dan kompatibilitas yang tinggi dibandingkan versi UNIX tak bebas,
serta faktor keamanan dan kestabilannya yang tinggi dibandingkan dengan sistem operasi lainnya seperti Microsoft Windows (Wikipedia, 2012).
2.5.2 Eclipse Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (Wikipedia, 2012). Berikut ini adalah sifat dari Eclipse: 1.
Multi-platform, dapat digunakan dalam OS Microsoft Windows, Linux, Solaris, AIX, HP-UX, Mac OS X.
2.
Multi-language, eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi eclipse mendukung pengembangan sistem berbasis bahasa pemrograman lainnya seperti C/C++, Cobol, Phyton, Perl, PHP.
3.
Multi-role, selain sebagai IDE untuk pengembangan sistem, Eclipse juga dapat digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, tes perangkat lunak, pengembangan web.
2.5.3 Apache Tomcat Apache Tomcat merupakan servlet atau JSP container yang dibuat oleh Apache Software Foundation. Container ini merupakan server untuk menjalankan bahasa pemrograman web JSP (Java Server Pages). Apache Tomcat dikembangkan di lingkungan yang terbuka dan partisipasif dan diliris di bawah lisensi Apache versi 2. Apache ini dimaksudkan untuk menjadi kolaborasi generasi yang terbaik bagi developer dari seluruh dunia. Pengembangan Kemampuan Automatic Grade Marmoset terhadap Project dan Hasil Penilaian Pemrograman
BAB II KAJIAN PUSTAKA
16
Tomcat lebih baik digunakan sebagai java web server yang murni atau sebagai komponen
dalam konfigurasi yang lebih kompleks dan berfungsi sebagai back-end yang menangani permintaan yang dikirimkan kepadanya dari web server seperti apache, menggunakan
konektor seperti mod_jk disediakan oleh tim Apache Tomcat atau mod_proxy yaitu sebuah modul opsional untuk apache HTTP server yang disediakan oleh tim Apache HTTP server.
Tomcat adalah sebuah sistem yang dapat digunakan untuk membuat sebuah komputer bekerja
mandiri sebagai server. Ini sangat membantu dalam pemrograman yang menggunakan java server pages (JSP). Dengan menginstall software ini,kita dapat membuat sebuah komputer
sendiri menjadi server dan melakukan tugas seperti yang dilakukan oleh server (Tomcat,
2012). 2.5.4 Apache ANT Apache ANT adalah software berbasis Java yang digunakan untuk keperluan build tool. Sebagai build tool, tugas utama dari ANT adalah untuk menyediakan sumber daya dan melaksanakan proses yang memungkinkan membangun suatu software dari bentuk source code menjadi sistem yang siap didistribusikan atau bahkan telah diinstall pada remote server. Ada banyak build tool yang tersedia, beberapa diantaranya adalah build tool yang bersifat spesifik untuk sistem operasi tertentu. Beberapa contoh dari build tool adalah: 1. GNU Make 2. Jam 3. Rake (untuk Ruby) ANT merupakan software untuk keperluan build tool yang bersifat cross platform, bisa digunakan pada berbagai sistem operasi yang mendukung Java. Ant juga dapat digunakan untuk membangun sistem non-java seperti sistem C atau C++. Lebih luasnya, Ant dapat digunakan untuk percontohan setiap jenis proses yang dapat digambarkan dalam bentuk target dan tugas (ANT, 2012).
Pengembangan Kemampuan Automatic Grade Marmoset terhadap Project dan Hasil Penilaian Pemrograman
BAB II KAJIAN PUSTAKA
17
2.5.5 GNU Compiler Collection (GCC)
GCC adalah sebuah sistem compiler yang diproduksi oleh GNU Project yang support berbagai bahasa pemrograman. GCC adalah sebuah komponen utama dari GNU toolchain.
GCC telah diadopsi sebagai compiler standar oleh kebanyakan dari Unix modern seperti operating system seperti Linux. GCC juga dapat digunakan di Windows operating system produksi Microsoft. GCC telah dibuat untuk berbagai macam processor architecture dan digunakan sebagai alat dalam pengembangan perangkat lunak. Sebenarnya nama GCC adalah
GNU C Compiler, karena compiler tersebut hanya dapat menangani bahasa pemrograman C.
GCC 1.0 dirilis pada tahun 1978 dan dikembangkan untuk bisa mengkompilasi C++ pada
Desember tahun tersebut.
Pada umumnya, interface eksternal GCC adalah sebuah standar compiler untuk Unix. Biasanya GCC menafsirkan argumen perintah, menentukan compiler dengan bahasa pemrograman yang digunakan untuk setiap file yang dimasukkan, menjalankan assembler pada output tersebut, dan memungkinkan untuk menjalankan linker untuk menghasilkan sebuah executable binary yang lengkap. Setiap compiler dari bahasa pemrograman yang berbeda adalah sebuah program terpisah yang input suatu source code dan output machine code. Semua memiliki kesamaan struktur internal. Front end dari setiap bahasa pemrograman menguraikan source code yang menggunakan bahasa tersebut dan menghasilkan sebuah pohon sintaks abstrak (Wikipedia, 2012).
Pengembangan Kemampuan Automatic Grade Marmoset terhadap Project dan Hasil Penilaian Pemrograman