BAB 1 PENDAHULUAN 1.1 Latar Belakang - Implementasi Multithreading Untuk Meningkatkan Kecepatan Waktu Proses Pada Enkripsi Gambar Dengan Algoritma Affine Cipher

BAB 1 PENDAHULUAN

1.1 Latar Belakang

  Didalam proses pengembangan perangkat lunak, waktu proses adalah salah satu bagian yang cukup diperhatikan karena secara antar muka dengan pengguna, waktu proses juga akan menentukan kepuasan pengguna dalam menggunakan perangkat lunak tersebut. Waktu proses juga dijadikan suatu acuan untuk menilai kualitas algoritma yang digunakan didalam pengembangan perangkat lunak tersebut. Didalam

  

mind set pengguna, semakin cepat waktu proses maka semakin baik kualitas perangkat

  lunak tersebut apalagi jika pengguna merupakan seorang yang memiliki kemampuan teknis di bidang pemrograman. Sebagai contoh, algoritma fermat untuk mencari bilangan prima terbesar dinilai lebih baik dari pada menggunakan algoritma

  

sequencial biasa. Kemudian untuk mengurutkan array, algoritma bubble sort dinilai

  lebih efektif dari pada algoritma-algoritma pengurutan array yang lain karena membutuhkan waktu proses yang lebih cepat.

  Tetapi pada kasus pengembangan perangkat lunak dengan skala bisnis seperti aplikasi Point of Sales (POS), Enterprise Resource Planning (ERP), Sistem Informasi Manajemen, dll, tidak banyak algoritma yang terlalu scientific yang digunakan didalam pengembangannya, hanya saja aturan dari proses bisnis didalam aplikasi tersebut cukup panjang karena data yang diolah cukup banyak. Contohnya pada aplikasi Sistem Informasi Manajemen Kepegawaian Daerah, untuk menentukan pangkat seorang pegawai pada saat kenaikan pangkat, pangkat yang akan diberikan tidak boleh lebih tinggi dari pangkat atasan langsung pegawai tersebut. Untuk mewujudkan proses bisnis tersebut, ada beberapa langkah yang harus dilakukan yaitu mencari SKPD tempat pegawai bertugas, kemudian mencari bidang tempat bertugas, setelah itu baru bisa mendapatkan data atasan langsung dari pegawai tersebut, maka aturan pangkat pegawai tidak boleh lebih tinggi dari atasan langsung dapat dilakukan.

  Untuk menangani proses yang cukup panjang tersebut biasanya pengembang perangkat lunak meningkatkan kemampuan perangkat komputer yang menjalankan aplikasi tersebut, seperti mempertinggi kapasitas RAM, processor, dan bandwith pada jaringan komputer jika aplikasi berjalan secara client server.

  Tetapi ada cara lain untuk meningkatkan waktu proses sebuah perangkat lunak, yaitu dengan cara membagi bagian-bagian tugas yang ada dan memprosesnya secara bersamaan, dan cara tersebut disebut dengan teknik multithreading (Sun Microsystem, 1994). Multithreading adalah sebuah teknik pemrograman yang menjalankan lebih dari satu task secara bersamaan dan dalam teknik ini, task biasanya disebut dengan thread. Dengan adanya thread kita dapat menjalankan, mengehntikan sementara, bahkan mengehentikan total sebuah proses tanpa harus menunggu thread tersebut selesai. Dengan memanfaatkan kemampuan tersebut, kita dapat membagi beberapa proses yang rumit didalam sebuah aplikasi menjadi beberapa thread dan menjalankannya secara bersamaan. Oleh karena itu, masing-masing thread akan memiliki waktu berhenti masing-masing tanpa harus saling menunggu, sehingga waktu proses bisa menjadi lebih singkat.

  Contoh penerapan multithreading ini dapat dilihat pada aplikasi Internet Download Manager (IDM). Aplikasi tersebut membagi sebuah file yang sedang didownload menjadi delapan hingga enam belas bagian dan masing-masing bagian tersebut melakukan download masing-masing tanpa ada yang saling menunggu. Contoh yang lain sering ditemukan pada proses loading menggunakan progress bar. Proses dipisah menjadi dua thread, yang pertama untuk menjalankan proses yang seharusnya, sedangkan yang kedua untuk menghitung perkembangan persentase proses dan menampilkannya didalam progress bar. Penulis tidak banyak menemukan penelitian yang melibatkan multithreading. Beberapa penelitian terdahulu yang melibatkan pemrograman multithreading diantaranya adalah untuk membangkitkan

  

