BAB V IMPLEMENTASI DAN PENGUJIAN

dokumen-dokumen yang mirip
BAB III ANALISIS. 3.1 Deskripsi Sistem III-1

BAB IV PERANCANGAN. 4.1 Autograder Engine IV-1

BAB V IMPLEMENTASI DAN PENGUJIAN

BAB III ANALISIS. upload tugas pemrograman. komunikasi. pemberian tugas. grading. deteksi plagiarisme. Milestone

Deteksi Otomatis Plagiarisme Source Code

BAB III METODE PENELITIAN

BAB IV IMPLEMENTASI DAN EVALUASI

BAB III METODOLOGI PENELITIAN. Berikut tahapan penelitian yang dilakukan: 1. Menentukan kebutuhan data yang akan digunakan.

3.1 APLIKASI YANG DITANGANI OLEH CODE GENERATOR

BAB III ANALISIS DAN PERANCANGAN

Pemrograman dengan Java

BAB III PEMBAHASAN. Analisis sistem dapat didefinisikan sebagai penguraian dari suatu sistem

BAB V IMPLEMENTASI DAN PENGUJIAN

3.1 Ganesha Digital Library

PERANCANGAN DAN IMPLEMENTASI SISTEM INFORMASI SEKOLAH (STUDI KASUS SMP N 2 PATIKRAJA BANYUMAS)

BAB 4 IMPLEMENTASI DAN EVALUASI. Pada bagian implemenatasi ini, akan dijelaskana mengenai rencana Kebutuhan Sumber Daya Aplikasi

BAB V PENGEMBANGAN PERANGKAT LUNAK BANTU

BAB IV IMPLEMENTASI DAN PENGUJIAN APLIKASI. Setelah melakukan analisis dan perancangan terhadap Aplikasii

1 BAB III METODE PENELITIAN

BAB 4 IMPLEMENTASI DAN EVALUASI. dan sistem operasi dengan spesifikasi sebagai berikut: 1. Processor: Intel Pentium, Core Duo, 1.

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

Source Code Autograder

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB III METODOLOGI. Penelitian ini dilaksanakan di Ruang Server Biro Sistem Informasi (BSI)

BAB III ANALISIS. 3.1 Analisis Model Business Process Outsourcing

BAB V IMPLEMENTASI SISTEM

BAB 1 PENDAHULUAN Latar Belakang Masalah

LAPORAN PRAKTIKUM 1 TEKNIK KOMPILASI

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

BAB I PENDAHULUAN I.1 Latar Belakang

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

BAB 1 PENDAHULUAN. Universitas Kristen Maranatha

BAB I PERSYARATAN PRODUK

1.1 Latar Belakang Masalah

Pada akhir pembahasan, peserta diharapkan dapat :

Pemrograman Web Teknik Informatika Fakultas Teknologi Industri

BAB IV ANALISIS DAN PERANCANGAN. sistem informasi yang utuh kedalam bagian-bagian komponennya dengan

BAB III ANALISIS DAN PERANCANGAN

BAB III METODOLOGI PENELITIAN. tools yang akan digunakan untuk merancang aplikasi generator denah

BAB V IMPLEMENTASI DAN PENGUJIAN

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

MATERI DAN METODE. Investigasi Sistem. Analisis Sistem. Desain Sistem. Pemeliharaan Sistem. Implementasi Sistem

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB V IMPLEMENTASI DAN PENGUJIAN SISTEM. implementasi perangkat keras, implementasi basis data, implementasi instalasi

BAB I PENDAHULUAN. I.1 Latar Belakang

BAB V IMPLEMENTASI DAN PENGUJIAN SISTEM

III. METODOLOGI PENGEMBANGAN. Adapun peralatan yang digunakan pada penelitian adalah sebagai berikut:

BAB III METODE PENELITIAN. Gambar 3.1 ini merupakan desain penelitian yang akan digunakan. Exponential Smoothing

MODUL 3 DASAR-DASAR PHP

Review C/C++ & Intro to Java. Pemrograman Berorientasi Obyek IT209

BAB I PENDAHULUAN Pendahuluan Tujuan

IMPLEMENTASI DAN PENGUJIAN

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

BAB I PERSYARATAN PRODUK

BAB IV IMPLEMENTASI DAN EVALUASI. Sistem yang dibangun pengembang adalah berbasis web. Untuk dapat

BAB I PERSYARATAN PRODUK

4. BAB IV ANALISIS DAN PERANCANGAN SISTEM. diusulkan perancangan sistem baru, dimana kinerja dari suatu sistem yang baru

BAB IV IIMPLEMENTASI DAN PENGUJIAN. Implementasi merupakan tahap pengembangan dimana hasil analisis dan

1. Pilih BAB IV IMPLEMENTASI DAN PENGUJIAN. kebutuhan sistem yang meliputi emulator Java2 Micro Edition(J2ME) dan telepon

BAB 3 METODOLOGI PENELITIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

BAB V IMPLEMENTASI DAN PENGUJIAN SISTEM. konfigurasi pada perangkat lunak serta perangkat keras sesuai kebutuhan sistem

