BAB III ANALISIS DAN PERANCANGAN III.1. Analisa Sistem Pembuatan sistem ini adalah bertujuan membuat aplikasi pengkompresian file. Sistem yang dapat memampatkan ukuran file dengan maksimal sesuai dengan jenis file yang telah diketahui. Metode yang digunakan pada sistem ini adalah dengan metode dictionary yaitu konsep algoritma LZW. Sedangkan tahapan dalam pengkompresian file ada 2 tahapan. Tahap pertama yaitu proses pengkompresian atau pemampatan terhadap beberapa file dan tahap kedua yaitu proses dekompresi terhadap file-file yang telah terkompresi. Desain dan implementasi ini meliputi desain data, deskripsi sistem, desain proses dan implementasi desain dan semua yang diperlukan dalam aplikasi kompresi file yang dirancang.
III.1.1. Analisis Input Dalam sistem pengkompresian file yang akan di implementasikan dalam aplikasi, beberapa file-file yang mempunyai berbagai jenis ekstensi digunakan sebagai objek penelitian. Pengenal tipe file tertera pada nama file tersebut, umumnya yaitu tiga huruf paling kanan setelah titik. Fungsinya adalah untuk mengetahui atau membedakan jenis file. Untuk memperoleh hasil yang maksimal dalam kompresi file dan mempermudah dalam pengujian kebenaran dan keakuratan aplikasi, maka data yang digunakan diambil dari beberapa file yang ada dalam media penyimpanan berdasarkan format dan besar kapasitas file.
32
33
Sehingga dalam aplikasi kompresi file ini mampu memapatkan file-file yang mempunyai tipe file *.txt, *.rtf, dan *.doc serta file citra yang mempunyai tipe *.bmp.
III.1.2. Analisis Proses Permasalahan yang dibahas adalah membuat suatu simulasi data kompresi dengan menggunakan algoritma Lempel Ziv Welch (LZW) guna komuniakasi data pada jaringan lokal. Masalah kompresi data dengan metode Lempel Ziv Welch (LZW) muncul ketika kompresi sedang berlangsung. Pembahasan masalah lebih ditekankan pada algoritma Lempel Ziv Welch (LZW) pada jaringan lokal. Data dari hasil penelitian metode Lempel Ziv Welch (LZW) dibandingkan. Dan dicari perbandingan sebelum dan setelah dilakukan simulasi. Dari perbandingan ini akan diperoleh kelebihan dan kekurangan dari algoritma tersebut. Berikut ini contoh pengaplikasian kompresi dan dekompresi dengan menggunakan algoritma LZW. Contoh berikut ini hanya akan menjelaskan pengkompresian
dan
dekompresi
terhadap
beberapa
karakter
dengan
mengkodekan menurut kode ASCII. 1 Kompresi String dalam Algoritma LZW Sebagai contoh, string “MAMA_MASAK_NASI” akan dikompresi dengan LZW. Isi dictionary pada awal proses diset dengan tujuh karakter dasar yang ada: “M”, “A”, “_”, “S”, “K”, “N”, “I”. bit dictionary yang dipakai untuk contoh ini adalah 8 bit. tahapan kompresi ditunjukkan pada Tabel III.1 berikut. Diketahui : Input String: MAMA_MASAK_NASI
34
bit dictionary: 8 bit Tabel III.1 Tahapan Proses Kompresi No Input String+Char
IN Temporary Dictionary M No A No M Yes(256) MA No _
Dictionary Output Code Char None 256 MA M 257 AM A None 258 MA_ MA
1 2 3 4 5
M A M A _
M MA AM MA MA_
6
M
_M
No
M
259
_M
_
7
A
MA
Yes(256)
MA
-
-
None
8
S
MAS
No
S
260
MAS
MA
9
A
SA
No
A
261
SA
S
10
K
AK
No
K
262
AK
A
11
_
K_
No
_
263
K_
K
12
N
_N
No
N
264
_N
_
13
A
NA
No
A
265
NA
N
14
S
AS
No
S
267
AS
A
15
I
SI
No
I
268
SI
S
16
I
Total awal bit disimpan tanpa kompresi = Total input * bit dictionary = 15 x 8 = 120 bit Besar file setelah dikompresi = Total output * bit dictionary = 12 x 8 = 96 bit Hasil kompresi dari string MAMA_MASAK_NASI yaitu: Decimal
: 77-65-256-32-256-83-65-75-32-78-65-83-73
Heksa
: 4D-41-4D-41-20-4D-41-53-41-4B-20-4E-41-53-49
35
Biner
: 01001101-01000001-01001101-01000001-00100000-01001101 01000001-01010011-01000001-01001011-00100000-01001110 01000001-01010011-01001001
Hasil Rasio Kompresi Ukuran File Terkompres Rasio
=
x 100 % Ukuran File Asli 96
=
x 100 %
120 = 80 % 2 Dekompresi String dalam Algoritma LZW Sebagai contoh, dari hasil output kode kompresi sebelumnya diambil decimal yang dihasilkan “77-65-256-32-256-83-65-75-32-78-65-83-73” dan didekompresi dengan algoritma LZW. bit dictionary yang dipakai adalah 8 bit. tahapan proses dekompresi ditunjukkan pada Tabel III.2. Diketahui : Input kode: 77-65-256-32-256-83-65-75-32-78-65-83-73 Tabel III.2 Tahapan Proses Dekompresi No
String
Char
1 2 3 4 5
Input Code M (77) A (65) 256 _ (32) 256
M A MA _
M A 256 (MA) _ 256 (MA)
String+ Char M MA AMA MA_ _MA
Dictionary Output Code Char M 256 MA A 257 AMA MA 258 MA_ _ 259 _MA MA
6
S (83)
MA
S
MAS
260
MAS
S
7
A (65)
S
A
SA
261
SA
A
8
K (75)
A
K
AK
262
AK
K
9
_ (32)
K
_
K_
263
K_
_
10
N (78)
_
N
_N
264
_N
N
36
11
A (65)
N
A
NA
265
NA
A
12
S (83)
A
S
AS
266
AS
S
13
I (73)
S
I
SI
267
SI
I
Hasil dekompresi dari kode 77-65-256-32-256-83-65-75-32-261-71-85 yaitu “MAMA_MASAK_NASI“.
III.1.3. Analisis Output Dari hasil analisa input dan analisa proses pada akhirnya akan menghasilkan output/hasil keluaran yang diterima pengguna, dari file-file yang telah dikompresi dengan algoritma LZW tipe file diubah menjadi tipe file baru dengan ekstensi yang telah ditentukan sebagai pengenal bahwa file tersebut adalah file kompresi dari hasil proses kompresi dengan aplikasi algoritma LZW yang dirancang, ekstensi file yang ditentukan adalah *.rko.
III.2. Perancangan Sistem Pada perancangan aplikasi pengkompresian file ini ini akan dijelaskan mengenai rancangan aplikasi yang akan dikerjakan serta fitur-fitur yang akan dipakai pada aplikasi tersebut. Objek dari penelitian ini yaitu file-file bertipe *.txt, *.rtf, dan *.doc dan file citra yang mempunyai tipe *.bmp di mana dilakukan terhadap file dengan berbagai ukuran. Hal ini bertujuan untuk mengetahui bagaimanakah pengaruh ukuran file terhadap hasil kompresi yang dilakukan dan kecepatan mentransfer data dalam jaringan LAN.
37
III.2.1. Spesifikasi Sistem Adapun spesifikasi aplikasi yang dirancang memiliki kemampuan sebagai berikut: 1 Pengkompresian file ini dapat memampatkan ukuran file aslinya menjadi lebih kecil, sehingga dapat dengan cepat mentransfer file melalui jaringan dalam kasus ini adalah jaringan LAN. 2 Aplikasi kompresi ini dapat di gunakan pada masing-masing tipe file *.txt, *.rtf, dan *.doc serta file citra yang mempunyai tipe *.bmp. 3 Melakukan dekompresi file terhadap file yang telah terkompresi, agar kembali ke ukuran dan bentuk file aslinya dan file
tersebut dapat digunakan
sebagaimana mestinya. Aplikasi ini ditujukan untuk digunakan oleh semua pihak yang membutuhkan aplikasi kompresi file dalam transfer file dalam jaringan LAN, khususnya para orang-orang dibidang teknologi informasi
yang selalu
berhubungan dengan komputer dan data dalam jaringan LAN. Untuk membangun aplikasi kompresi file sesuai dengan spesifikasi kebutuhan, dibutuhkan lingkungan operasi sebagai berikut Sistem Operasi Windows XP,
Microsoft Visual Studio 2005, Jaringan LAN, Komputer
minimal Pentium 4, Mouse, Keyboard, dan Monitor.
38
III.2.2. Pseudocode Algoritma LZW untuk Kompresi File Metode LZW diterapkan dalam aplikasi yang dirancang bertipe dinamik, di mana hanya dilakukan satu kali pembacaan (one-pass) terhadap file yang akan dikompresi. Pengkodean data dilakukan bersamaan dengan proses penambahan string baru ke dalam dictionary. Berikut ini Pseudo Code dari proses kompresi.
Inisialisasi tabel dengan karakter tunggal dari seluruh string P = inputan karakter pertama WHILE bukan akhir dari arus (stream) inputan C = inputan dari karakter berikutnya IF P + C = adalah salah satu karakter tunggal P=P+C ELSE output kode dari P masukan P + C ke tabel karakter tunggal P=C END WHILE output kode dari P
III.2.3. Flowchart Algoritma LZW untuk Kompresi File Algoritma LZW dalam kompresi file, dimulai dari pembacaan arry buffer dari file, kemudian pengesetan kode berikutnya dengan asumsi kode 256, lalu pembersihan Tabel string untuk dictionary. Proses dimulai dengan pengesetan input string pertama dan set karakter pertama, lalu dilakukan pengulangan dengan syarat karakter belum habis hingga akhir. Lalu string yang diperoleh dicocokan dengan setiap karakter string dalam dictionary. Jika tidak ada kecocokan maka set kode baru dalam dictionary, jika ada kecocokan maka set index kode dari string dari dictionary, hal ini dilakukan hingga string terakhir. Hasil pengkadean dilakukan pembacaan setiap byte lalu dijadikan file baru dengan ektensi *.rko.
39
Adapun gambar dari flowchar algoritma dari rancangan aplikasi kompresi file dapat dilihat pada gambar III.1.
Gambar III.1. Flowchart Algoritma LZW Untuk Kompresi File
40
III.2.4. Pseudocode Algoritma LZW untuk Dekompresi File Algoritma dekompresi LZW ini dimulai dengan menyimpan kode pertama hasil kompresi dan disimpan ke dalam variabel pertama dan output-kan variabel pertama. Kemudian
input kode berikutnya dan disimpan ke dalam variabel
kedua. Variabel kedua dicocokkan dalam dictionary. Jika ada dalam dictionary, berarti newstring diisi dengan kedua. Jika tidak ada dalam dictionary, maka newstring diisi dengan pertama dan newstring baru diisi dengan newstring lama ditambah dengan newchar. Kemudian output-kan newstring. Dilakukan juga proses newchar diisi dengan karakter pertama dari newstring. Variabel pertama ditambah dengan variabel newchar dimasukkan dalam dictionary dan variabel pertama diisi dengan variabel kedua. Hal ini dilakukan seterusnya sampai akhir dekompresi file.
Inisialisasi tabel dengan karakter tunggal dari seluruh string OLD = inputan karakter pertama output kode ASCII dari OLD WHILE bukan akhir dari arus (stream) inputan NEW = inputan dari karakter berikutnya IF NEW adalah salah satu karakter tunggal S = terjemahan kode ASCII dari OLD S=S+C ELSE S = terjemahan kode ASCII dari NEW output S C = karakter pertama dari S masukan OLD + C ke tabel karakter tunggal OLD = NEW END WHILE
41
III.2.5. Flowchart Algoritma LZW untuk Dekompresi File Algoritma dekompresi LZW ini dimulai dengan menyimpan kode pertama hasil kompresi dan disimpan ke dalam variabel Ocode dan output-kan variabel Ocode. Kemudian input kode berikutnya dan disimpan ke dalam variabel Ncode. Variabel Ncode dicocokkan dalam dictionary. Jika ada dalam dictionary, berarti newstring diisi dengan Ncode. Jika tidak ada dalam dictionary, maka newstring diisi dengan Ocode dan newstring baru diisi dengan newstring lama ditambah dengan newchar. Kemudian output-kan newstring. Dilakukan juga proses newchar diisi dengan karakter pertama dari newstring. Variabel Ocode ditambah dengan variabel newchar dimasukkan dalam dictionary dan variabel Ocode diisi dengan variabel Ncode. Hal tersebut dilakukan seterusnya sampai akhir file. Proses dekompresi pada LZW dilakukan dengan prinsip yang sama seperti proses kompresi. Pada awalnya dictionary diinisialisasi dengan semua karakter dasar yang ada, Lalu pada setiap langkah, kode dibaca satu persatu dari stream kode, dikeluarkan string dari dictionary yang berkorespondensi dengan kode tersebut, dan ditambahkan string baru ke dalam dictionary. Metode LZW yang diterapkan dalam penelitian ini bertipe dinamik, dimana hanya dilakukan satu kali pembacaan (one-pass) terhadap file yang akan dikompresi. Pengkodean data dilakukan secara on the fly, bersamaan dengan proses penambahan string baru ke dalam dictionary. Berikut ini Flowchart dari proses dekompresi file menggunakan algoritma LZW. Yang dapat dilihat pada gambar III.2.
42
Gambar III.2. Flowchart Algoritma LZW Untuk Dekompresi File
43
III.3. Perancangan Interface Aplikasi ini dibangun dengan desain User Interface form atau antar muka yaiut form spalsh, form inti yang terdiri dari Interface proses kompresi dan dekompresi, Interface bantuan, serta Interface informasi. Berikut merupakan gambar dari Interface sistem yang dirancang.
III.3.1. Interface Halaman Form Splash Interface splash merupkan tampilan yang akan dihadirkan untuk pembuka sebelum masuk ke form utama, dapat dilihat pada gambar III.3.
Kompresi File Dengan Algoritma Lempel Ziv Welch (LZW) Dalam Pengiriman Data Pada Jaringan Local Area Network Logo STMIK POTENSI UTAMA
Exit
Next Progress Bar
Gambar III.3. Interface Halaman Form Splash Pada halaman form splash ini menampilkan judul dari skripsi, logo perguruan tinggi, dan 2 (dua) buah tombol yaitu tombol Exit untuk keluar dari program dan tombol Next untuk masuk kedalam aplikasi.
44
III.3.2. Interface Halaman Form Utama Interface halaman form utama merupakan tampilan form dengan menu dan tools yang disediakan dengan beberapa fungsi berbeda. Terdapat sedikit perbedaan tampilan antara form aplikasi untuk server dan klien yaitu antara tombol ”Sambungkan” untuk IP Address server terdapat pada form klien sedangkan pada form server adalah tombol ”Start”, berikut Interface form utama. 1. Interface Halaman Form Utama Server Pada halaman form utama server menampilkan menu untuk proses file, menu bantuan, dan menu informasi, yang dapat dilihat pada gambar III.4. LZW SERVER FORM PROSES FILE
BANTUAN
Koneksi Informasi 00:00 : xxxx 00:00 : xxxx 00:00 : xxxx ……..
INFORMASI
Navigasi Server IP Address : Proses File : Kirim Hasil Proses Ke : Terima File/Lokal Direktori :
127.0.0.1 Nama Host: xxxx Kompresi 1111111111 File Dekompresi File 1ÿ98590866 xxxx Cari Folder 7527979322 xxxx 3863936271 Jalankan Server
File Masukan Lokasi FIle XXXX XXXX XXXX
Hapus Informasi
Cari File Hapus Ulangi Keluar
Progress Bar
PROSES
File Keluaran
Ukuran File 9999 Byte 9999 Byte 9999 Byte
Proses LZW : 00:00:00:00:
Lokasi FIle XXXX XXXX XXXX
Proses Transfer : 00:00:00:00:
Ukuran File 9999 Byte 9999 Byte 9999 Byte
Gambar III.4. Interface Halaman Form Utama Server
Rasio 99 % 99 % 99 %
45
Pada halaman form utama server menampilkan menu untuk proses, menu bantuan, dan menu informasi, adapun fungsi-fungsi tersebut yaitu: 1. Tab Proses File, merupakan menu untuk masuk kehalaman proses kompresi dan dekompresi file, 2. Tab Bantuan, merupakan menu untuk masuk kehalaman panduan penggunaan aplikasi. 3. Tab Informasi, merupakan menu untuk masuk kehalaman informasi mengenai program aplikasi yang dirancang. 4. Panel Koneksi Informasi, merupakan kotak mengenai informasi server dan client, seperti penanda sukses transfer data dan lainnya. Terdapat tombol “Hapus Informasi” untuk membersihkan daftar informasi. 5. Panel Navigasi, merupakan panel dalam setelan aktifitas apa yang akan dilakukan, terdapat informasi IP Address komputer yang digunakan dan Nama Host, inputan proses yang ingin dilakukan, tombol “Jalankan Server” untuk mengaktifkan server dan inputan penyimpanan file yang. 6. Panel File Masukan, merupakan daftar inputan file yang akan diproses, terdapat tombol “Cari File” guna mencari file, “Hapus” untuk menghapus file dari daftar, “Ulangi” untuk menyetel seperti awal, dan “Keluar” untuk menutup aplikasi. 7. Panel File Keluaran, merupakan daftar output file dari proses, berisi informasi ukuran file dan rasio hasil kompresi. 8. Tombol Proses dan Progress Bar, merupakan tombol untuk memulai proses file yang ditunjukan dengan Progress Bar sebagai penanda proses.
46
2. Interface Halaman Form Utama Client Pada halaman form utama klien ini menampilkan menu untuk proses file, menu bantuan, dan menu informasi, yang dapat dilihat pada gambar III.5. LZW CLIENT FORM PROSES FILE
Koneksi Informasi 00:00 : xxxx 00:00 : xxxx 00:00 : xxxx ……..
INFORMASI
BANTUAN
Navigasi Client IP Address : Proses File : Kirim Hasil Proses Ke : IP Address Server : Terima File/Lokal Direktori :
127.0.0.1 Nama Host: xxxx Kompresi 1111111111 File Dekompresi File 1ÿ98590866 xxxx Sambungkan 7527979322 127.0.0.1 3863936271 xxxx Cari Folder
File Masukan Lokasi FIle XXXX XXXX XXXX
Hapus Informasi
Cari File Hapus Ulangi Keluar
Progress Bar
PROSES
File Keluaran
Ukuran File 9999 Byte 9999 Byte 9999 Byte
Proses LZW: 00:00:00:00:
Lokasi FIle XXXX XXXX XXXX
Proses Transfer : 00:00:00:00:
Ukuran File 9999 Byte 9999 Byte 9999 Byte
Rasio 99 % 99 % 99 %
Gambar III.5. Interface Halaman Form Utama Client Pada halaman form utama klien ini menampilkan menu untuk proses, menu bantuan, dan menu informasi, adapun fungsi-fungsi tersebut yaitu: 1. Tab Proses File, merupakan menu untuk masuk kehalaman proses kompresi dan dekompresi file, 2. Tab Bantuan, merupakan menu untuk masuk kehalaman panduan penggunaan aplikasi.
47
3. Tab Informasi, merupakan menu untuk masuk kehalaman informasi mengenai program aplikasi yang dirancang. 4. Panel Koneksi Informasi, merupakan kotak mengenai informasi server dan klien, seperti penanda sukses transfer data dan lainnya. Terdapat tombol “Hapus Informasi” untuk membersihkan daftar informasi. 5. Panel Navigasi, merupakan panel dalam setelan aktifitas apa yang akan dilakukan, terdapat informasi IP Address komputer yang digunakan dan Nama Host, inputan proses yang ingin dilakukan, inputan IP Address untuk koneksi ke server dan inputan penyimpanan file yang diterima. 6. Panel File Masukan, merupakan daftar inputan file yang akan diproses, terdapat tombol “Cari File” guna mencari file, “Hapus” untuk menghapus file dari daftar, “Ulangi” untuk menyetel seperti awal, dan “Keluar” untuk menutup aplikasi. 7. Panel File Keluaran, merupakan daftar output file dari proses, berisi informasi ukuran file dan rasio hasil kompresi. 8. Tombol Proses dan Progress Bar, merupakan tombol untuk memulai proses file yang ditunjukan dengan progres bar sebagai penanda sedang memproses file.
III.3.3. Interface Halaman Bantuan Interface halaman bantuan merupakan halaman yang berfungsi untuk memberikan instruksi penggunaan aplikasi bagi pengguna, yang dapat dilihat pada gambar III.6.
48
LZW SERVER / CLIENT FORM PROSES FILE
BANTUAN
INFORMASI
Berisi tata cara dan instruksi penggunaan aplikasi untuk user
Gambar III.6. Interface Halaman Bantuan Pada halaman ini terdapat penjelasan mengenai penggunaan aplikasi, dan informasi tools yang terdapat pada form utama. Seperti fungsi tombol, fungsi panel, list daftar input dan output file. Penggunaan dan setting sebelum melakukan proses pada aplikasi. Seluruh isi teks dari isi informasi bantuan ini di load dari file berektensi *.txt yang telah di ketik sesuai isi dan panduan yang ingin ditampilkan.
III.3.4. Interface Halaman Informasi Interface halaman informasi merupakan halaman yang berisi mengenai penulis dan perguruan tinggi serta tujuan perancangan aplikasi, dapat dilihat pada gambar III.7. LZW SERVER / CLIENT FORM PROSES FILE
BANTUAN
INFORMASI
Berisi Informasi mengenai penulis dan perguruan tinggi serta tujuan perancangan aplikasi.
Gambar III.7. Interface Halaman Informasi
49
Pada halaman ini terdapat catatan penulis mengenai aplikasi yang dirancang, informasi yang berisi tujuan perancangan aplikasi dan ucapan terima kasih kepada pihak-pihak yang mendukung penulis dalam penyelesaian tugas akhir ini. Seluruh isi teks dari isi informasi ini di load dari file berektensi *.txt yang telah di ketik sesuai isi yang ingin ditampilkan.