• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 2 LANDASAN TEORI"

Copied!
30
0
0

Teks penuh

(1)

6

LANDASAN TEORI

2.1 Teori Umum

2.1.1 Definisi Data dan Informasi

M enurut Rainer dan Cegielski (2010, p10), data adalah deskripsi dasar dari suatu benda, kejadian, kegiatan, dan transaksi yang direkam, diklasifikasikan, dan disimpan tetapi tidak diorganisasikan untuk menyampaikan arti yang spesifik.

M enurut Whitten dan Bentley (2005, p21), data adalah fakta mentah mengenai benda, tempat, dan kejadian yang penting dalam sebuah organisasi.

M enurut Rainer dan Cegielski (2010, p10), informasi adalah data yang telah diorganisasikan sehingga data-data tersebut mempunyai arti dan nilai bagi penerima.

M enurut Whitten dan Bentley (2005, p21), informasi adalah data yang telah diproses atau diorganisasikan menjadi bentuk yang lebih berarti bagi seseorang.

Sehingga dapat disimpulkan bahwa data merupakan hasil observasi mengenai benda, tempat, ataupun kejadian penting yang direkam, diklasifikasikan, dan disimpan tetapi tidak menyampaikan arti yang spesifik; dan informasi merupakan data yang telah diorganisasikan atau diproses untuk menyampaikan arti yang lebih spesifik bagi penerima.

(2)

2.1.2 Definisi Database

M enurut Thomas Connolly dan Begg (2005, p15), database adalah suatu kumpulan data yang berhubungan secara logika dan dirancang untuk memenuhi kebutuhan informasi di dalam organisasi.

M enurut Whitten dan Bentley (2005, p518), database secara sederhana adalah kumpulan file yang saling terkait.

Sehingga dapat disimpulkan bahwa database merupakan kumpulan data atau file yang saling berhubungan dan terkait kemudian disimpan dan disusun dengan rapi untuk memenuhi kebutuhan informasi suatu organisasi.

2.1.3 Arsitektur Database

M enurut Thomas Connolly dan Begg (2005, p34), terdapat tiga tingkatan arsitektur database (Three-Level ANSI-SPARC Architecture) yaitu:

1. Tingkat Eksternal (External Level)

Tingkat ini adalah tingkat yang menggambarkan view database yang ada pada user.

2. Tingkat Konseptual (Conceptual Level)

Tingkat ini adalah tingkat yang menggambarkan data yang disimpan dalam database dan hubungan antara data-data tersebut.

(3)

Tingkat ini adalah tingkat yang menggambarkan representasi fisik dari database yang ada pada komputer. Secara singkat, tingkat ini menggambarkan cara data disimpan dalam suatu database.

Tujuan utama dari tiga tingkat ini adalah untuk menggambarkan database yang independence tanpa mempengaruhi aplikasi yang terkait dengan database tersebut.

2.1.4 Database Management System (DBMS)

M enurut Thomas Connolly dan Begg (2005, p16), Database Management System adalah suatu sistem yang memungkinkan user untuk mendefinisikan, membuat, merawat, dan mengontrol akses di dalam database.

M enurut Connolly dan Begg (2005, p48), DBM S diharapkan dapat menyediakan sepuluh buah fungsi dan layanan, yaitu:

1. Data storage, retrieval, and update

DBM S harus menyediakan user kemampuan untuk menyimpan, mengambil, dan mengubah data.

2. A user-accessible catalog

DBM S harus menyediakan sebuah katalog yang berisikan deskripsi data item dan dapat diakses oleh user.

(4)

DBM S harus menyediakan sebuah mekanisme yang menjamin seluruh perubahan yang berhubungan dengan sebuah transaksi dapat dilakukan atau tidak.

4. Concurrency control services

DBM S harus menyediakan sebuah mekanisme yang menjamin database dapat di update dengan benar ketika lebih dari satu user melakukan update secara bersamaan terhadap database.

5. Recovery services

DBM S harus menyediakan sebuah mekanisme untuk memulihkan database apabila terjadi kerusakan atau kesalahan.

6. Authorization services

DBM S harus menyediakan sebuah mekanisme yang menjamin bahwa hanya user yang terotorisasi yang dapat mengakses database.

7. Support for data communication

DBM S harus mampu untuk diintegrasikan dengan software komunikasi sehingga dapat diakses dari lokasi yang jauh.

8. Integrity services

DBM S harus menyediakan sebuah sarana yang menjamin data di dalam database maupun pengubahan yang dilakukan terhadap data mengikuti aturan-aturan tertentu (constraint).

(5)

DBM S harus memiliki fasilitas yang mendukung struktur aktual dari database tidak tergantung terhadap software.

10. Utility services