PERANCANGAN PROGRAM. struktur/hirarki menu, State Transition Diagram (STD), modul dan pseudocode, serta

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah. Perkembangan aplikasi teknologi informasi saat ini sudah berkembang begitu pesat

1.1 Latar Belakang Masalah

BAB II LANDASAN TEORI. produk itu baik atau rusak ataupun untuk penentuan apakah suatu lot dapat diterima

Makalah Tentang Konten Manajemen Sistem Untuk Ujian Kompetensi Online

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

BAB III ANALISIS DAN PERANCANGAN SISTEM. Analisis sistem bertujuan untuk mengidentifikasi permasalahan

1.1 Latar Belakang Masalah

BAB III ANALISIS PRAKTEK KERJA LAPANGAN. bagian-bagian komponennya dengan maksud untuk mengidentifikasikan dan

BAB 4 IMPLEMENTASI DAN EVALUASI. Dalam perancangan program Spesifikasi sistem yang digunakan saat

Pengantar Pemrograman dengan Bahasa Java

Mengenal Pemrograman Web Dengan JSP

TEKNIK KOMPILASI. Firrar Utdirartatmo

BAB IV IMPLEMENTASI DAN PENGUJIAN APLIKASI. Sistem pengolahan data merupakan satu kesatuan kegiatan pengolahan

AP2B-Dini Triasanti KONSEP DASAR PYTHON

BAB III METODOLOGI 3.1 Analisis Kebutuhan Sistem Kebutuhan Perangkat Keras

APLIKASI INVENTARIS BUKU UNTUK PERPUSTAKAAN BERBASIS WEB. Sir Kalifatullah Ermaya. Abstrak

BAB I PENDAHULUAN. komputer adalah teknik komando/instruksi untuk memerintahkan. komputer. Bahasa pemrograman ini merupakan suatu himpunan dari

BAB IV IMPLEMENTASI DAN EVALUASI. keras dan perangkat lunak untuk sistem ini adalah sebagai berikut :

SISTEM INFORMASI LABORATORIUM KOMPUTER UKRIDA

U U U UC-17 Skenario normal I Skenario alternatif I

BAB 4 IMPLEMENTASI DAN EVALUASI

@UKDW BAB 1 PENDAHULUAN

BAB III METODOLOGI PENELITIAN

Bahasa Pemrograman Python

BAB V IMPLEMENTASI SISTEM

1.1 Latar Belakang. 1 Universitas Kristen Maranatha

Transkripsi:

BAB V IMPLEMENTASI DAN PENGUJIAN Berdasarkan analisis pada BAB III dan perancangan pada BAB IV, telah diimplementasikan autograder Phobos untuk melakukan penilaian tugas pemrograman berupa source code secara otomatis. Implementasi dan pengujian Phobos masing-masing akan dibahas pada Subbab 45.1 dan 45.2. 5.1. Implementasi Dalam Tugas Akhir ini, telah diimplementasikan sebuah penilai source code otomatis dengan nama Phobos. Penjelasan mengenai lingkungan pengembangan dan implementasi Phobos akan diberikan pada Subbab 5.1.1. Batasan implementasi akan dibahas pada Subbab 5.1.2, sementara detil implementasi akan dibahas pada Subbab 5.1.3 hingga Subbab 5.1.5. 5.1.1 Lingkungan Implementasi dan Pengembangan Autograder Phobos yang diimplementasikan dalam platform Java Runtime Environment dan PHP dikembangkan dalam lingkungan perangkat keras sebagai berikut: 1. Prosesor Intel Pentium M 1,7 GHz. 2. Memory DDR2 512 MB. 3. Harddisk IDE 60 GB. Spesifikasi perangkat lunak yang dibutuhkan untuk implementasi autograder Phobos dalam platform Java Runtime Environment dan PHP yaitu: 1. Java Runtime Environment 1.6.0. 2. Java Platform, Standard Edition Development Kit 1.6.0 3. Eclipse IDE Europa 3.2.0. 4. Web Server Apache 2.2.0 Autograder Phobos telah diimplementasikan pada sistem operasi Windows XP SP2 Professional dan Ubuntu Linux rilis Dapper Drake 6.06 LTS. V-1

