BAB IV
ANALISIS DAN PERANCANGAN PERANGKAT LUNAK
Pada bab ini akan diuraikan mengenai analisis pada kebutuhan perangkat lunak, analisis kelas, serta perancangan antarmuka dan kelas dari perangkat lunak tersebut. 4.1
ANALISIS PERANGKAT LUNAK
Perangkat lunak yang dibangun dalam Tugas Akhir ini dinamakan SteGIF, dan dibangun pada lingkungan perangkat komputer pribadi. Berikut ini akan dijelaskan tentang deskripsi umum sistem, arsitektur perangkat lunak, kebutuhan perangkat lunak, serta analisis kelas. 4.1.1
Deskripsi Umum Perangkat Lunak
Perangkat lunak yang dibangun memiliki dua buah fungsi utama, yaitu fungsi penyisipan pesan dan yang kedua adalah fungsi ekstraksi pesan. Pada fungsi penyisipan pesan, yang menggunakan metode adaptif, perangkat lunak menerima masukan berupa citra GIF, pesan dan kunci untuk membangkitkan bilangan semu acak (pseudorandom). Keluaran dari fungsi penyisipan pesan ini adalah citra GIF yang telah disisipi pesan didalamnya. Fungsi kedua adalah melakukan ekstraksi pesan dari citra GIF yang sebelumnya telah mengalami proses penyisipan pesan menggunakan metode adaptif. Pada fungsi ekstraksi pesan, perangkat lunak menerima masukan berupa citra GIF yang memiliki pesan dan kunci yang sama dengan kunci yang digunakan pada proses penyisipan pesan. Keluaran dari fungsi ekstraksi pesan ini adalah pesan yang disisipkan pada citra GIF. Gambaran umum sistem yang akan dibangun dapat dilihat pada Gambar IV-1.
IV-1
IV-2
Gambar IV-1 Gambaran umum sistem
4.1.2
Arsitektur Perangkat Lunak
Arsitektur dari perangkat lunak dapat dilihat pada Gambar IV-2. Terlihat bahwa SteGIF mempunyai dua buah modul utama yang merepresentasikan dua buah fungsi utama yang sudah disebutkan pada Subbab sebelumnya, yaitu modul penyisipan pesan dan modul ekstraksi pesan.
Gambar IV-2 Arsitektur perangkat lunak
IV-3
Modul penyisipan pesan memiliki masukan berupa pesan, citra GIF, dan kunci. Kunci yang dimasukkan akan menjadi nilai seed untuk proses pembangkitan bilangan semu acak. Selanjutnya dilakukan dekompresi citra GIF untuk mengubah data raster GIF menjadi citra berkode bitmap. Setelah itu proses pemilihan piksel berdasarkan bilangan semu acak yang didapatkan, kemudian dilakukan pengecekan paritas terhadap setiap piksel yang dipilih. Setelah itu pesan disisipkan sesuai dengan penjelasan pada subbab 3.1. Terakhir citra berkode bitmap akan dikompresi kembali menjadi citra GIF. Keluaran dari modul ini adalah citra GIF yang sudah tersisipi pesan didalamnya. Modul ekstraksi pesan memiliki masukan berupa citra GIF yang sudah terisisipi pesan di dalamnya dan kunci. Kunci yang dimasukkan akan menjadi nilai seed untuk proses pembangkitan bilangan semu acak. Selanjutnya dilakukan dekompresi citra GIF untuk mengubah bentuk data raster citra GIF menjadi citra berkode bitmap. Setelah itu dilakukan pencarian piksel berdasarkan bilangan semu acak yang didapatkan, kemudian terhadap setiap piksel yang ditemukan akan dilakukan pengecekan paritas. Setelah itu dilakukan proses pengambilan pesan berdasarkan nilai paritas yang didapatkan untuk setiap piksel yang dipilih. 4.1.3
Kebutuhan Perangkat Lunak
Perangkat lunak yang akan dibangun pada Tugas Akhir ini diharapkan dapat melakukan hal-hal berikut : 1. Membaca, melakukan kompresi dan dekompresi, dan melakukan parsing terhadap citra GIF 2. Melakukan pembangkitan bilangan semu acak berdasarkan kunci masukan pengguna 3. Melakukan pemilihan piksel berdasarkan bilangan semua acak yang dibangkitkan dan memeriksa paritas dari nilai piksel yang dipilih
IV-4
4. Menyisipkan pesan ke dalam citra GIF dan menambahkan informasi ke dalam comment extension yang terdapat pada citra GIF 5. Mengekstraksi pesan yang disisipkan dalam citra GIF
4.1.4
Diagram Use Case
Untuk menggambarkan kebutuhan perangkat lunak secara visual digunakan sebuah diagram use case, yang dapat dilihat pada Gambar IV-3. Terdapat dua buah aktor yang berperan dalam perangkat lunak ini, yaitu pengirim dan penerima. Pengirim merupakan pengguna yang melakukan penyisipan pesan ke dalam citra GIF dan penerima merupakan pengguna yang melakukan ekstraksi pesan yang terdapat pada citra GIF.
Gambar IV-3 Diagram use case
Perangkat lunak memiliki enam buah use case. Dua buah use case utama, yaitu Penyisipan Pesan dan Ekstraksi Pesan merupakan use case yang mendapatkan trigger dari pengguna. Use case Membaca Pesan digunakan untuk melakukan pembacaan pesan serta proses validasi dari pesan, use case Menyimpan Pesan digunakan untuk
IV-5
menyimpan pesan ke dalam citra GIF menggunakan metode adaptif, sedangkan use case Mengambil Pesan digunakan untuk mengambil pesan dari citra GIF yang telah mengalami proses penyisipan pesan menggunakan metode adaptif. Use case Membaca Citra GIF digunakan untuk membaca citra GIF yang dimasukkan oleh pengguna, baik dalam proses penyisipan maupun ekstraksi pesan. Penjelasan tiap use case yang lebih rinci dapat dilihat pada Tabel IV-1. Tabel IV-1 Narasi use case No. 1
2
3
Elemen Use Case Nama Deskripsi Prekondisi Proses Kondisi akhir Nama Deskripsi Prekondisi Proses Kondisi akhir Nama Deskripsi Prekondisi Proses
4
Kondisi akhir Nama Deskripsi Prekondisi Proses
Kondisi akhir
Keterangan Menyisipkan Pesan Melakukan penyisipan pesan pada citra GIF Sistem menampilkan menu utama dari perangkat lunak yang ditampilkan Pengguna memilih menu penyisipan pesan Sistem berpindah ke menu penyisipan pesan Mengekstraksi Pesan Melakukan ekstraksi pesan pada citra GIF Sistem menampilkan menu utama dari perangkat lunak Pengguna memilih menu ekstraksi pesan Sistem berpindah ke menu ekstraksi pesan Membaca Citra GIF Melakukan kompresi, dekompresi, pembacaan dan parsing citra GIF Use case Menyisipkan Pesan atau use case Mengekstraksi Pesan sudah dilakukan Pengguna memasukkan citra GIF Sistem melakukan dekompresi citra GIF Sistem melakukan validasi terhadap citra yang dimasukkan Sistem mem-parsing citra GIF Sisitem melakukan kompresi citra GIF Citra GIF telah dibaca dan divalidasi Membaca Pesan Melakukan pembacaan pesan Use case Menyisipkan Pesan dan use case Membaca Citra GIF sudah dilakukan Pengirim memasukkan pesan Sistem melakukan validasi pesan Sistem menyimpan pesan yang telah divalidasi Pesan tersimpan dalam perangkat lunak
IV-6
No. 5
Elemen Use Case Nama Deskripsi Prekondisi Proses
6
Kondisi akhir Nama Deskripsi Prekondisi Proses
Kondisi akhir
4.1.5
Keterangan Menyimpan Pesan Melakukan penyimpanan pesan ke dalam citra GIF, termasuk proses kompresi citra GIF Use case Membaca Pesan sudah dilakukan Pengirim menekan tombol ‘Sisipkan’ Sistem membangkitkan bilangan semu acak Sistem melakukan pemilihan piksel dan pengecekan paritas piksel Sistem menyimpan pesan ke dalam piksel Sistem melakukan kompresi terhadap citra Citra GIF sudah mengandung pesan didalamnya Mengambil Pesan Mengambil kembali pesan yang tersembunyi di dalam citra GIF Use case Mengekstraksi Pesan dan use case Membaca Citra GIF sudah dilakukan Penerima menekan tombol ‘Ambil Pesan’ Sistem membangkitkan bilangan semu acak Sistem melakukan pemilihan piksel dan pengecekan paritas piksel Sistem mengambil bit-bit pesan dari piksel yang dipilih Pesan didapatkan
Analisis Kelas
Perangkat lunak yang dikembangkan pada Tugas Akhir ini memiliki dua buah modul, yaitu modul penyisipan pesan dan modul ekstraksi pesan. Berikut ini akan dijelaskan analisis kelas yang diklasifikasikan menurut pembagian modul. 4.1.5.1 Diagram Kelas Analisis Penyisipan Pesan Proses penyisipan pesan membutuhkan tiga buah masukan, yaitu citra GIF, pesan, dan kunci. Ketiga masukan tersebut dapat menjadi kelas berbeda, seperti digambarkan pada Gambar IV-4.
IV-7
Gambar IV-4 Diagram kelas analisis penyisipan pesan
Kelas Message merupakan kelas yang menangani proses pembacaan pesan masukan pengguna. Kelas ini juga menangani proses validasi terhadap pesan serta pembacaan ukuran pesan tersebut. Kelas Image merupakan kelas yang menangani seluruh proses terhadap citra GIF. Proses tersebut adalah proses pembacaan citra GIF, validasi citra GIF dan pengambilan data yang terdapat pada citra GIF masukan pengguna. Kelas Key merupakan kelas yang menyimpan nilai kunci masukan pengguna dan melakukan pembangkitan bilangan semu acak (pseudorandom) berdasarkan kunci tersebut. Kelas Embed merupakan kelas yang menangani seluruh proses yang terkait dengan penyisipan pesan termasuk pemilihan piksel dan pemeriksaan nilai paritas. Kelas ini juga mengatur jenis keluaran dari proses penyisipan pesan, apakan berkas citra baru atau menimpa berkas citra yang lama. Kelas CompressionDecompression merupakan kelas yang menangani proses kompresi dan dekompresi citra GIF. Proses kompresi akan mengubah citra bitmap menjadi citra GIF, dan sebaliknya proses dekompresi akan mengubah citra GIF
IV-8
menjadi citra bitmap. Kedua proses ini diperlukan untuk dapat mengakses nilai dari tiap piksel pada citra GIF, dan lalu mengembalikannya ke dalam kompresi LZW. 4.1.5.2 Diagram Kelas Analisis Ekstraksi Pesan Proses penyisipan pesan membutuhkan dua buah masukan, yaitu citra GIF yang mengandung pesan di dalamnya dan kunci. Kedua masukan tersebut dapat menjadi kelas berbeda, seperti digambarkan pada Gambar IV-5.
Gambar IV-5 Diagram kelas analisis ekstraksi pesan
Kelas Image dan kelas Key digunakan sama seperti pada proses penyisipan pesan. Kelas Image digunakan dalam proses pembacaan citra GIF, validasi citra GIF dan pengambilan data yang terdapat pada citra GIF masukan pengguna. Kelas Key digunakan utuk menyimpan nilai kunci masukan pengguna dan melakukan pembangkitan bilangan semu acak (pseudorandom) berdasarkan kunci tersebut. Kelas Extract merupakan kelas yang digunakan untuk membaca data yang tersimpan di dalam citra GIF dan menggabungkannya menjadi pesan yang dimasukkan oleh pengirim. Kelas ini juga menangani proses pemilihan piksel serta pengecekan nilai paritas. Kelas CompressionDecompression merupakan kelas yang sama dengan kelas CompressionDecompression yang digunakan pada modul penyisipan pesan.
IV-9
4.1.5.3 Diagram Kelas Analisis Keseluruhan Sistem Diagram kelas analisis keseluruhan sistem dapat dilihat pada Gambar IV-6. Jumlah kelas yang terdapat keseluruhan sistem adalah tujuh kelas. Kelas “Interface” digunakan untuk mengatur tampilan aplikasi yang memfasilitasi interaksi sistem dengan pengguna. Kelas “Embed” digunakan pada proses penyisipan pesan, yang menyimpan tiga jelas sebagai objek masukan, yaitu kelas “Image”, kelas “Message”, dan kelas “Key”. Sedangkan kelas “Extract” merupakan kelas yang digunakan pada proses ekstraksi pesan, yang menyimpan kelas “Image” dan kelas “Key” sebagai masukan. Kelas “CompressionDecompression” menangani proses kompresi dan dekompresi citra GIF untuk keperluan pembacaan dan penulisan citra GIF.
Gambar IV-6 Diagram kelas analisis keseluruhan
4.2
PERANCANGAN PERANGKAT LUNAK
Berikut ini akan dijelaskan mengenai perancangan dari perangkat lunak yang dikembangkan pada Tugas Akhir meliputi perancangan antarmuka perangkat lunak
IV-10
serta diagram kelas perancangan yang sudah memiliki atribut dan operasi secara lengkap. 4.2.1
Perancangan Antarmuka
Berikut adalah antarmuka yang digunakan pada implementasi dari Tugas Akhir ini: 1. Antarmuka Menu Beranda Menu beranda adalah menu awal yang ditampilkan saat aplikasi dijalankan. Pada menu beranda ini ditampilkan tiga buah tombol pilihan menu, yaitu penyisipan, ekstraksi, dan tentang. Jika tombol penyisipan dipilih, maka aplikasi akan menampilkan menu penyisipan, dan jika tombol ekstraksi dipilih, maka aplikasi akan menampilkan menu ekstraksi.
Gambar IV-7 Antarmuka Menu Beranda
2. Antarmuka Menu Penyisipan Pesan Menu penyisipan pesan ditampilkan saat tombol penyisipan pada menu beranda dipilih. Pada menu penyisipan pesan ditampilkan tiga buah field yaitu kunci, berkas yang disisipkan dan gambar penyisipan. Kunci akan diisi oleh pengguna dengan bilangan asli, sedangkan berkas yang disisipkan dan gambar penyisipan akan berisi alamat berkas yang akan disisipkan, dan berkas citra
IV-11
GIF yang akan menjadi tempat penyisipan pesan. Untuk mendapatkan alamat direktori, pengguna dapat menekan tombol browse yang ada di sebelah kanan tiap field, lalu pengguna akan memilih berkas mana yang mau disisipkan, juga berkas citra GIF mana yang akan menjadi tempat penyisipan pesan. Setelah field terisi, pengguna dapat menjalankan proses penyisipan pesan dengan memilih tombol “Sisip Pesan”. Pada saat tombol “Sisip Pesan” dipilih, akan muncul sebuah dialog untuk menentukan alamat direktori dan nama berkas citra GIF yang akan disimpan.
Gambar IV-8 Antarmuka Menu Penyisipan Pesan
3. Antarmuka menu ekstraksi pesan Menu ekstraksi pesan akan ditampilkan saat tombol ekstraksi dipilih pada menu beranda. Pada menu ekstraksi pesan ditampilkan dua buah field, yaitu kunci dan berkas yang diekstraksi. Kunci akan diisi dengan masukan dari pengguna dengan bilangan asli. Untuk dapat mengekstraksi pesan dengan benar, dibutuhkan nilai kunci yang sama dengan nilai kunci yang dimasukkan pada saat penyisipan pesan. Berkas yang diekstraksi akan berisi alamat
IV-12
direktori dari citra GIF yang akan diekstraksi. Cara mendapatkan alamat direktori dari citra tersebut dengan yaitu dengan memilih tombol browse yang akan menampilkan sebuah dialog untuk memilih berkas. Setelah semua field terisi, pengguna dapat memulai proses ekstraksi pesan dengan cara memilih tombol “Ekstraksi Pesan”. Namun pada awalnya pengguna diminta menentukan alamat direktori untuk keperluan penyimpanan pesan yang terekstraksi.
Gambar IV-9 Antarmuka Menu Ekstraksi Pesan
4.2.2
Perancangan Kelas
Kelas yang terdapat pada perancangan pada dasarnya sama dengan kelas yang terdapat pada analisis, hanya saja pada perancangan terdapat beberapa penyesuaian. Penyesuaian yang dilakukan adalah penyesuaian nama kelas, atribut serta fungsi yang terdapat pada kelas. Selain itu, terdapat pula penyesuaian lain, yaitu kelas CompressionDecompression tidak diimplementasikan secara langsung, melainkan menggunakan library yang terdapat pada Java.
IV-13
Daftar kelas perancangan dapat dilihat pada Tabel IV-2. Detil dari atribut dan operasi dari masing-masing kelas dapat dilihat pada Lampiran C. Sedangkan diagram kelas perancangan, yang juga menjelaskan mengenai hubungan antar kelas, terdapat pada Gambar IV-10. Tabel IV-2 Daftar kelas perancangan Nama Kelas
Nama Kelas
Perancangan
Analisis
MainView
Interface
Key
Key
Message
Message
SteGifImage
Image
Embed
Embed
Extract
Extract
Keterangan
Kelas yang mengatur tampilan aplikasi yang memfasilitasi interaksi sistem dengan pengguna Kelas yang membangkitkan deretan bilangan acak, untuk mengacak atau mengatur bit-bit pesan Kelas yang menangani proses pembacaan pesan masukan pengguna. Kelas ini juga menangani proses validasi terhadap pesan serta pembacaan ukuran pesan tersebut. Kelas yang menangani seluruh proses terhadap citra GIF. Proses tersebut adalah proses pembacaan citra GIF, validasi citra GIF dan pengambilan data yang terdapat pada citra GIF masukan pengguna. Kelas yang menangani seluruh proses yang terkait dengan penyisipan pesan termasuk pemilihan piksel dan pemeriksaan nilai paritas. Kelas ini juga mengaturjenis keluaran dari proses penyisipan pesan, apakan berkas citra baru atau menimpa berkas citra yang lama. Kelas yang digunakan untuk membaca data yang tersimpan di dalam citra GIF dan menggabungkannya menjadi pesan yang dimasukkan oleh pengirim. Kelas ini juga menangani proses pemilihan piksel serta pengecekan nilai paritas.
IV-14
Gambar IV-10 Diagram kelas perancangan