DBM S seharusnya menyediakan serangkaian layanan seperti import facilities, dan index reorganization facilities.

M enurut Connolly dan Begg (2005, p26), DBM S memiliki beberapa keuntungan, yaitu:

1. M engurangi redundansi data

2. M engurangi inkonsistensi data

3. Pengaksesan data terhadap beberapa user pada waktu bersamaan

4. Integritas data tersimpan secara akurat

5. Jaminan keamanan yang mengatur user menggunakan hak akses

6. Standarisasi

7. M eningkatkan accessibility data. User dapat memperoleh data yang diinginkan menggunakan query language.

8. M eningkatkan produktifitas

9. M eningkatkan pemeliharaan melalui data independence

10. M eningkatkan concurrency

(6)

2.1.5 Jaringan Komputer

M enurut Rainer dan Cegielski (2010, p507), Jaringan komputer merupakan sebuah sistem yang menghubungkan komputer-komputer melalui media komunikasi sehingga data dapat dikirim di antara komputer-komputer tersebut.

Jaringan komputer sangat penting untuk perusahaan-perusahaan modern karena berbagai alasan. Pertama, sistem jaringan komputer membuat organisasi menjadi lebih fleksibel sehingga organisasi dapat beradaptasi terhadap cepatnya perubahan kondisi bisnis. Kedua, jaringan membuat perusahaan dapat berbagi hardware, aplikasi komputer, dan data di seluruh organisasi dan di antara organisasi berbeda. Ketiga, jaringan membuat karyawan yang terpencar secara geografis dan tim kerja untuk berbagi dokumen, ide, dan wawasan kreatif menjadi mungkin.

2.1.6 Client - Server Computing

M enurut Rainer dan Cegielski (2010, p511), Client - Server Computing menghubungkan dua atau lebih komputer dalam sebuah pengaturan sehingga sebagian mesin disebut server yang menyediakan jasa komputasi bagi PC-PC (Personal computer) user yang disebut client.

Client adalah sebuah aplikasi atau sistem yang mengakses layanan yang disediakan oleh server. Umumnya (namun tidak selalu), server berada pada sistem komputer yang berbeda sehingga untuk mengakses layanan tersebut client membutuhkan jaringan komputer.

(7)

Server adalah sebuah aplikasi atau sistem yang bertugas untuk melayani permintaan dari program lain (client). Tergantung kepada layanan komputasi yang disediakan, server dapat berupa sebuah database server, file server, mail server, dan lain-lain.

2.1.7 Unified Modeling Language (UML)

"Unified Modeling Language (UM L) adalah bahasa pemodelan standar untuk pengembangan software dan sistem" (Learning UM L 2.0, 2006).

M enurut Booch, et al (2005, p13), "UM L adalah bahasa untuk menulis blueprints perangkat lunak, memvisualisasi, menentukan, membangun, dan mendokumentasikan artifak dari s istem perangkat lunak intensif." UM L cocok untuk pemodelan sistem mulai dari sistem informasi perusahaan untuk aplikasi berbasis web bahkan untuk real time embedded software yang sulit sekalipun.

UM L 2.2 memiliki 14 macam diagram yang terbagi menjadi 2 kategori yaitu diagram struktur (structure diagrams) dan diagram perilaku (behaviour diagrams). Dari semua jenis diagram UM L, yang sering digunakan adalah Use Case Diagram, Sequence Diagram, dan Class Diagram.

2.1.7.1 Use Case Diagram

M enurut Booch, et al (2005, p39), "Use case diagram adalah pusat pemodelan perilaku sistem, subsistem, atau kelas. Setiap use case diagram menunjukkan kasus penggunaan dan aktor, dan juga hubungan di antaranya."

(8)

Interaksi antar aktor tidak diperlihatkan dalam use case diagram. Use case diagram terdiri dari:

a.

Use case

Sebuah use case menjelaskan sebuah aksi yang digambar dengan bentuk elips secara horizontal.

b. Aktor

Aktor merupakan orang, organisasi, atau sistem luar yang memainkan peran dalam satu atau lebih interaksi dengan sistem.

c.

System Boundary

System boundary adalah persegi yang mengelilingi use case untuk mengindikasikan lingkup dari sistem.

G ambar 1. Contoh Use Case Diagram

Setiap use case dapat memiliki use case description untuk menjelaskan secara lebih rinci tentang use case tersebut. Use case description biasa terdiri dari batasan, aktor, precondition, postcondition, informasi yang relevan, skenario utama, skenario

(9)

alternatif. Tetapi menurut Doun Rosenberg dan M att Stephens (2007, p76) membuat semuanya hanya akan menghabiskan waktu dan tidak berfokus pada bagian penting dari use case yaitu skenario utama dan skenario alternatif. Contoh use case description yang baik menurut Doun Rosenberg (2007, p78) adalah:

Sistem menampilkan halaman search. User menekan field author dan memasukkan nama author. User menekan tombol search. Sistem mencari buku yang authornya sesuai dengan masukan user kemudian menampilkan halaman search result.

Skenario Alternatif:

Tidak ada buku yang ditemukan : Sistem menampilkan halaman search not found.

2.1.7.2 Sequence Diagram

"Sequence Diagram adalah sebuah diagram yang menggambarkan urutan interaks i antara setiap bagian dalam sistem" (Russ M iles & Kim Hamilton, 2006).

Sequence diagram menggambarkan proses - proses atau objek - objek yang berbeda yang aktif secara simultan, digambarkan dengan garis parallel secara vertikal (lifelines), dan pesan yang ditukar antara mereka digambarkan sebagai panah horisontal sesuai dengan urutan terjadinya.

(10)

G ambar 2. Contoh dan notasi Sequence Diagram

2.1.7.3 Class Diagram

Class diagram menunjukkan class dari suatu sistem, hubungan antar class tersebut serta operasi dan atribut class.

Notasi – notasi yang terdapat pada class diagram adalah sebagai berikut:

1. Class

Class menggambarkan sekumpulan objek yang memiliki atribut dan operasi yang dikerjakan objek tersebut.

(11)

Aggregation menggambarkan hubungan antara dua atau lebih objek, dimana salah satu objek merupakan bagian dari objek lain.

3. Attribute

Attribute merupakan property dari class yang berisi tipe data yang dimiliki oleh instance dari suatu class.

4. Operation

Operation merupakan kegiatan – kegiatan yang dilakukan oleh suatu class.

5. Association

Association menggambarkan relasi antar-object / instance dari class. Pada umumnya association digambarkan sebagai garis antar dua class dimana pada salah satu ujung diletakkan tanda panah yang merupakan navigability.

6. Generalization

Generalization menggambarkan hubungan antara parent – child atau super class – sub class .

7. Dependency

Dependency menggambarkan relasi antar-object seperti association tetapi lebih lemah. Dependency menggambarkan bahwa suatu object memakai object lain pada suatu waktu.

(12)

G ambar 3. Contoh Class Diagram

2.1.8 Software-Development Life-Cycle

M enurut B.B.Agarwal (2010, p29), software-development life-cycle adalah proses terbentuknya sebuah sistem informasi yang dimulai dari konseptual ke implementasi.

Software-development life-cycle digunakan untuk membantu mengerti keseluruhan proses, membantu untuk merencanakan sumber daya yang digunakan, dan membantu untuk mengontrol jalannya proses. Software-development life-cyle terbagi menjadi lima

(13)

sampai sembilan tahap, minimal harus memiliki lima tahap dan paling banyak adalah sembilan tahap.

Salah satu bentuk software-development life-cycle yang paling sering digunakan adalah waterfall model.

Gambar 4 merupakan gambaran tahap-tahap Waterfall M odel.

G ambar 4. Waterfall Model

T ahap-tahap yang ada pada Waterfall model, yaitu: 1. Feasibility Study

(14)

Pada tahap ini dilakukan pendefinisian dari masalah, pengambilan keputusan yang terkait dengan masalah teknikal dan ekonomi, keuntungan yang diharapkan, sumber daya yang diperlukan, serta jadwal selesainya software.

2. Requirement Analysis and Specification

Pada tahap ini dilakukan pengumpulan data yang meliputi kebutuhan sistem serta detail kebutuhan organisasi. Selama tahap ini, struktur keseluruhan perangkat lunak telah ditetapkan.

3. Design and Specification

Pada tahap ini dilakukan perencanaan solusi untuk software dan pemecahan masalah. Setelah spesifikasi dan tujuan dari software ditentukan, developer akan mendesain atau mempekerjakan desainer untuk membuat sebuah rencana solusi. Rencana solusi meliputi komponen tingkat rendah, isu-isu implementasi algoritma, dan juga architectural view.

4. Coding and Module Testing

Pada tahap ini dilakukan penerjemahan rancangan yang sudah dibuat pada tahap sebelumnya menjadi kode program.

5. Integration and System Testing

Pada tahap ini dilakukan uji coba sistem yang telah dibuat. Sistem diuji untuk memastikan atau memverifikasi bahwa sistem bekerja sesuai dengan yang diharapkan.

(15)

6. Delivery and Maintenance

Pada tahap ini dilakukan pemasangan sistem dan pemeliharaan sistem secara berkala untuk memastikan sistem tetap berjalan sesuai dengan yang diharapkan.

2.1.9 Eight Golden Rules of Interface Design