V-2 5.1.2 Batasan Implementasi Batasan dalam implementasi source code autograder yang diberi nama Phobos dapat dijabarkan sebagai berikut: 1. Saat ini Phobos hanya dapat menangani deteksi pada source code dalam bahasa pemrograman LISP dan Pascal sesuai dengan analisis pada Subbab 3.1. 2. File serahan tugas berupa source code yang ditangani berjumlah 1 (satu) file untuk 1 (satu) siswa pada 1 (satu) tugas. 3. Spesifikasi tugas yang dapat dinilai mengikuti panduan pada LAMPIRAN J. 4. Penyusunan dan penghapusan file-file source code dilakukan secara manual. 5.1.3 Implementasi Kelas Setiap kelas pada komponen autograder engine akan diimplementasikan dalam bahasa Java. Sebuah kelas akan diimplementasikan dalam sebuah file. Kelas-kelas telah diimplementasikan sesuai dengan daftar kelas yang telah dirancang pada Subbab 4.1. Pada saat implementasi, modul diorganisasi menurut package yang sesuai. Seluruh kelas berada dalam package akar phobos. Di dalam package phobos terdapat subpackage manager, marker dan langdef. Subsistem Manager diimplementasikan dalam subpackage manager. Kelas-kelas penilai diorganisasi dalam subpackage marker, yang berisi subpackage oracle sebagai implementasi subsistem Oracle dan subpackage whiteboxmarkers sebagai implementasi subsistem WhiteboxMarkers. Kelas-kelas prosesor bahasa pemrograman diorganisasi dalam subpackage langdef, yang berisi subpackage lisp untuk kelas-kelas interpreter Lisp dan subpackage package untuk kelas-kelas interpreter Pascal. 5.1.4 Implementasi Antarmuka dan Penyimpanan Data Persisten Antarmuka untuk komponen aplikasi web dan aplikasi backend berbeda. Aplikasi front-end diimplementasikan menggunakan bahasa pemrograman PHP tanpa rancangan kelas khusus. Pada aplikasi web, setiap halaman web diimplementasikan secara fisik sebagai satu buah file HTML yang terpisah dari kode yang akan dieksekusi bila ada aksi yang dilakukan user. Implementasi tampilan pada aplikasi web sesuai dengan perancangan pada Subbab 4.2. Komponen autograder engine tidak memiliki antarmuka, karena komponen ini memang dirancang untuk tidak digunakan langsung oleh pengguna, melainkan eksekusinya di-trigger oleh aplikasi web seperti eksekusi perintah pada shell, sehingga antarmuka tidak diperlukan.

V-3 Penyimpanan data persisten telah diimplementasikan sebagai file dan direktori pada file system dalam sistem operasi. Setiap file merepresentasikan instansi baru, dengan identitas penanda pada nama file. Seluruh file yang dibutuhkan untuk proses penilaian diletakkan di dalam folder resources, termasuk skema penilaian (subdirektori schemas), laporan nilai diletakkan (subdirektori report) dan serahan tugas (subdirektori source). Seluruh peletakan data persisten diatur menggunakan file konfigurasi yang terpisah dan dapat diubah dengan mudah di masa mendatang. 5.1.5 Implementasi Interpreter Spesifik Bahasa Pemrograman Pada Subbab ini akan dibahas mengenai bagaimana interpreter untuk tiap bahasa pemrograman diimplementasikan dalam Phobos. Pada Subbab ini juga akan dibahas mengenai bagaimana interpreter bahasa pemrograman baru dapat dikembangkan dan ditambahkan ke dalam Phobos agar dapat menangani bahasa pemrograman baru. 5.1.5.1 Proses Pengembangan Interpreter Sebagaimana telah dibahas pada bab 3.3.6, pemroses bahasa pemrograman dalam Phobos akan mencakup pengembangan interpreter untuk tiap bahasa pemrograman yang ditangani. Sampai dengan tahap implementasi, rancangan yang telah dimiliki adalah rancangan untuk interpreter generik. Pengembangan interpreter juga direncanakan akan dibantu oleh generator parser Antlr. Antlr dapat membuat Lexer dan Parser secara otomatis dari grammar sebuah bahasa pemrograman, dan juga TreeParser untuk memproses pohon sintaks abstrak hasil proses parsing. Pengembangan interpreter dimulai dari menemukan grammar bahasa pemrograman. Grammar dapat diperoleh dari membuat sendiri grammar berdasarkan spesifikasi bahasa yang bersangkutan, atau menggunakan grammar yang telah tersedia. Grammar yang dibutuhkan untuk pembuatan interpreter ada tiga jenis, yaitu grammar leksikal untuk Lexer, grammar sintaksis untuk Parser dan tree grammar untuk TreeParser. Pengembang Antlr telah menyediakan grammar untuk berbagai bahasa pemrograman yang umum digunakan, di antaranya Pascal, C, C++, C#, Java, dan Python. Berdasarkan ketiga grammar ini, Antlr dapat membangkitkan kelas prosesor pohon sintaks abstrak (Lexer, Parser dan TreeParser) secara otomatis. Proses pembuatan interpreter selanjutnya dilakukan berdasarkan trial and error. Literatur, artikel dan source code yang ditemukan serta mata kuliah yang diikuti pada umumnya hanya membahas topik kompilasi sampai dengan teknik parsing untuk membangkitkan pohon

