Bab I Pendahuluan 1.1. Latar belakang Saat ini ada banyak kompetisi pemrograman untuk pelajar setingkat sekolah menengah yang telah diselenggarakan baik secara internasional maupun regional. Kompetisi-kompetisi pemrograman ini di antaranya adalah International Olympiad in Informatics (IOI), ACM International Collegiate Programming Contest (ICPC), Asia-Pacific Informatics Olympiad (APIO) dan Central- European Olympiad in Informatics (CEOI). Penyelenggaraan kompetisi pemrograman tersebut bertujuan untuk menumbuhkan minat pelajar akan dunia Informatika, memberikan wadah bagi pelajar untuk mengasah dan mendemonstrasikan keahlian mereka. Selain itu rasa persahabatan di antara para pelajar dari seluruh negara dapat terjalin dengan baik melalui kegiatan ini. Untuk mendukung jalannya kompetisi semacam itu terdapat banyak sistem manajemen kompetisi yang telah digunakan, contohnya DOMJudge [DOM08] dan Mooshak [MOO08]. Fungsi utama dari sistem-sistem tersebut adalah untuk melakukan pemeriksaan hasil kerja peserta secara otomatis serta pengaturan kontes yang sedang diadakan. Pemeriksaan hasil kerja dilakukan secara blackbox; hasil kerja peserta berupa kode program akan dikompilasi kemudian diuji dengan menggunakan input yang telah disiapkan serta output jawaban. Fungsi pengaturan kontes pada sistem memungkinkan penyelenggara untuk membatasi dan mengawasi aktivitas peserta pada kontes. Di Indonesia juga terdapat kompetisi pemrograman sejenis yaitu olimpiade sains bidang komputer. Kompetisi ini diadakan dengan tujuan mempersiapkan pelajar Indonesia untuk menghadapi ajang-ajang kompetisi pemrograman di tingkat internasional. Pada ajang ini para pelajar dari seluruh Indonesia dipertandingkan untuk diseleksi dan kemudian pelajar yang lolos dari seleksi tersebut akan dibina untuk menghadapi kompetisi lebih lanjut di tingkat internasional. I-1
I-2 Sistem pelatihan dan manajemen kontes yang dipakai untuk memfasilitasi pelatihan olimpiade komputer di Indonesia saat ini adalah Ranau [SET05]. Sistem pelatihan ini sekarang melayani tahap seleksi serta tahap pembinaan nasional. Dengan menggunakan sistem ini, proses pemeriksaan hasil kerja peserta pada seleksi dan pembinaan dapat dilakukan secara otomatis. Sistem pelatihan ini juga memungkinkan pembina dan kontributor bekerja pada sistem secara online untuk mengatur jalannya pelatihan. Karena pada awalnya sistem tidak didesain untuk digunakan secara terbuka dan bagi banyak peserta, peserta yang menggunakan masih dibatasi kepada para pelajar yang diundang untuk mengikuti proses pembinaan dan seleksi yang setiap tahunnya berkisar 100 peserta dan terutama untuk penyelenggaraan yang sifatnya onsite. Salah satu keterbatasan yang menyebabkan pelajar juga tidak dapat menggunakan sistem ini adalah karena persebaran konektivitas internet di seluruh Indonesia masih belum merata terutama di daerah Indonesia Timur. Hal ini menyebabkan peningkatan mutu pelajar hanya berada di daerah ibukota dan kota-kota besar lainnya. Untuk mengurangi keterbatasan ini maka sistem pelatihan akan dikembangkan sehingga memiliki fasilitas bagi pelajar untuk dapat melakukan latihan mandiri pada komputer masing-masing tanpa harus selalu memiliki koneksi internet. Oleh karena itu dibutuhkan sebuah desain sistem pelatihan yang memiliki fungsionalitas yang sama akan tetapi lebih memperhatikan aspek nonfungsionalitas untuk keterbatasan tersebut serta model penggunaan yang dapat digunakan oleh para pelajar. Aspek-aspek tersebut diharapkan dapat memberikan nilai tambah bagi sistem pelatihan yang akan dibangun agar dapat memfasilitasi perkembangan kompetisi serta penggunaan dengan jumlah besar. Dengan demikian, para pelajar di Indonesia terutama di daerah-daerah yang minim fasilitas juga dapat menggunakan sistem tersebut. Diharapkan di masa depan daya saing para pelajar Indonesia dalam bidang pemrograman akan meningkat.
I-3 1.2. Rumusan Masalah Masalah yang akan dikaji pada Tugas Akhir ini adalah bagaimana membangun sebuah sistem pelatihan kompetisi pemrograman yang dapat digunakan oleh para pelajar dari seluruh daerah di Indonesia baik melalui latihan online maupun latihan mandiri. Kajian, perancangan, dan implementasi pada Tugas Akhir ini akan difokuskan pada perancangan dan penerapan yang dibutuhkan oleh sistem yang ingin dibangun. Berdasarkan latar belakang yang telah dijelaskan, aspek-aspek yang ingin difokuskan pada Tugas Akhir ini antara lain: 1. Extensibility Sistem memberikan fasilitas bagi pembina untuk membuat tipe-tipe soal baru. 2. Scalability Sistem mampu menangani volume data yang besar maupun kecil tanpa mempengaruhi kinerjanya terhadap perubahan volume tersebut. 3. Security Sistem mampu melakukan proteksi terhadap serangan-serangan yang dapat mengganggu fungsi dari sistem selama sistem berjalan. Seranganserangan yang terjadi dapat berupa serangan kepada sistem yang sifatnya online dan juga serangan dengan memasukkan kode berbahaya pada pekerjaan yang dikumpulkan oleh peserta. 1.3. Tujuan Tujuan yang ingin dicapai dari pelaksanaan Tugas Akhir ini adalah untuk membangun sistem pelatihan kompetisi pemrograman komputer dan melakukan deployment sistem tersebut sehingga dapat digunakan untuk latihan mandiri bagi pelajar dari daerah-daerah di Indonesia. 1.4. Batasan Masalah Batasan dari masalah yang akan dikaji dan diselesaikan pada Tugas Akhir ini adalah pada pengguna sistem ini yang dibatasi pada para pelajar sekolah
I-4 menengah di Indonesia yang memiliki akses komputer yang sesuai dengan sistem pelatihan yang akan dibangun. 1.5. Metodologi Metodologi yang akan digunakan pada Tugas Akhir ini adalah 1. Studi Literatur dan Kajian Studi literatur dan kajian akan dilakukan untuk mempelajari literatur serta mengkaji aspek-aspek kebutuhan non-fungsional yang perlu dimiliki oleh sebuah sistem pelatihan kompetisi pemrograman yang dapat digunakan oleh siswa dari daerah-daerah dengan beragam keterbatasan di Indonesia. 2. Pembangunan Perangkat Lunak Pengembangan sistem pelatihan ini dilakukan dengan metode OOAD. Tahapan pada pengembangan ini antara lain: a. Perencanaan, yaitu mengumpulkan kebutuhan-kebutuhan perangkat lunak. b. Analisis, yaitu mereprentasikan kebutuhan-kebutuhan ke dalam model-model. c. Perancangan, yakni merancang arsitektur aplikasi berdasarkan fungsi-fungsi. d. Pembangunan, yakni membangun aplikasi sesuai dengan rancangan yang telah dilakukan. e. Pengujian, yakni pengujian aspek fungsional dan non-fungsional dari sistem. 1.6. Sistematika Penulisan Sistematika penulisan laporan tugas akhir ini adalah sebagai berikut: 1. Bab I Pendahuluan, berisi penjelasan mengenai latar belakang, rumusan masalah, tujuan, batasan masalah, metodologi, serta sistematika pembahasan yang digunakan untuk menyusun laporan tugas akhir. 2. Bab II Dasar Teori, berisi studi literatur dan landasan teori yang digunakan dalam analisis, perancangan, dan implementasi tugas akhir.
I-5 3. Bab III Analisis, berisi analisis masalah serta analisis perangkat lunak yang akan dibangun sebagai dasar tahap perancangan dan implementasi. 4. Bab IV Perancangan, berisi perancangan sistem yang akan dibangun sebagai dasar tahap implementasi yang akan dilaksanakan sesudahnya 5. Bab V Implementasi dan Pengujian, berisi tentang penjelasan mengenai implementasi sistem dan pengujian yang dilakukan. 6. Bab VI Penutup, berisi kesimpulan dan saran yang dihasilkan dari pengerjaan Tugas Akhir.