M enurut Shneiderman dan Plaisant (2010, p88-89), terdapat delapan buah prinsip yang dinamakan "golden rules" yang dapat dipakai di sebagian besar sistem interaktif. Prinsip-prinsip ini yang berasal dari pengalaman dan sudah disempurnakan selama lebih dari dua dekade, memerlukan validasi dan penyesuaian untuk ruang lingkup desain yang spesifik. Berikut ini adalah delapan buah aturan emas tersebut:

1. Berusaha untuk konsisten

Aturan ini adalah aturan yang paling sering dilanggar, tetapi sulit untuk mengikuti aturan ini karena terdapat banyak bentuk konsistensi. Urutan aksi-aksi yang konsisten diperlukan pada situasi yang mirip; istilah-istilah yang sama harus dipakai di prompts, menu-menu, dan layar bantuan; dan warna, tata letak / layout, kapitalisasi, font, dan lainnya harus dipakai dengan konsisten.

2. M emenuhi kegunaan universal

Pengguna aplikasi sangat beragam sehingga dalam merancang antarmuka harus mempertimbangkan perbedaan-perbedaan yang meliputi perbedaan usia, perbedaan keterampilan, kebutuhan khusus, dan variasi teknologi. M enambah beberapa fitur seperti penjelasan untuk pemula, dan fitur seperti shortcut untuk user yang sudah berpengalaman.

(16)

3. M emberikan feedback yang informatif

Setiap aksi yang dilakukan oleh user seharusnya disertakan feedback dari sistem. Untuk aksi kecil atau yang tidak terlalu penting dan sering dilakukan, dapat diberikan respon yang sederhana, sedangkan untuk aksi besar atau yang penting dan jarang dilakukan, respon yang diberikan harus lebih terlihat seperti memakai suara atau lainnya.

4. M erancang dialog yang memberikan penutupan / keadaan akhir (closure)

Urutan dari aksi-aksi harus diatur kedalam kelompok awal, tengah, dan akhir. Feedback yang informatif untuk setiap penyelesaian sekumpulan aksi-aksi memberikan rasa kepuasan, rasa lega, sinyal untuk menyingkirkan perasaan khawatir, dan sinyal untuk siap terhadap kumpulan aksi yang akan datang. Sebagai contoh, sebuah website e-commerce memindahkan user dari halaman pemilihan produk ke halaman checkout, dan diakhiri dengan halaman konfirmasi yang jelas bahwa transaksi sudah selesai.

5. Pencegahan kesalahan dan penanganan kesalahan yang sederhana

Sebisa mungkin desain sistem yang membuat user tidak dapat melakukan kesalahan yang serius. Jika user melakukan kesalahan maka tampilan antarmuka harus mendeteksi kesalahan tersebut dan menawarkan instruksi yang sederhana, konstruktif, dan spesifik untuk memperbaiki kesalahan.

6. M emungkinkan pembalikan aksi yang mudah

Sebisa mungkin aksi-aksi seharusnya dapat dibatalkan. Fitur ini dapat mengurangi kecemasan karena user tahu bahwa kesalahan dapat dibatalkan

(17)

sehingga membuat user lebih berani untuk menjelajahi opsi-opsi yang tidak dikenal.

7. M endukung pusat kendali internal

User yang berpengalaman memiliki keinginan kuat untuk memiliki rasa bahwa antarmuka di bawah tanggung jawab mereka dan antarmuka merespon aksi-aksi yang diberikan.

8. M engurangi beban ingatan jangka pendek

Keterbatasan pemrosesan informasi pada manusia di memori jangka pendek membuat antarmuka harus sesederhana mungkin.

2.2 Teori Khusus

2.2.1 PHP

M enurut Luke-Laura (2001, p2), PHP merupakan server side scripting language yang didesain untuk web dan berjalan pada sebuah web server. Kode PHP akan diterjemahkan di web server dan menghasilkan HTM L atau output lain yang akan dilihat oleh pengunjung.

M enurut Luke-Laura (2001, p4), PHP memiliki beberapa keunggulan, yaitu:

1. High performance

PHP sangat efisien sehingga dapat melayani jutaan permintaan per hari menggunakan sebuah server yang murah.

(18)

PHP memiliki dukungan koneksi ke berbagai DBM S seperti MySQL, M SSQL, PostgreSQL, Oracle, InterBase, dan lain-lain.

3. Many useful built-in libraries

PHP memiliki fungsi-fungsi built-in yang dapat membantu melakukan berbagai hal seperti mengirim email, memanipulasi cookies, dan menghasilkan dokumen PDF.

4. Low cost