V-4 sintaks abstrak. Informasi mengenai pemrosesan pohon sintaks abstrak untuk menghasilkan efek eksekusi yang diharapkan sangat sedikit. Sebenarnya, interpreter pertama yang dicoba untuk dikembangkan adalah interpreter untuk bahasa Java, dengan pertimbangan bahwa telah tersedia grammar dan contoh pengolahan pohon sintaks abstrak dalam bentuk pemeriksa pola Checkstyle. Pada percobaan pertama ini, proses interpretasi bahasa Java dicoba dilakukan sepenuhnya dengan penelusuran (treewalking) terhadap pohon sintaks abstrak. Pada akhirnya pengembangan interpreter Java dibatalkan, karena grammar untuk bahasa Java amat rumit sehingga dengan demikian interpreter bahasa Java dinilai sebagai awal usaha pengembangan yang salah. Upaya pengembangan interpreter dilanjutkan dengan pengembangan interpreter untuk bahasa Lisp, yang dinilai lebih sederhana. Grammar Lisp tidak tersedia pada situs pengembang Antlr. Grammar Lisp yang tersedia yaitu grammar leksikal dan sintaksis yang telah dibuat oleh Cynthia Kustanto [KUS07] untuk kepentingan deteksi plagiarisme otomatis. Grammar leksikal dan sintaksis yang dikembangkan ini dibatasi hanya pada konsep dan fitur yang digunakan pada pengajaran pemrograman dasar S1-IF-ITB, karena spesifikasi bahasa GNU Common Lisp formal meliputi sekitar 1000 (seribu) konstruksi, makro dan fungsi [STE90]. Grammar yang disederhanakan ini hanya mencakup sekitar 30 keyword fungsi dan konstruksi seperti tipe data dasar dan list saja. Meskipun harus dimodifikasi secara menyeluruh untuk kepentingan eksekusi, grammar Lisp ini akhirnya dapat digunakan dalam proses interpretasi. Pada tahap ini, diperoleh kesimpulan bahwa fitur-fitur yang akan diimplementasikan hanya fitur-fitur yang digunakan pada pengajaran pemrograman dasar S1-IF-ITB. Proses interpretasi yang dilakukan sepenuhnya berdasarkan penelusuran pohon sintaks abstrak saja, sementara fungsi diimplementasikan sebagai kelas-kelas untuk menyeragamkan proses eksekusi program. Spesifikasi interpreter Lisp pada Phobos yang telah dikembangkan akan diberikan pada LAMPIRAN H. Interpreter yang dikembangkan selanjutnya adalah interpreter untuk bahasa Pascal. Grammar yang digunakan untuk bahasa Pascal adalah grammar yang dikembangkan oleh Hakki Dogusan berdasarkan spesifikasi oleh Wirth [WIR73]. Grammar yang telah tersedia pada situs pengembang Antlr ini terdiri dari grammar leksikal, sintaksis dan tree grammar, walaupun tree grammar yang ada masih belum lengkap. Bersama dengan grammar tersebut telah tersedia pula kerangka kelas untuk hampir seluruh aturan gramatik Pascal. Pada awalnya pengembangan interpreter diusahakan untuk dilakukan hanya berdasarkan penelusuran pohon saja, namun pada saat penulisan kode, menjadi jelas bahwa dibutuhkan kelas-kelas khusus

V-5 untuk merepresentasikan behaviour program saat runtime. Kelompok kelas baru ini kemudian dinamai dengan kelas eksekusi. Pembangkitan objek-objek eksekusi ini dilakukan pada saat penelusuran pohon dengan bantuan tree grammar. Perancangan kelas-kelas eksekusi ini akan dijelaskan secara lebih mendetil pada Subbab 5.1.5.2, sementara spesifikasi interpreter Pascal pada Phobos yang telah dikembangkan akan diberikan pada LAMPIRAN I. Pengembangan interpreter untuk suatu bahasa membutuhkan cukup banyak waktu dan upaya. Sumber daya yang digunakan berbanding lurus terhadap tingkat kerumitan bahasa yang hendak diimplementasikan. Pada Tugas Akhir ini, diputuskan untuk menghentikan proses pengembangan interpreter sampai dengan bahasa Lisp dan Pascal saja, dengan pembahasan teknis mengenai pengembangan interpreter bahasa pemrograman baru pada LAMPIRAN G. 5.1.5.2 Perancangan Interpreter Secara umum, modul interpreter pada Phobos terbagi ke dalam beberapa lapisan, yaitu lapisan antarmuka, lapisan pemroses pohon sintaks abstrak, dan lapisan eksekusi. Arsitektur implementasi interpreter Phobos secara umum dapat dilihat pada Gambar V-1. Antarmuka Interpreter PhobosLisp LispInterpreter PascalInterpreter PhobosPascal Pemroses Pohon Sintaks Abstrak LispParser PascalParser LispObjectStream PascalTreeParser LispLexer PascalLexer Eksekusi LispLibrary LispObject PascalNamedBlock PascalScope LispFunction PascalFunction PascalProcedure Gambar V-1 Arsitektur Interpreter Phobos