private key pada kriptografi (Dongara dan Vijaykumar, 2010), perbandingan

sequencial pada algoritma dynamic programming (Martins et al, 2001), dan

  meningkatkan kecepatan pada algoritma enkripsi RC4 (Weerasinghe et al, 2012), kemudian ada juga sebuah metode baru yang ditemukan untuk mengukur kemampuan masing-masing thread yang sedang berjalan (Chrysos, 2003), Shene C-K tahun 2001 mencoba mengembangkan metode pengajaran terhadap pemrograma multithreading, dan juga dikembangkan metode dalam desain perancangan aplikasi yang menerapkan multithreading berbasis UML (Saxena dan Shrivastava, 2009).

  Dalam tugas akhir kali ini, multithreading akan coba diimplementasikan untuk membuktikan pengaruhnya dalam meningkatkan kecepatan waktu proses pada enkripsi gambar menggunakan algoritma affine cipher. Pada kasus ini, akan dikembangkan sebuah perangkat lunak pembanding proses enkripsi gambar tersebut antara proses sequencial dan proses yang menggunakan multithreading. Perangkat lunak tersebut hanya sebagai pembanding, tidak dikembangkan untuk perangkat lunak pengolah citra yang lengkap. Output dari perangkat lunak tersebut adalah berupa waktu proses dalam satuan detik. Dan dari output tersebut dapat dilihat proses mana yang memiliki wakt proses lebih singkat, proses tanpa multithreading atau proses dengan multithreading.

  1.2 Rumusan Masalah

  Pada tugas akhir ini, multithreading akan diimplementasikan untuk melakukan proses enkripsi pada gambar. Oleh karena itu akan terjadi proses sequencial enkripsi mulai dari pixel [0,0] hingga pixel [n, n]. Jika masing-masing pixel diwakili oleh satu thread maka akan ada ratusan bahkan ribuan thread yang dijalankan dalam waktu yang bersamaan. Tentu saja hal tersebut malah memperlambat proses, karena akan memakan banyak slot memory untuk menampung thread-thread tersebut dan mungkin akan terjadi error out of memory atau memory tidak mampu menampung banyaknya objek yang dihasilkan (dalam hal ini objek berupa thread). Maka, rumusan masalah pada penelitian ini adalah bagaimana membagi proses tersebut kedalam n buah thread dengan efektif dan tanpa membebani memory dengan jumlah thread tersebut sehingga kecepatan proses enkripsi gambar dapat ditingkatkan.

  1.3 Batasan Masalah

  Untuk mencegah meluasnya cakupan masalah yang akan dibahas dan untuk membatasi hasil penelitian agar penelitian dalam tugas akhir ini semakin terarah, maka dilakukan batasan masalah sebagai berikut : 1.

  Algoritma enkripsi yang digunakan adalah algoritma Affine Cipher.