PHP dapat di download secara gratis di situs resmi PHP (http://www.php.net/)

5. Ease of learning and use

Sintaks-sintaks yang digunakan pada PHP umumnya berasal dari bahasa C dan Perl sehingga PHP akan lebih mudah digunakan jika sudah menguasai bahasa lain yang merupakan turunan dari bahasa C (C, C++, Java). PHP memiliki dokumentasi yang lengkap sehingga tidak susah untuk mempelajari PHP.

6. Portability

PHP tersedia untuk berbagai sistem operasi, dan kode PHP yang sudah dibuat dapat dijalankan di berbagai sistem yang memiliki PHP.

7. Availability of source code

PHP merupakan produk open source sehingga source code PHP tersedia untuk di download.

(19)

2.2.2 MySQL

M enurut Luke-Laura (2001, p3), MySQL merupakan relational database management system (RDBM S) yang cepat, dan robust. MySQL dapat digunakan untuk menyimpan, mencari, mengurutkan, dan menerima data secara efisien. Tidak hanya itu, MySQL juga memiliki sistem autentikasi sehingga hanya user yang terotorisasi yang dapat mengakses database.

M enurut Luke-Laura (2001, p5), MySQL memiliki beberapa keunggulan, yaitu:

1. Performance

MySQL memiliki performa yang cepat. Hasil uji coba dapat dilihat dan dibaca di http://www.mysql.com/why-mysql/benchmarks/.

2. Low cost

MySQL tersedia tanpa memerlukan biaya dengan lisensi open source, atau dengan biaya rendah dengan lisensi komersil jika dibutuhkan.

3. Ease of use

MySQL menggunakan SQL dan lebih mudah dipakai dari produk RDBM S serupa lainnya.

4. Portability

MySQL tersedia di berbagai sistem operasi.

5. Availability of source code

(20)

2.2.3 Scheduling

M enurut M ichael L. Pinedo (2008, p1), scheduling merupakan sebuah proses pengambilan keputusan yang digunakan secara berkala di berbagai industri manufacturing dan pelayanan. Proses ini berhubungan dengan alokasi resource untuk tugas-tugas yang diberikan batas waktu dan bertujuan untuk mengoptimalkan satu atau lebih parameter.

Sumber daya dan tugas-tugas dalam sebuah organisasi dapat memiliki bermacam-macam bentuk. Sumber daya dapat berarti mesin dalam sebuah workshop, atau unit pemrosesan (CPU) dalam lingkungan komputasi. Tugas dapat berarti operasi-operasi dalam proses produksi, atau pengeksekusian program - program komputer. Parameter pun dapat memiliki bermacam-macam bentuk, salah satunya adalah meminimalisasi waktu yang dibutuhkan untuk menyelesaikan tugas-tugas yang ada.

2.2.4 XMPP (Exten sible Messaging and Presence Protocol)

M enurut Peter S. Andre, et al (2009, p3), XM PP merupakan teknologi terbuka untuk komunikasi secara real-time menggunakan Extensible Markup Language (XM L) sebagai format dasar untuk pertukaran informasi.

M enurut Jack M offitt (2010, p3), XMPP merupakan sebuah protokol untuk memindahkan potongan data kecil dan terstruktur antara dua entitas.

Sehingga dapat disimpulkan bahwa XMPP merupakan protokol yang digunakan untuk komunikasi antara dua atau lebih entitas secara real-time menggunakan XM L sebagai format dasar untuk pertukaran informasi. Pada XM PP, entitas umumnya sebuah

(21)

client dan server, walaupun komunikasi peer-to-peer antara dua server atau client juga diperbolehkan.

Salah satu fitur utama yang didapat oleh XM PP menggunakan XM L adalah ekstensibilitas XM L. Ekstensibilitas XM L memungkinkan untuk menambah fitur baru yang backward and forward compatible. XM L mulanya dikenal sebagai format dokumen, tetapi di XM PP data XM L diorganisasikan sebagai pasangan streams.

Setiap stream XM L terdiri atas sebuah elemen pembuka, diikuti oleh XMPP stanzas dan elemen top level lainnya, dan sebuah elemen penutup. Setiap XMPP stanza adalah sebuah anak level pertama yang diikuti oleh elemen turunannya dan atribut-atributnya.

XMPP stanza merupakan bagian inti dari protokol XM PP, sehingga aplikasi-aplikasi XM PP diharuskan untuk mengirim dan merespon berbagai macam stanza. Stanza dapat mengandung informasi tentang ketersediaan entitas lainnya pada jaringan, pesan pribadi mirip seperti e-mail, atau komunikasi terstruktur untuk pemrosesan komputer. Berikut merupakan contoh dari stanza:

<message to="FJ@jolly1.com" from="rckw@jolly2.com" type="chat"><body>Hi! Hello World!</body></message>

XMPP stanza di atas merupakan stanza yang dikirim oleh "FJ" untuk "rckw" akan memulai perjalanan dari client XMPP "FJ" menuju server jolly1.com. Server jolly1.com kemudian akan menghubungi server jolly2.com dan mengirim pesan tersebut ke server jolly2.com. Komunikasi antar server ini menyerupai jaringan komunikasi e-mail, namun tidak seperti e-mail server, XMPP server selalu berkomunikasi langsung tanpa melalui server penengah.

(22)

2.2.5 Sandbox

M enurut M ichal Forišek (2006, p2), sandbox adalah sebuah area logikal yang mengisolasi sebuah program ketika dijalankan untuk mencegah kode-kode berbahaya mengakses area-area atau file-file terlarang dan untuk memaksa berbagai batasan atau limitasi terhadap program yang dijalankan.

M enurut Ian Goldberg, David Wagner, Randi Thomas, dan Eric Brewer (1996, p3), sandbox adalah sebuah area atau lingkungan terbatas dimana sebuah program / aplikasi yang dibatasi mempunyai kebebasan.

Sehingga dapat disimpulkan bahwa sandbox adalah sebuah area logikal yang memiliki paksaan berbagai batasan atau limitasi untuk mengisolasi sebuah program yang dijalankan sehingga dapat mencegah kode-kode program berbahaya yang mengakses area-area atau file-file terlarang.

2.2.7 Online Judge

M enurut M iguel A. Revilla, Shahriar M anzoor, dan Rujia Liu (2008, p1), online judge adalah sebuah sistem yang dapat diakses dan digunakan oleh seluruh orang di dunia untuk mengirim solusi terhadap soal yang disediakan agar dapat diperiksa kebenaran dari solusi tersebut.

Sehingga dapat disimpulkan bahwa online judge adalah sistem yang menyediakan berbagai soal algoritma sebagai sarana untuk melatih kemampuan logika berpikir dan

(23)

algoritma pemrograman dimana sistem ini menerima solusi untuk diuji kebenarannya dengan menggunakan test data yang sudah disediakan.

M enurut Andy Kurnia, Andrew Lim, dan Brenda Cheang (2001, p3), penilaian sebuah solusi untuk soal algoritma secara manual mempunyai banyak kekurangan di antaranya adalah memerlukan lebih banyak tenaga dan waktu, penilaian solusi dapat dipengaruhi oleh suasana hati, dan penilaian dapat dipengaruhi oleh code style yang digunakan. Sistem online judge dapat menyediakan sistem penilaian yang mampu melakukan otomatisasi proses penilaian solusi-solusi yang dikirim ke sistem online judge. Sistem penilaian ini seringkali juga disebut grader. Secara umum prosesnya adalah mengumpulkan source code, mengompilasi source code menjadi program, menguji kebenaran program dengan input data dan output data yang tersedia secara otomatis, dan memberikan hasil pengujian.

Hasil pengujian dari online judge biasanya berupa salah satu dari keyword berikut:

1. Accepted

Accepted diberikan saat source code solusi menggunakan algoritma yang benar, penggunaan sumber daya tidak melebihi yang dibatasi sistem, dan mengeluarkan output sesuai dengan yang diminta oleh soal.

2. Wrong Answer

Wrong Answer diberikan saat program solusi menghasilkan output yang salah.

3. Run Time Error

Run Time Error diberikan saat program solusi yang dijalankan mengalami crash.

(24)

Output Limit Exceeded diberikan saat program mengeluarkan output yang melebihi batas output yang ditentukan.

5. Presentation Error

Presentation Error diberikan saat program mengeluarkan output yang kelebihan atau kekurangan karakter whitespaces.

6. Time Limit Exceeded

Time Limit Exceeded diberikan saat program berjalan melebihi batas waktu yang ditentukan.

7. Memory Limit Exceeded

Memory Limit Exceeded diberikan saat program berjalan menggunakan memori yang melebihi batas memori yang ditentukan.

8. Compile Error

Compile Error diberikan saat source code solusi tidak dapat dikompilasi.

9. Compile Time Limit Exceeded

Compile Time Limit diberikan saat source code solusi saat dikompilasi menggunakan waktu yang melebihi batas waktu yang ditentukan.

Ketika sebuah program sedang dijalankan, pada umumnya program tersebut diisolasi di sebuah area yang dinamakan sandbox. Sandbox diperlukan karena source code yang dikumpulkan oleh user dapat mengandung kode-kode yang dapat membahayakan sistem online judge secara keseluruhan.

(25)

M enurut M ichal Forišek (2006, p3), terdapat empat syarat utama agar sebuah sistem kontes dapat diadopsi oleh komunitas utama penyelenggara kontes. Empat syarat ini pun dapat diadopsi sebagai syarat-syarat sebuah online judge yang baik. Berikut adalah empat syarat utama tersebut:

1. Fleksibel

Setiap kontes pemrograman itu berbeda, sehingga secara alami setiap kontes memiliki kebutuhan yang lain dalam sistem kontesnya. Sebagai contoh, bagian dari sistem yang mengkalkulasi dan menampilkan peringkat harus sesuai dengan aturan kontes. Untuk mencapai fleksibilitas seperti ini, sebuah sistem harus memiliki desain modular sehingga mudah untuk mengganti beberapa modul dan memakai kembali modul lain tanpa merubah sistem.

Sistem kontes pemrograman umumnya merupakan bagian dari sistem online judge selama ini, sehingga sebuah sistem online judge yang memiliki kontes pemrograman pun diharapkan dapat memiliki desain yang fleksibel.

2. Robust

Sebuah sistem online judge harus robust dan dapat diandalkan. Sebuah sistem yang cenderung akan crash pada sewaktu-waktu atau ketika digunakan tidak sesuai dengan yang diinginkan oleh pembuatnya tidak layak untuk digunakan.

3. Kemudahan penggunaan

Sebuah sistem online judge harus mudah untuk digunakan.

(26)

Sebuah sistem online judge harus dapat mencegah akses ke informasi sensitif, melindungi integritas dari data-data yang disimpan, serta tahan terhadap serangan-serangan berbahaya.

Berikut merupakan beberacapa cara yang dapat digunakan untuk menyerang sebuah sistem online judge beserta solusi yang dapat diterapkan untuk mencegah serangan-serangan tersebut:

1. M emaksa waktu kompilasi yang lama

Sebuah program sederhana dan pendek dapat memiliki waktu kompilasi yang sangat lama. Karena waktu kompilasi yang lama, maka semua judge client yang tersedia dapat habis terpakai hanya untuk mengompilasi source code yang memiliki waktu kompilasi yang lama. Berikut ini adalah sebuah source code sederhana dan pendek yang memakan waktu lumayan lama untuk dikompilasi:

#include <map> using namespace std; typedef map<int,int> M1; typedef map<M1,M1> M2; typedef map<M2,M2> M3; typedef map<M3,M3> M4; typedef map<M4,M4> M5; typedef map<M5,M5> M6; typedef map<M6,M6> M7; typedef map<M7,M7> M8; int main() { M8 tmp; }

Source code tersebut walau terlihat sederhana, namun dapat memaksa waktu kompilasi yang umumnya cepat menjadi lama. Source code tersebut pun

(27)

dapat dilanjutkan menjadi lebih panjang sehingga waktu kompilasi pun menjadi jauh lebih lama.

Serangan ini dapat diatasi dengan memberlakukan compile time limit sehingga apabila sebuah source code memakan waktu lebih lama dari compile time limit maka kompilasi harus dihentikan secara paksa.

2. M emakan sumber daya pada saat kompilasi

Beberapa compiler seperti compiler C/C++ kadang harus melakukan lookahead ketika melakukan parsing terhadap source code. (misalnya, untuk mengerti sebuah perintah, compiler harus melakukan pemeriksaan terhadap kode selanjutnya dan kita tidak bisa menentukan berapa banyak kode yang harus diperiksa oleh compiler)

Sehingga jika compiler diberikan file input yang besar, maka compiler akan membaca keseluruhan isi file dan disimpan dalam memori. Hal ini dapat berbahaya jika file input yang diberikan adalah sebuah file yang sangat besar sehingga compiler akan menghabiskan memori untuk menyimpan seluruh isi file di memori.

Pada unix-like environment kita dapat menambahkan baris #include "/dev/urandom" sehingga compiler akan melakukan lookahead dan membaca semua pesan sampah yang dihasilkan secara random oleh sistem operasi. Tidak hanya itu, compiler pun dapat dipaksa untuk menghasilkan suatu program yang memiliki file size yang sangat besar untuk suatu program sederhana.

(28)

Jika sistem operasi dapat dipaksa untuk menghabiskan memori atau kuota hard disk yang tersedia, maka hal ini dapat menimbulkan hasil yang tak dapat diprediksi dan juga berbahaya bagi sistem online judge secara keseluruhan.

Serangan ini dapat diatasi dengan memberlakukan memory limit, compile time limit dan output limit sehingga apabila sebuah source code memakan memori, waktu kompilasi, atau kuota harddisk lebih banyak dari yang ditetapkan maka kompilasi harus dihentikan secara paksa.

3. M emakan sumber daya ketika dijalankan

Sebuah program ketika dijalankan dapat menghabiskan memori yang dimiliki oleh sebuah sistem operasi dengan melakukan malloc dan memesan memori yang banyak. Selain itu, sebuah program yang dijalankan pun dapat menghabiskan kuota hard disk dengan mengeluarkan output yang besar. Terakhir, sebuah program yang dijalankan pun dapat memakan waktu yang lama atau bahkan tidak dapat berhenti.

Serangan ini dapat diatasi dengan memberlakukan compile time limit sehingga apabila sebuah source code memakan waktu lebih lama dari compile time limit maka kompilasi harus dihentikan secara paksa.

4. M engakses sumber daya yang terlarang

Serangan dapat dilakukan dengan mencoba mengakses berbagai sumber daya yang terlarang, seperti source code peserta lain, source code pembuat soal, output soal, dan lainnya. Untuk beberapa sumber daya, read-access pun dapat disalahgunakan.

(29)

Serangan ini dapat dilakukan dengan memanfaatkan sintaks "#include" yang ada pada compiler C/C++ yang dapat digunakan untuk membaca file apa pun. Sehingga sebuah source code yang hanya memiliki satu baris seperti '#include "path_menuju_source_code_yang_benar/source_code.cpp"' dapat dikompilasi dan menghasilkan output yang benar. Selain itu, serangan ini pun dapat dilakukan dengan menggunakan sintaks "fopen" untuk membuka file output yang benar sehingga source code tersebut dapat mencetak seluruh output yang benar hanya dengan membaca file output yang benar.

Serangan ini dapat diatasi dengan mengecek semua file yang dibuka ketika source code dikompilasi ataupun ketika program dijalankan sehingga apabila source code maupun program mengakses file, ataupun sumber daya terlarang yang lainnya maka kompilasi ataupun program harus dihentikan secara paksa.

5. M emodifikasi atau membahayakan testing environment

Tipe serangan berbahaya yang paling sederhana adalah mengirim solusi yang mencoba untuk menghapus semua file yang ada pada testing environment. Cara lain uang membahayakan testing environment adalah dengan mengirim solusi yang menghasilkan output data yang sangat besar sehingga menghabiskan memori yang terdapat pada testing environment.

Untuk mencegah serangan – serangan seperti itu adalah dengan membatasi apa yang dapat dilakukan oleh program solusi. Semua hal yang tidak diperlukan untuk menghasilkan solusi yang benar dapat disalahgunakan untuk membahayakan sistem sehingga harus dibatasi.

(30)

6. M enghindari pengukuran waktu

Salah satu serangan berbahaya adalah menghindari pengukuran waktu yang dilakukan oleh sistem untuk mendapatkan time limit yang lebih lama. Salah satu cara melakukannya adalah dengan fork anak proses kemudian anak proses yang akan menjalankan program solusi dan program yang sebenarnya sleep sampai anak proses selesai menjalankan program solusi.

Cara mengatasinya adalah dengan membatasi jumlah maksimal thread yang dapat dijalankan menjadi satu.

7. Obfuscation

Obfuscation sebenarnya bukan merupakan serangan terhadap sistem tetapi merupakan alat untuk membantu supaya serangan yang lain dapat berhasil. Contohnya adalah dengan membuat kacau source code supaya tidak bisa dibaca sehingga penggunaan fungsi – fungsi berbahaya tidak dapat dideteksi jika sistem menggunakan grep atau membatasi penggunaan fungsi dengan mengecek dalam source code.

Untuk mengatasi obfuscation, pengecekan terhadap fungsi berbahaya yang dilakukan tidak boleh dengan mengecek dalam source code tetapi dengan mengecek proses jalannya program.

Gambar

Gambar 4 merupakan gambaran tahap-tahap Waterfall M odel.

Referensi

Dokumen terkait

Tujuan perencanaan dalam menentukan strategi media adalah untuk memilih media yang tepat yang akan digunakan untuk kampanye iklan sehingga khalayak sasaran dapat mengetahui

Disini, walaupun Khaled membuat prasyarat pembaca sebagai pengawalan namun itu tampak kontradiktif, dimana pernyataan- pernyataannya memberikan ruang interpretasi al-Qur’an

[r]

Kebijakan yang diambil oleh pimpinan saya terkadang

Populasi dan sampel dalam penelitian ini adalah seluruh data mortalitas, morbiditas dan status gizi di Dinas Kesehatan Provinsi Sumatera Utara Tahun 2013 yang

Wewenang KPK adalah mengkoordinasikan penyelidikan, penyidikan, dan penuntutan tindak pidana korupsi, menetapkan sistem pelaporan dalam kegiatan pemberantasan tindak

Sekolah juga mempunyai faktor kelemahan dalam aspek ouput yaitu kurangnya waktu untuk kegiatan ekstrakurikuler, kekhawatiran orang tua bahwa kemungkinan lulusan

Kematian akibat anestesi mungkin disebabkan oleh hipoksia dan henti jantung yang saling terkait, pada kedua kasus kematian dapat disebabkan oleh gangguan penyediaan oksigen otak