V-6 Antarmuka interpreter menghubungkan implementasi interpreter pada sistem lain, baik sistem autograder maupun sebagai interpreter mandiri. Antarmuka interpreter pada Phobos berfungsi untuk mengabstraksikan proses parsing dan eksekusi program terhadap sistem penilai otomatis, sehingga sistem dapat berjalan dengan secara seragam untuk seluruh bahasa yang ada. Proses input/output kepada program juga diimplementasikan. Antarmuka interpreter kepada autograder ini diimplementasikan sebagai sebuah kelas abstrak Interpreter. Implementasi interpreter untuk masing-masing bahasa pemrograman terdapat pada kelas-kelas turunan dari Interpreter, yaitu LispInterpreter dan PascalInterpreter. Dengan adanya lapisan antarmuka dalam modul interpreter ini, timbul pemikiran agar interpreter Phobos dirancang agar dapat dipergunakan tidak hanya dalam konteks penilaian otomatis. Interpreter Phobos dirancang untuk dapat digunakan secara mandiri agar dapat dipergunakan oleh siswa pada saat berlatih membuat program atau untuk mendukung aplikasi lainnya. Antarmuka interpreter sebagai sistem mandiri untuk interpreter Lisp diimplementasikan oleh kelas PhobosLisp, dan interpreter Pascal oleh PhobosPascal. Pemroses pohon sintaks abstrak adalah kelas-kelas yang dibangkitkan secara otomatis oleh Antlr. Bagian ini terbagi ke dalam tiga kelompok menurut tahap-tahap awal interpretasi, yaitu kelas Lexer untuk tahap analisis leksikal, kelas Parser untuk tahap analisis sintaks dan kelas TreeParser untuk tahap treewalking. Kelas Parser menggunakan kelas Lexer untuk membangkitkan pohon sintaks abstrak dari source code yang diberikan. Kedua kelas ini dibangkitkan secara otomatis oleh Antlr dari grammar bahasa pemrograman yang terkait, yaitu pada file lisp.g dan pascal.g. Lexer dan parser untuk Lisp bernama LispLexer dan LispParser. Lexer dan Parser untuk Pascal bernama PascalLexer dan PascalParser. Kelas TreeParser menerima pohon sintaks abstrak dan kemudian melakukan penelusuran terhadap pohon tersebut. Pada proses interpretasi, treewalking dilakukan untuk membangkitkan objek-objek eksekusi dari pohon sintaks abstrak tersebut. Kelas ini dibangkitkan secara otomatis oleh Antlr dari tree grammar bahasa pemrograman yang terkait, yaitu pada file lisp.tree.g dan pascal.tree.g. Kelas TreeParser untuk Lisp dinamai LispObjectStream, sementara untuk Pascal dinamai PascalTreeParser. Detil grammar dan tree grammar untuk Lisp dan Pascal diberikan pada Lampiran H. Pada lapisan eksekusi terdapat kelas-kelas implementasi untuk setiap aturan grammar bahasa pemrograman beserta library dasar yang disediakan untuk setiap bahasa pemrograman. Kelas-kelas eksekusi merupakan instansiasi dinamik dari tiap konstruksi pohon sintaks

V-7 abstrak. Kelas-kelas eksekusi harus dibuat terpisah untuk menangani proses saat runtime seperti penanganan scope, pembuatan tabel simbol, stack eksekusi atau parameter binding. Jumlah kelas pada layer ini sebanding dengan kerumitan bahasa pemrograman yang bersangkutan secara konseptual. Jumlah kelas dapat juga diperkirakan dari jumlah aturan produksi simbol nonterminal dan fungsi library yang diimplementasikan. Bahasa pemrograman Lisp dapat digolongkan sederhana karena hanya memiliki sembilan aturan produksi simbol nonterminal. Untuk implementasi interpreter Lisp, terdapat 42 kelas untuk kelas eksekusi. Sebanyak 37 dari antara kelas runtime Lisp merupakan implementasi library. Bahasa Pascal tergolong bahasa pemrograman yang lebih rumit dengan aturan produksi simbol nonterminal sebanyak 90 aturan. Dengan hanya tiga kelas di antaranya merupakan kelas implementasi library, kelas eksekusi untuk Pascal berjumlah 102 buah. Heuristik ini dapat dipergunakan untuk memperkirakan jumlah kelas eksekusi sebuah bahasa dan upaya yang akan dikeluarkan untuk membuat modul interpreter bahasa pemrograman baru. Sebagai gambaran, sebuah bahasa pemrograman yang cukup rumit seperti Java memiliki 145 aturan grammar dapat diperkirakan akan memiliki sekitar 120-150 kelas runtime apabila akan diimplementasikan secara penuh. Detil perancangan kelas selengkapnya untuk Interpreter Lisp Phobos beserta grammar yang digunakan akan dibahas lebih dengan lebih mendetil pada Lampiran H dan Lampiran I. Berikut ini adalah sebuah contoh proses perancangan kelas eksekusi dari aturan grammar bahasa pemrograman. Diberikan sebuah produksi simbol non terminal <ifstatement> dalam Pascal sebagaimana tertera pada Kode V-1. Dalam perancangan kelas runtime terdapat heuristik bahwa satu simbol nonterminal menjadi satu kelas. Jika satu simbol nonterminal <B> merupakan produksi dari simbol nonterminal <A>, maka dapat dibuat kelas <B> sebagai turunan dari kelas A. Dalam contoh di atas, rule statement dapat dibuat sebagai kelas parent bernama PascalStatement. Karena telah diketahui bahwa statement dalam Pascal dapat dieksekusi, maka dapat ditambahkan metode executestatement() ke dalam kelas PascalStatement. <statement> ::= <simplestatement> <structuredstatement> <structuredstatement> ::= <compoundstatement> <conditionalstatement> <repetetivestatement> <withstatement> <ifstatement> ::= STRUCT_IF <expression> PREP_THEN <statement> (PREP_ELSE <statement>) Kode V-1 Aturan Produksi Simbol Nonterminal <ifstatement> pada Pascal