2. Besar memory pada komputer pengujian adalah 2.00 GB.

  3. Processor yang digunakan adalah Intel®Intel Core™ i3 4.

  Sistem Operasi pada komputer pengujian adalah Microsoft Windows 7.

  5. Karena penelitian ini ditujukan untuk membandingkan kecepatan proses parallel. dengan sequencial, maka aplikasi yang akan dibangun hanya bertujuan untuk membandingkan proses yang dikerjakan secara parallel dengan proses yang dikerjakan secara sequencial, bukan merupakan sebuah aplikasi pengolah citra yang lengkap.

  6. Ukuran resolusi gambar yang akan digunakan berkisar antara 800 x 800 pixel hingga 5000 x 5000 pixel. Tujuan menggunakan gambar dengan resolusi besar adalah untuk membuktikan bahwa multithreading mampu meng-enkripsi gambar dengan waktu yang relatif singkat meskipun dengan ukuran gambar yang besar.

  7. Aplikasi yang akan dibangun berbasis desktop.

  1.4 Tujuan Penelitian

  Tujuan dari penelitian dalam tugas akhir ini adalah untuk menentukan jumlah n thread yang tepat dalam mengenkripsi gambar untuk diproses secara multithreading agar tidak membebani memory sehingga kecepatan waktu proses enkripsi gambar dapat ditingkatkan.

  1.5 Manfaat Penelitian

  Manfaat yang diperoleh dari penelitian ini adalah: 1.

  Membuktikan pengaruh multithreading dalam meningkatkan kecepatan proses dan membandingkan secara langsung dengan proses sequencial.

  2. Menambah pemahaman dan kemampuan penulis dalam hal pemrograman

  multithreading sehingga mampu untuk mengimplementasikan multithreading ke masalah-masalah lainnya.

  3. Sebagai referensi untuk penelitian lainnya yang membahas tentang pemrograman multithreading.

1.6 Metodologi Penelitian

  Metodologi penelitian yang digunakan dalam penelitian ini adalah: 1.

  Studi Literatur Pada tahap ini dilakukan studi kepustakaan yaitu mengumpulkan bahan referensi mengenai multithreading dan pemrograman multithreading dari berbagai buku, jurnal, proceeding, makalah, paper, dan beberapa sumber referensi lainnya.

  2. Analisis Pada tahap ini akan dilakukan analisis terhadap literatur multithreading yang dimiliki tentang bagaimana mengembangkannya dan teknik-teknik yang mungkin dapat digunakan untuk mempercepat proses.

  3. Perancangan Pada tahap perancangan, akan dirancang arsitektur umum dari aplikasi, teknik yang akan digunakan untuk mendukung multithreading, serta antarmuka aplikasi yang akan dibangun. Untuk perancangan arsitektur umum dan antarmuka aplikasi dilakukan berdasarkan hasil analisis studi literatur yang telah dilakukan.

  4. Implementasi Pada tahap implementasi, aplikasi akan dibangun menggunakan bahasa Visual Basic .NET pada framework .NET Framework 4.0.

  5. Pengujian Pada tahap ini akan dilakukan pengujian pada aplikasi sebagai alat bukti.

  Pengujian akan dilakukan melalui proses enkripsi pada gambar dengan resolusi antara 800 x 800 pixel hingga 5000 x 5000 pixel. Proses dilakukan untuk menguji kecepatan menghasilkan output antara proses parallel yang menggunakan multithreading dan proses sequencial dan kemudian membandingkannya.

  6. Dokumentasi dan Penyusunan Laporan Pada tahap ini akan dibuat dokumentasi hasil pengujian dan analisis terhadap bagaimana cara multithreading dalam mempengaruhi kecepatan proses.

1.7 Sistematika Penulisan

  Sistematika penulisan dalam tugas akhir ini terdiri dari lima bagian utama sebagai berikut :

  BAB 1: Pendahuluan Bab ini berisi latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian, dan sistematika penulisan. BAB 2: Landasan Teori Bab ini berisi teori-teori yang digunakan untuk memahami tujuan peneilitian yang

  akan dicapai. Pada bab ini akan dijelaskan mengenai multithreading serta teknik- teknik yang mendukung untuk mempengaruhi dan meningkatkan kecepatan pada sebuah proses

  BAB 3: Analisis dan Perancangan Bab ini berisi analisis dan penerapan teknik multithreading untuk mempengaruhi dan

  meningkatkan kecepatan proses serta perancangan pemodelan aplikasi seperti arsitektur umum, flowchart, serta tampilan antar muka pemakai dalam model high fidelity.

  BAB 4: Implementasi dan Pengujian Bab ini berisi pembahasan tentang implementasi dari analisis dan perancangan yang

  disusun pada Bab 3 dan pengujian, apakah hasil yang didapat sesuai dengan yang diharapkan

  BAB 5: Kesimpulan dan Saran Bab ini berisi kesimpulan dari keseluruhan uraian bab-bab sebelumnya dan saran- saran yang diajukan untuk pengembangan penelitian selanjutnya.