V-8 Berdasarkan aturan produksi seperti di atas, maka dapat dibuat rancangan kelas eksekusi PascalIfStatement sebagai turunan dari kelas PascalStatement. Kelas ini akan memiliki tiga atribut, yaitu condexpression yang bertipe PascalExpression, thenstatement dan elsestatement yang bertipe PascalStatement. Kelas PascalExpression merupakan kelas yang merepresentasikan simbol nonterminal <expression> dan dapat dievaluasi sehingga memiliki method evaluateexpression. Metode executestatement pada PascalIfStatement dapat kemudian diimplementasikan sebagaimana tertera pada Kode V-2. public void executestatement() { if (condexpression.evaluateexpression()) { thenstatement.executestatement(); } else if (elsestatement!= null) { elsestatement.executestatement(); } } Kode V-2 Contoh implementasi metode executestatement pada kelas PascalIfStatement 5.1.6 Implementasi Ekstensibilitas Penilaian dan Bahasa Pemrograman Sebagaimana telah ditentukan dalam kebutuhan non fungsional pada Subbab 3.3.3, ekstensibilitas merupakan salah satu faktor penentu dalam pengembangan Phobos. Autograder Phobos dirancang agar dapat diperluas dengan mudah tanpa banyak melakukan perubahan pada modul-modul utama. Perluasan yang dapat dilakukan adalah penambahan jenis penilaian baru dan penambahan bahasa pemrograman yang dapat ditangani. Pengembangan Phobos untuk menangani jenis penilaian baru dapat dilakukan dengan membuat turunan baru dari kelas Marker. Kelas turunan baru ini harus mengimplementasikan method executemarking untuk melakukan penilaian. Jika penilaian yang dilakukan dapat diimplementasikan menggunakan fasilitas yang sudah ada (notifikasi setiap kali token tertentu muncul) maka tidak perlu dibuat kelas tambahan lain. Tidak ada perubahan kode yang harus dilakukan karena mekanisme loading kelas dilakukan secara dinamis, namun harus ditambahkan entri jenis penilaian baru pada metaskema yang sesuai dengan nama kelas implementasi Marker. Sebagai konvensi penamaan, nama implementasi penilai harus sama dengan jenis penilaian dengan penambahan sufiks -Marker di belakang nama tersebut.

V-9 Pengembangan Phobos untuk menangani bahasa pemrograman baru dapat dilakukan dengan menambahkan modul interpreter baru dengan mengikuti panduan pada LAMPIRAN G. Tidak ada perubahan kode yang harus dilakukan karena mekanisme loading interpreter dilakukan secara dinamis, namun harus ditambahkan entri bahasa pemrograman baru pada metaskema yang sesuai dengan nama kelas implementasi Interpreter. Sebagai konvensi penamaan, nama implementasi interpreter harus sama dengan nama bahasa pemrograman dengan penambahan sufiks -Interpreter di belakang nama tersebut. 5.2. Pengujian Pada Subbab ini akan diberikan penjelasan mengenai perancangan komponen autograder engine pada Phobos. Autograder engine adalah komponen yang bertanggung jawab melakukan penilaian otomatis pada serahan tugas yang diberikan berdasarkan trigger dari aplikasi front-end. Sebagai komponen pada logic tier, komponen ini mengimplementasikan dari seluruh use case sistem : membuat skema penilaian, menilai tugas source code, melihat laporan nilai, dan menghapus hasil penilaian. Rancangan kelas-kelas dalam autograder engine dapat dilihat pada Gambar 4.1. 5.2.1 Lingkungan Pengujian Lingkungan pengujian Phobos secara keseluruhan dapat dilihat pada Gambar V-2. Phobos terletak pada layer Autograder Phobos. Lingkungan pengujian membentuk jaringan intranet lokal. Server pengujian yang digunakan merupakan server tempat terinstalasinya LMS milestone (lihat Subbab 3.1). Server pengujian tersebut memiliki spesifikasi perangkat keras sebagai berikut: 1. Processor Intel Pentium 4 3 GHz; 2. Memori 512 MB DDR; 3. Harddisk IDE 120 GB; Spesifikasi perangkat lunak yang dimiliki server pengujian tersebut yaitu sebagai berikut: 1. Sistem Operasi Ubuntu Linux 7.04 2. Java Platform, Standard Edition Development Kit 1.6.0 3. Web Server Apache 2.2.3 4. Basis Data MySQL 5.0.38.

V-10 Gambar V-2 Lingkungan pengujian Phobos Aplikasi web Phobos dapat diakses dari komputer lain pada jaringan intranet lokal tersebut melalui alamat http://milestone.if.itb.ac.id/phobos/. 5.2.2 Persiapan Pengujian Sebelum dilakukan pengujian, dilakukan pengumpulan data uji berupa source code yang ditulis secara manual dan beberapa source code yang terpilih dari hasil praktikum IF1282 Dasar Pemrograman. Setelah itu dilakukan instalasi aplikasi backend dan aplikasi web ke komputer dengan spesifikasi yang telah diuraikan pada Subbab 5.2.1. Penjelasan detil mengenai data uji dan instalasi diuraikan pada Subbab 5.2.2.1 dan Subbab 5.2.2.2. 5.2.2.1 Data Uji Pengujian untuk penilai otomatis dilakukan menggunakan sejumlah source code yang dibuat secara manual dan sejumlah source code yang dipilih secara khusus dari kumpulan hasil praktikum IF2182 Dasar Pemrograman pada semester II 2006/2007. Tidak seluruh source code yang tersedia dari praktikum dapat diuji menggunakan Phobos, karena penilaian menggunakan Phobos hanya dapat dilakukan dengan beberapa prekondisi tertentu. Untuk source code dalam bahasa LISP, penilaian yang melibatkan uji eksekusi hanya dapat dilakukan pada fungsi-fungsi yang memiliki nama yang seragam. Source code dalam bahasa Pascal hanya dapat dieksekusi apabila tingkah laku (behaviour) orientasi barisnya seragam.

V-11 5.2.2.2 Instalasi Prototipe Sebelum pengujian dilakukan, terlebih dahulu dilakukan instalasi Phobos ke server yang telah dideskripsikan pada Subbab 5.2.1. Pada Subbab ini, akan dijelaskan cara instalasi Phobos sebagai bagian dari persiapan pengujian. Berikut ini diuraikan langkah-langkah instalasi Phobos: 1. Periksa instalasi Java Virtual Machine dan Apache/PHP pada server, lakukan instalasi apabila belum terdapat aplikasi tersebut. 2. Copy direktori autograder engine Phobos ke server yang dituju. 3. Copy direktori aplikasi web Phobos ke server yang dituju. Tempatkan di direktori yang bisa diakses melalui protokol http. Terdapat file dengan nama config.inc.php pada direktori aplikasi web tersebut. Pada file tersebut, isi path tempat penyimpanan direktori aplikasi autograder engine, source code dan skema penilaian pada file konfigurasi tersebut. 5.2.3 Kasus Uji Pada Subbab ini, dibahas mengenai kasus uji untuk pengujian unit, pengujian fungsional berdasarkan use case, dan pengujian non-fungsional. Detil setiap pengujian diberikan pada Subbab.5.2.3.1, Subbab 5.2.3.2 dan Subbab 5.2.3.3. 5.2.3.1 Pengujian Unit Untuk menguji fungsionalitas Phobos, dilakukan pengujian untuk unit yang mengimplementasikan fungsionalitas utama pada aplikasi autograder engine. Pengujian unit dilakukan untuk kelas SchemaManager, MarkingManager dan ReportManager. Detil pengujian unit untuk kelas-kelas ini dapat dilihat pada Tabel V-1. Selain itu, pengujian unit dilakukan untuk modul interpreter LISP dan Pascal secara terpisah. Detil pengujian unit interpreter dapat dilihat pada Subbab H.6 dan Subbab I.6. Tabel V-1 Pengujian Unit untuk Kelas-Kelas Phobos No Unit Deskripsi Data masukan Hasil uji 1. SchemaManager Membuat definisi skema Skema penilaian : Diterima penilaian baru penilaian dengan eksekusi, bobot 100%, 5 data uji Skema penilaian : Diterima penilaian dengan eksekusi, bobot 80%, 5 data uji, SLOC, bobot 20%. Membuka definisi skema Schema_id = 1 Diterima penilaian Schema_id = 7 Diterima 2 MarkingManager Membaca direktori berdasarkan Directory = prak1 Diterima 3 ReportManager Menyimpan laporan penilaian baru parameter Directory =prak7 Diterima MarkingResult : [81,0.81] Diterima MarkingResult : [100,1]

V-12 No Unit Deskripsi Data masukan Hasil uji MarkingResult : [78,3.271] Diterima MarkingResult : [97, 4.891] Membuka Laporan Penilaian Schema id = 7 Diterima Source dir = prak7 Schema id = 1 Source dir = prak1 Diterima 5.2.3.2 Pengujian Fungsional berdasarkan Use Case Pada Subbab ini akan dibahas mengenai pengujian aplikasi berdasarkan use case sebagaimana tercantum pada Subbab 3.3.1. Pembahasan mengenai uji unit untuk tiap use case akan dijabarkan pada Tabel V-2 Tabel V-2 Hasil Pengujian Use Case terhadap Phobos No Use Case Function Data masukan Hasil 1. PHB-UC-01 Membuat definisi skema Spesifikasi tugas dengan bahasa penilaian pemrograman LISP, untuk soal Mean, dengan data uji diberikan secara manual dan penilaian yang telah ditentukan sebelumnya. Spesifikasi tugas dengan bahasa pemrograman Pascal, untuk soal HitungIPK, dengan data uji diberikan secara manual. 2. PHB-UC-02 Penilaian otomatis pada kumpulan source code untuk solusi model dan sekumpulan source code yang ditulis secara manual untuk menunjukkan kekurangan pada kasuskasus tertentu. Skema penilaian yang sudah ada (Mean-LISP) diedit dengan mengubah bobot perhitungan nilai akhir di antara penilaian-penilaian. Skema penilaian Mean-LISP, dan source code solusi model (eksekusi sempurna, memenuhi konvensi penulisan kode, cukup sederhana dan efisien). Skema penilaian Mean-LISP, dan source code solusi model bersama tiga source code program benar namun tidak sempurna (kasus source code tidak memenuhi konvensi penulisan kode, source code rumit, dan source code tidak efisien). Skema penilaian Mean-LISP, dan source code solusi model bersama tiga source code program lulus kompilasi dengan keluaran yang salah pada satu, dua dan semua kasus uji.

V-13 No Use Case Function Data masukan Hasil Skema penilaian Mean-LISP, dan source code model bersama empat source code program gagal kompilasi pada kasus tanda kurung tidak berimbang, variabel tidak dikenal, fungsi tidak dikenal, jumlah parameter tidak sesuai. 3. PHB-UC-03 Melihat hasil penilaian otomatis pada kumpulan source code yang telah dijalankan sebelumnya. 4. PHB-UC-04 Menghapus laporan nilai dari proses penilaian yang telah dijalankan sebelumnya. Skema penilaian Mean-LISP, dan source code model bersama dua source code program yang mengalami runtime error pada kasus tanda kurung rekursif tanpa basis, dan kesalahan tipe masukan fungsi. Skema penilaian HitungIPK-Pascal, dan source code model bersama enam source code program gagal kompilasi pada kasus kesalahan sintaks (titik koma tidak ada, begin-end tidak berimbang), tipe tidak dikenal, variabel tidak dikenal, fungsi/prosedur tidak dikenal, definisi ulang simbol yang telah didefinisikan. Skema penilaian HitungIPK-Pascal, dan source code model bersama empat source code program runtime error pada kasus akses indeks array yang di luar batas, pembagian oleh nol, infinite loop, variabel belum diinisialisasi, assignment pada variabel yang berbeda tipe. Kumpulan source code Pascal dari mata kuliah IF1282, jumlah source code 120. Kumpulan source code Pascal dari mata kuliah IF1282, jumlah source code 120. 5.2.3.3 Pengujian Non-Fungsional Pada Subbab ini akan dibahas mengenai pengujian aplikasi berdasarkan kebutuhan non fungsional sebagaimana telah tercantum pada Subbab 3.3.3. Detil hasil pengujian tiap spesifikasi dapat dilihat pada Tabel V-3.

V-14 Tabel V-3 Hasil Pengujian Kebutuhan Nonfungsional Phobos Nomor SRS PHB-SRS- NF-01 PHB-SRS- NF-02 PHB-SRS- NF-03 Spesifikasi Keterangan Hasil uji Aksesibilitas Efisiensi Ekstensibilitas Layanan autograder dan hasil penilaiannya dapat diakses dari komputer manapun yang terhubung pada internet. Autograder harus mampu menilai source code yang mencapai ratusan dalam waktu yang dapat ditoleransi, yaitu tidak lebih dari setengah hari kerja untuk kelas berisi seratus mahasiswa. Autograder dapat dikembangkan lebih lanjut agar dapat menangani bahasa pemrograman lain tanpa mengembangkan ulang seluruh autograder. Phobos dapat diakses dari berbagai komputer melalui web browser. Dengan menggunakan lingkungan pengujian pada Subbab BAB I, Phobos mampu menilai 100 buah source code di bawah 10 menit. Untuk menangani bahasa pemrograman lain, hanya perlu menambahkan modul interpreter baru (lihat Subbab 5.1.5 untuk detil implementasi). 5.2.4 Hasil Pengujian Pada Subbab ini akan dibahas mengenai hasil-hasil pengujian terhadap aplikasi Phobos. Berdasarkan pengujian, Phobos dapat memenuhi setiap spesifikasi fungsional dan nonfungsional yang didefinisikan pada Subbab 3.3. Berdasarkan penjelasan di Subbab 1.1, hasil penilaian otomatis dapat membantu pengajar untuk menentukan nilai akhir siswa dari latihan pemrograman yang diberikan secara frequent. Pengajar dapat melakukan variasi terhadap proses penilaian yang dilakukan Phobos dengan cara mengubah skema penilaian yang diberikan. Secara umum, source code yang tidak lulus parsing akan langsung mendapat nilai 0 dengan keterangan kesalahannya. Nilai hasil eksekusi sebanding dengan jumlah butir uji yang berhasil dijalankan dengan baik. Karena skema penilaian yang digunakan umumnya memberikan proporsi besar pada nilai pengujian (seperti halnya pada proses inspeksi kode oleh pengajar), nilai eksekusi sangat menentukan nilai akhir siswa. Penilaian untuk aspekaspek whitebox umumnya menggunakan aturan penilaian relatif terhadap source code lainnya atau aturan biner, nilai penuh jika syarat sudah dipenuhi. Pengujian menggunakan source code yang sengaja digunakan untuk menguji fitur penilai spesifik dapat menunjukkan bahwa penilai-penilai ini telah dapat bekerja dengan baik.