50 BAB 3
ANALISA DAN PERANCANGAN SISTEM
3.1 Gambaran Umum Permasalahan
Proses pertukaran file dengan bentuk teks, audio, video, gambar dan lainnya
semakin meluas pada berbagai kalangan. File-file tersebut ada kalanya semakin
membesar dan memerlukan media penyimpanan yang semakin besar pula. Apabila ukuran file terus membesar akan menyebabkan backup terhadap file akan semakin sulit
dilakukan serta menambah waktu dan menghabiskan kapasitas bandwidth dalam proses
pertukaran file yang terjadi dalam jaringan. Dengan semakin banyaknya kapasitas bandwidth yang dibutuhkan dalam proses pertukaran file maka biaya yang dikeluarkan
pun akan bertambah pula. Salah satu faktor yang menyebabkan biaya mahal, dikarenakan infrastruktur jaringan internet yang terhubung dengan pengguna akhir memiliki harga yang mahal. Khususnya di Indonesia dimana harga bandwidth akan
semakin mahal berbanding lurus antara harga dan kapasitas.
Ada beberapa pemecahan masalah yang dapat ditawarkan, diantaranya meningkatkan kapasitas bandwidth atau meminimalkan ukuran file. Kedua solusi diatas
dapat dilakukan, namun pengompresan file merupakan prioritas utama. Hal ini
dikarenakan pengompresan file akan menghemat bandwitdh dengan cara menghilangkan
pengulangan karakter untuk mengurangi jumlah data yang ditransaksikan serta menurunkan penggunaan bandwidth yang digunakan dalam jaringan. Oleh karena itu,
diperlukan sebuah piranti lunak ataupun piranti keras yang dapat meminimalkan ukuran
file. Perbedaan mendasar antara piranti lunak dengan piranti keras terletak pada proses
penanganan transaksi data, dimana piranti keras langsung bekerja pada layer fisikal
menangani proses komputasi sehingga akan menyebabkan berkurangnya proses yang harus dijalankan, sedangkan proses yang dilakukan piranti lunak melewati lebih banyak proses dari layer aplikasi sampai pada layer fisikal, perbedaan lainnya adalah biaya yang
harus dikeluarkan lebih besar bila dilakukan penambahan piranti keras. Penggunaan piranti lunak dikarenakan faktor biaya yang lebih murah serta tidak perlu menambah peralatan yang baru kedalam jaringan yang telah ada. Penggunaan sistem dibutuhkan agar proses pengiriman file antar komputer dapat berlangsung lebih cepat dan
menurunkan tingkat penggunaan bandwidth, tanpa harus menambah biaya yang besar.
3.2 Gambaran Umum Kompresi File
Dengan semakin membesarnya ukuran file yang terjadi dalam transaksi
jaringan, maka diperlukan suatu pemecahan yang terbaik. Sesuai dengan gambaran permasalahan diatas, pemampatan ukuran dari file yang ditransaksikan dalam jaringan
dengan tetap menjaga integritasnya mampu mengatasi masalah keterbatasan bandwidth yang tersedia sehingga dapat mengatasi transaksi jaringan yang semakin lama semakin banyak.
Kompresi adalah proses pengubahan sekumpulan file menjadi suatu bentuk
kode untuk menghemat kebutuhan tempat penyimpanan dan waktu untuk transmisi file.
Saat ini terdapat berbagai tipe algoritma kompresi antara lain : Huffman Coding, LZW,
mengubah pesan awal (isi file input) menjadi sekumpulan codeword, metode kompresi
terbagi menjadi dua kelompok, yaitu : 1. Metode Statik
Menggunakan peta kode yang selalu sama. Metode ini membutuhkan dua fase (two-pass), fase pertama untuk menghitung
probabilitas kemunculan tiap simbol atau karakter dan menentukan peta kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan. Salah satu contohnya adalah Algoritma
Huffman.
2. Metode Dinamik (Adaptif)
Menggunakan peta kode yang dapat berubah dari waktu ke waktu. Metode ini disebut adaptif karena peta kode mampu beradaptasi terhadap perubahan karakteristik isi file selama proses kompresi berlangsung.
Metode ini bersifat one-pass, karena hanya diperlukan satu kali pembacaan
terhadap isi file. Salah satu contohnya adalah algoritma LZW.
Berdasarkan teknik pengkodean atau pengubahan simbol yang digunakan, metode kompresi dapat dibagi ke dalam tiga kategori, yaitu :
1. Metode Symbolwise
Menghitung peluang kemunculan dari tiap simbol dalam file input,
sering muncul diberi kode yang lebih pendek dibandingkan simbol yang lebih jarang muncul, salah satu contohnya adalah algoritma huffman.
2. Metode Dictionary
Menggantikan karakter atau fragmen dalam file input dengan indeks
lokasi dari karakter atau fragmen tersebut dalam sebuah kamus (dictionary). Salah satu contohnya adalah algoritma LZW.
3. Metode Predictive
Menggunakan model finite-context atau finite-state untuk
memprediksi distribusi probabilitas dari simbol-simbol selanjutnya.
Ada beberapa faktor yang sering menjadi pertimbangan dalam memilih suatu metode kompresi yang tepat, yaitu kecepatan kompresi, sumber daya yang dibutuhkan (memori, kecepatan prosesor), ukuran file hasil kompresi, besarnya redudansi dan
kompleksitas algoritma. Tidak ada metode kompresi yang paling efektif untuk semua jenis file.
Dalam perbandingan ini, diimplementasikan dua buah metode kompresi, yaitu algoritma huffman dan algoritma LZW yang mewakili metode statik dan metode
dinamik. Kedua metode ini diujikan untuk mengkompresi dan mendekompresi berbagai tipe dan ukuran file yang berbeda. Setelah itu akan dilakukan analisis statistik untuk
membandingkan kinerja dari kedua metode ini berdasarkan dua faktor, yaitu rasio atau perbandingan ukuran file hasil kompresi terhadap file asli dan kecepatan kompresinya.
3.3 Gambaran Umum Kompresi Huffman Coding
Algoritma Huffman dibuat oleh seorang mahasiswa MIT bernama David
Huffman, merupakan salah satu metode paling lama dan paling terkenal dalam kompresi teks. Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode
Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit,
dimana karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dana
karakter yang jarang muncul dikodekan dengan rangkaian kode bit yang lebih panjang.
Secara garis besar algoritma Huffman dapat dijabarkan sebagai berikut :
1. Fase pertama
Baca (scan) file input dari awal hingga akhir untuk menghitung frekuensi
kemunculan tiap karakter dalam file. n ← jumlah semua karakter dalam file
input. T ← daftar semua karakter dan nilai peluang kemunculannya dalam fileinput. Tiap karakter menjadi node daun pada pohon Huffman.
2. Fase kedua
Ulangi sebanyak (n -1) kali :
a. Item m1 dan m2 ← dua subset dalam T dengan nilai peluang yang
terkecil.
b. Gantikan m1 dan m2 dengan sebuah item {m1,m2} dalam T, dimana
nilai peluang dari item yang baru ini adalah penjumlahan dari nilai peluang m1 dan m2.
c. Buat node baru {m1, m2} sebagai father node dari node m1 dan m2
dalam pohon Huffman.
3. T sekarang tinggal berisi satu item, dan item ini sekaligus menjadi node
akar pohon Huffman.
Panjang kode untuk suatu simbol adalah jumlah berapa kali simbol tersebut bergabung dengan item lain dalam T.
Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA” membutuhkan
representasi 7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut:
01000001 01000010 01000001 01000011 01000011 01000100 01000001
A B A C C D A
Untuk mengurangi jumlah bit yang dibutuhkan, panjang kode untuk tiap karakter dapat
dipersingkat, terutama untuk karakter yang frekuensi kemunculannya besar. Pada string
di atas, frekuensi kemunculan A = 3, B = 1, C = 2, dan D = 1, sehingga dengan menggunakan algoritma di atas diperoleh kode Huffman seperti pada Tabel 3.1
Tabel 3.1 Kode Huffman untuk “ABACCDA” Simbol Frekuensi Peluang Kode Huffman
A 3 3/7 0
B 1 1/7 110 C 2 2/7 10 D 1 1/7 111
Dengan menggunakan kode Huffman ini, string “ABACCDA”
dibutuhkan hanya 13 bit. Dari Tabel 3.1 tampak bahwa kode untuk sebuah
simbol/karakter tidak boleh menjadi awalan dari kode simbol yang lain guna menghindari kerancuan (ambiguitas) dalam proses dekompresi atau decoding. Karena
tiap kode Huffman yang dihasilkan unik, maka proses dekompresi dapat dilakukan
dengan mudah. Contoh : saat membaca kode bit pertama dalam rangkaian bit
“011001010110”, yaitu bit “0”, dapat langsung disimpulkan bahwa kode bit “0”
merupakan pemetaan dari simbol “A”. Kemudian baca kode bit selanjutnya, yaitu bit
“1”. Tidak ada kode Huffman “1”, lalu baca kode bit selanjutnya, sehingga menjadi
“11”.
Tidak ada juga kode Huffman “11”, lalu baca lagi kode bit berikutnya,
sehingga menjadi “110”. Rangkaian kode bit “110” adalah pemetaan dari simbol “B”.
Metode Huffman yang diterapkan dalam penelitian ini adalah tipe statik, dimana
dilakukan dua kali pembacaan (two-pass) terhadap file yang akan dikompresi. Pertama
untuk menghitung frekuensi kemunculan karakter dalam pembentukan pohon Huffman,
dan kedua untuk mengkodekan simbol dalam kode Huffman.
3.4 Gambaran Umum Kompresi LZW
Algoritma LZW dikembangkan dari metode kompresi yang dibuat oleh Ziv dan Lempel pada tahun 1977. Algoritma ini melakukan kompresi dengan menggunakan
dictionary, dimana fragmen-fragmen teks digantikan dengan indeks yang diperoleh dari
sebuah “kamus”. Prinsip sejenis juga dilakukan dalam kode Braille, di mana kode-kode khusus digunakan untuk merepresentasikan kata-kata yang ada.
Pendekatan ini bersifat adaptif dan efektif karena banyak karakter dapat dikodekan dengan mengacu pada string yang telah muncul sebelumnya dalam teks.
Prinsip kompresi tercapai jika referensi dalam bentuk pointer dapat disimpan dalam
jumlah bit yang sedikit dibandingkan string aslinya.
Secara garis besar algoritma LZW dapat dijabarkan sebagai berikut :
1. Dictionary diinisialisasi dengan semua karakter dasar yang ada:
{‘A’..’Z’,’a’..’z’,’0’..’9’}.
2. P ← karakter pertama dalam stream karakter.
3. C ← karakter berikutnya dalam stream karakter.
4. Apakah string (P + C) terdapat dalam dictionary ?
• Jika ya, maka P ←P + C (gabungkan P dan C menjadi string baru).
• Jika tidak, maka :
i. Output sebuah kode untuk menggantikan string P.
ii. Tambahkan string (P + C) ke dalam dictionary dan berikan
nomor/kode berikutnya yang belum digunakan dalam dictionary
untuk string tersebut.
iii. P ← C.
5. Apakah masih ada karakter berikutnya dalam stream karakter ?
• Jika ya, maka kembali ke langkah 2.
• Jika tidak, maka output kode yang menggantikan string P, lalu
terminasi proses (stop).
Sebagai contoh, string “ABBABABAC” akan dikompresi dengan LZW. Isi
dictionary pada awal proses diset dengan tiga karakter dasar yang ada: “A”, “B”, dan
posisi sekarang dari stream karakter dan kolom karakter menyatakan karakter yang
terdapat pada posisi tersebut.
Kolom dictionary menyatakan string baru yang sudah ditambahkan ke dalam dictionary dan nomor indeks untuk string tersebut ditulis dalam kurung siku. Kolom output menyatakan kode output yang dihasilkan oleh langkah kompresi. Hasil proses
kompresi ditunjukkan pada Gambar 3.1.
Tabel 3.2 Tahapan proses kompresi LZW
Langkah Posisi Karakter Dictionary Output
1. 1 A [4] A B [1] 2. 2 B [5] B B [2] 3. 3 B [6] B A [2] 4. 4 A [7] A B A [4] 5. 6 A [8] A B A C [7] 6. 9 C - - - [3]
Gambar 3.1 Proses kompresi LZW
Proses dekompresi pada LZW dilakukan dengan prinsip yang sama seperti proses kompresi. Algoritma diberikan pada Gambar 3.1. Pada awalnya, dictionary
diinisialisasi dengan semua karakter dasar yang ada. Lalu pada setiap langkah, kode
stream karakter : a b b ab aba c
kode output : [1] [2] [2] [4] [7] [3]
frasa baru yang 4 5 6 7 8 ditambahkan ke = = = = =
dibaca satu per satu dari stream kode, dikeluarkan string dari dictionary yang
berkorespondensi dengan kode tersebut, dan ditambahkan string baru ke dalam dictionary. Tahapan proses dekompresi ini ditunjukkan pada Tabel 3.3. 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.
Proses algoritma dekompresi LZW dapat dijabarkan sebagai berikut :
1. Dictionary diinisialisasi dengan semua karakter dasar yang ada :
{‘A’..’Z’,’a’..’z’,’0’..’9’}.
2. CW ← kode pertama dari stream kode (menunjuk ke salah satu karakter
dasar).
3. Lihat dictionary dan output string dari kode tersebut (string.CW) ke stream
karakter.
4. PW ←CW; CW ← kode berikutnya dari stream kode.
5. Apakah string.CW terdapat dalam dictionary ?
Jika ada, maka :
i. output string.CW ke stream karakter ii. P ←string.PW
iii. C ← karakter pertama dari string.CW
iv. tambahkan string (P+C) ke dalam dictionary
Jika tidak, maka :
i. P ←string.PW
iii. output string (P+C) ke stream karakter dan tambahkan string
tersebut ke dalam dictionary (sekarang berkorespondensi dengan CW);
6. Apakah terdapat kode lagi di stream kode ?
Jika ya, maka kembali ke langkah 4. Jika tidak, maka terminasi proses (stop).
Tabel 3.3 Tahapan proses dekompresi LZW Langkah Kode Output Dictionary 1. [1] A --- 2. [2] B [4] A B 3. [2] B [5] B B 4. [4] A B [6] B A 5. [7] A B A [7] A B A 6. [3] C [8] A B A C
3.5 Perbandingan Hasil Kompresi Algoritma Huffman dengan LZW
Algoritma Huffman dan LZW merupakan contoh algoritma kompresi yang
digunakan sebagai perbandingan algoritma kompresi yang akan digunakan sebagai algoritma kompresi yang baik digunakan dalam sistem ini. Perbandingan ini menitikberatkan pada ukuran file hasil kompresi, rasio, waktu kompresi serta waktu
dekompresi. Sebagai bahan untuk perbandingan, digunakan file-file yang dipandang
cukup memadai untuk mewakili sebagian besar tipe file yang ada, yaitu :
1. File aplikasi ( Excel, AcrobatReader, Powerpoint, Flash )
2. File object/biner ( file com, file sistem/dll, file hasil kompilasi : C, Java, BorlandDelphi )
4. File basis data ( Access, MySql )
5. File multimedia ( file mp3, file avi, file mpeg, file midi )
6. File Teks ( file txt, file doc, file ini - konfigurasi Windows )
7. File executable ( file exe )
8. File yang telah di kompresi ( file WinZip )
9. File source code ( html, c, cpp, pas )
Spesifikasi komputer dimana kedua algoritma ini dibandingkan adalah sebagai berikut :
1. Prosesor : Intel Pentium 4 2.40 GHz. 2. Memory : DDRAM 256 MB.
3. Kapasitas penyimpanan (Harddisk) : 80 Gb.
4. Sistem Operasi : Windows XP Professional SP2
Tabel 3.4 Percobaan Perbandingan Kompresi Algoritma Huffman dan LZW
Ukuran Hasil Kompresi (Bytes) Rasio Kompresi (%) Waktu Kompresi (Mili Sekon) Waktu Dekompresi (Mili Sekon) No Tipe File Ukuran File Asli (Bytes) Huffman LZW Huffman LZW Huffman LZW Huffman LZW 1 XLS 25,870,848 15,372,726 22,804,363 41 12 2.780 2.345 1.827 1.033 2 PDF 44,695,203 38,265,341 49,050,151 15 -10 5.625 4.531 4.782 1.766 3 PPT 10,210,816 9,669,276 13,525,766 6 -33 1.406 906 1.282 470 4 COM 306.597 248.541 289.414 19 6 190 46 46 61 5 DLL 23,013,732 17,970,264 23,291,046 22 -2 2.750 1.811 2.094 935 6 BMP 9,068,816 7,997,731 10,435,141 12 -16 1.406 764 1.000 359 7 JPG 19,836,161 19,513,350 27,801,845 2 -41 2.672 1.782 2.594 860 8 MDB 16,580,608 8,443,193 10,867,528 50 35 1.768 1.608 935 564 9 MP3 39,973,527 39,742,879 55,200,405 1 -39 4.952 4.375 5.141 1.750 10 MPG 470.000.000 454,228,000 624,066,000 4 -33 59.921 78.889 74.155 57.934 11 TXT 8,455,948 4,346,508 3,163,329 49 63 767 625 485 234 12 DOC 11,822,592 9,006,572 11,814,016 24 1 1.124 1.079 1.061 438 13 EXE 4,913,182 3,780,502 4,760,239 24 4 673 406 421 188 14 ZIP 46,572,690 46,196,210 63,746,236 1 -37 5.500 5.892 5.923 2.000 15 HTML 782,123 507,862 362,457 36 54 32 78 93 0 16 CPP 649,576 457.500 324,344 30 51 95 94 94 32
3.5.1 Kesimpulan Perbandingan Hasil Kompresi Algoritma Huffman dengan LZW
Dari data percobaan yang dilakukan dapat disimpulkan beberapa hal mengenai perbandingan kinerja kedua algoritma kompresi yang telah diimplementasikan yaitu :
1. Secara rata-rata algoritma Huffman menghasilkan rasio file kompresi yang
baik (±21 %) , sedangkan dengan algoritma LZW rasio file yang dihasilkan
kurang baik (±0.9375 %).
2. Hasil kompresi Huffman lebih baik dibandingkan LZW pada kasus file
aplikasi, file object/biner , file sistem, file gambar, file basis data, file
multimedia, file executable, file hasil kompresi, file *.doc. Algoritma Huffman memberikan hasil kompresi yang relatif hampir sama untuk setiap
kasus uji, sedangkan LZW memberikan hasil kompresi yang buruk (ukuran
file hasil kompresi bisa lebih besar dari file asli) untuk file tersebut.
3. Secara rata-rata algoritma LZW membutuhkan waktu kompresi yang hampir sama dengan algoritma Huffman, Namun dalam proses dekompresi,
algoritma LZW lebih unggul dibandingkan dengan algoritma Huffman.
4. Kecepatan kompresi algoritma LZW secara signifikan berkurang pada file
*.xls, file object/biner , file sistem, file basis data, file multimedia, file executable, file hasil kompresi, file *.doc. Namun berbeda dengan
algoritma Huffman yang kecepatan kompresinya hampir merata untuk
semua kategori file.
Dengan sejumlah kesimpulan diatas, maka pada sistem ini akan dirancang dengan menggunakan algoritma kompresi Huffman. Penyebab utama penggunaan
algoritma ini karena proses kompresi yang dilakukan oleh algoritma Huffman dapat
meminimalkan atau memperkecil ukuran file pada hampir semua tipe file. Dan waktu
kompresi serta dekompresi yang diperlukan bergantung pada banyaknya pengulangan isi karakter yang terdapat dalam file yang akan dikompresi.
3.6 Perancangan Proses Program Kompresi
Perancangan proses program kompresi secara umum menjelaskan, bahwa file
yang akan dikompres yang dijadikan input, akan diolah komputer sedemikian rupa.
Sehingga diperoleh output file hasil kompresi yang lebih kecil ukurannya dan integritas
data didalamnya tetap terjaga dengan baik.
Gambar 3.2 Proses kompresi
Program kompresi akan menggunakan algoritma Huffman. Prinsip pengkodean
yang digunakan oleh algoritma ini mirip dengan kode Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana karakter yang sering
dikodekan dengan rangkaian kode bit yang lebih panjang. Proses pengompresian file
bisa dilihat seperti gambar 3.29.
Aplikasi kompresi yang ada pada saat ini, seperti WinZip. Menggunakan penggabungan dari beberapa algoritma kompresi, sehingga WinZip memiliki keunggulan dalam hal rasio kompresi yang lebih besar dibandingkan dengan algoritma
Huffman yang akan diimplementasikan dalam sistem ini. Namun waktu yang dibutuhkan
untuk proses kompresi dan dekompresi pada WinZip tidak jauh berbeda dengan algoritma Huffman.
Pengiriman file antar komputer dengan menggunakan sistem yang akan dibuat
ini, hampir memiliki kesamaan dengan cara pengiriman file yang telah dikompresi
dengan aplikasi WinZip melalui email. Namun pengiriman file dengan sistem ini
memiliki kelebihan dalam segi otomatisasi. Pengguna tidak perlu mengkompresi file
secara manual sebelum mengirimkannya ke komputer tujuan. Dengan sistem yang akan dibuat, pengguna hanya perlu memasukkan alamat IP komputer tujuan dan mengirimkan
file yang telah ditentukan. Proses kompresi akan dilakukan secara otomatis pada
komputer server asal, kemudian akan didekompresi pada server tujuan sebelum
mengirimkan file yang dikirim ke komputer tujuan. Untuk penjelasan lebih lanjut bisa
Tabel 3.5 Tabel Perbandingan WinZip dan WEK Transporter
Perbandingan WinZip WEKTransporter
Algoritma Menggunakan gabungan dari beberapa algoritma Hanya menggunakan satu jenis algoritma, algoritma Huffman Otomatisasi Manual, membutuhkan
campur tangan pengguna
Proses dilakukan secara otomatis, dari pengiriman file,
kompresi serta dekompresi. Keamanan data Terdapat fungsi proteksi enkripsi Tidak terdapat fungsi proteksi
Enkapsulasi data Tidak ada Ada
Pemecahan file Sesuai dengan kapasitas penyimpanan data Dilakukan pada ukuran diatas 30 Kb file dengan
Rasio Kecepatan Kompresi dan Dekompresi
6 : 4 6 : 5
Lisensi Trial Open Source
3.7 Perancangan Sistem
Sistem yang akan dibuat menggunakan pendekatan sistematis dan berurutan
(Linear Sequential Model). Tahap-tahap yang akan dilakukan dalam perancangan sistem
ini adalah sebagai berikut :
1. System/Information Engineering and Modeling
Tahap ini mulai menetapkan kebutuhan-kebutuhan semua elemen sistem dan mengalokasikan beberapa bagian dari kebutuhan-kebutuhan ini ke piranti lunak. Menetapkan kebutuhan piranti keras dan basis data yang dibutuhkan dalam sistem ini, menetapkan alat-alat yang dibutuhkan seperti
2. Software Requirement Analysis
Pada tahap ini penetapan sistem difokuskan pada piranti lunak, seperti penetapan fungsi-fungsi apa saja yang dibutuhkan dalam sistem, kemampuan apa saja yang dapat dibuat, kinerja dan antar muka piranti lunak. Dalam pembuatan sistem ini piranti lunak yang terlibat adalah JSP
(Java Service Pages), MySQL Server, dan Borland Delphi. JSP digunakan
untuk mengirimkan file yang akan dikirimkan kepada komputer tujuan.
Penggunaan MySQL Server adalah untuk menyiapkan database untuk
keperluan penyimpanan informasi data transaksi pengiriman dalam
database. Sedangkan Borland Delphi digunakan dalam pengembangan
aplikasi WEKTransporter
3. Design
Perancangan piranti lunak dititik beratkan pada struktur data, arsitektur piranti lunak, representasi antar muka dan prosedur secara detail. Struktur data yang akan dirancang adalah data yang diupload, data yang
dikompres, data yang dipecah, data yang dikirim, data yang diterima, data yang digabung kembali, dan data yang didekompres. Arsitektur piranti lunak dirancang sesederhana mungkin sehingga pengguna dapat menggunakannya dengan mudah. Representasi antar muka akan dirancang menggunakan Macromedia Dreamweaver dan Borland Delphi. Prosedur
yang dibangun dalam sistem ini dibentuk kedalam modul-modul dengan tujuan untuk mempermudah pembacaan kode secara sistematis dan mempermudah proses pengkoreksian. Modul-modul tersebut antara lain
modul upload file, modul pembacaan database, modul kompresi, modul
pengiriman, modul dekompresi, dll.
4. Code Generation
Rancangan kode yang telah dibuat diubah kedalam bentuk yang dapat dibaca oleh kompiler. Proses pengkodean ini merupakan hal yang bersifat mekanik. Pengkodean ini diterjemahkan kedalam dua bahasa pemrograman yaitu JSP dan Delphi. WEK Loader menggunakan Java Service Page (JSP) untuk membantu klien dalam memilih file dan tujuan
yang akan dikirimkan. Tujuan dari WEK loader ini untuk memudahkan
seorang klien dalam proses pengiriman file ke klien lainnya. Sedangkan
pada aplikasi WEK Transporter menggunakan aplikasi Delphi sebagai
piranti lunak pengembangannya. WEK Transporter akan mengambil file
hasil pengkopian dari klien kemudian akan menjalankan proses kompresi atau dekompresi.
5. Testing
Tahap ini dilakukan pengujian terhadap statement-statement yang
ada dan fungsi-fungsi yang telah dikoding, dengan tujuan apakah input yang akan dimasukkan dapat memberikan hasil yang diharapkan. Proses pengujian ini akan diterapkan dengan menggunakan pengujian sederhana melalui koneksi dial-up terhadap server yang dibuat dengan menggunakan
terjadinya komunikasi data dari remote atau client yang ingin mengakses
jaringan corporate dengan menggunakan koneksi dial-up.
6. Support/Maintenance
Tahap ini adalah tahap yang dikenal dengan tahap pengevaluasian, perubahan-perubahan dapat dilakukan jika terdapat kesalahan-kesalahan yang harus diperbaiki, sistem ini harus beradaptasi terhadap perubahan lingkungan seperti sistem operasi atau pengguna.
Setelah dilakukan perancangan sistem berdasarkan pendekatan Linear Sequential Model, tahap selanjutnya yang dilakukan adalah perancangan piranti lunak
aplikasi, yang terdiri dari :
1. Gambaran Umum Sistem. 2. Perancangan Struktur Menu.
3. Perancangan State Transition Diagram (STD).
4. Perancangan Layar. 5. Perancangan Algoritma.
3.7.1 Gambaran Umum Sistem
Sistem ini secara keseluruhan berjalan pada application layer, presentation layer dan session layer. Pada saat berada di application layer, program aplikasi dari
suatu komputer dapat berkomunikasi dengan program aplikasi lainnya dalam komputer yang berbeda melalui jaringan. Layer berikutnya yaitu presentation layer yang
menangani format dan representasi data yang akan di kirim atau di terima pada suatu jaringan komputer. Layer ini menerima data dari application layer dan mengubahnya
menjadi format yang disetujui sehingga data yang dikirimkan oleh satu sistem dapat dibaca oleh sistem yang lainnya. Session Layer bertanggung jawab dalam membangun,
mempertahankan dan memutuskan sesi antara aplikasi dari komputer-komputer yang saling berkomunikasi. Sesi merupakan suatu hubungan antara aplikasi dalam jaringan.
Sistem ini terdiri dari 3 tipe program, yaitu : 1. WEK Loader
Program atau browser yang digunakan di sisi klien menggunakan Java Service Pages (JSP) untuk membantu klien dalam memilih file dan
tujuan yang akan dikirimkan. Tujuan dari browser ini untuk memudahkan
Gambar 3.3 Gambaran Umum WEK Loader
2. WEK Transporter
Program ini berjalan pada server, yang menggunakan aplikasi
Delphi sebagai piranti lunak pengembangannya. Tujuan dari program ini adalah mengambil file hasil pengkopian atau menerima file hasil
pengiriman kemudian menjalankan proses kompresi atau dekompresi yang akan menghasilkan output file terkompresi atau terdekompresi. Kemudian output tersebut yang akan dikirimkan kepada klien tujuan.
Gambar 3.4 Gambaran Umum WEK Transporter
3. Services
Program ini berjalan pada komputer klien tujuan yang berfungsi sebagai media untuk penyampaian file dari server tujuan. Jika program ini
dijalankan dan terdapat transaksi penerimaan file di server, maka klien
secara otomatis menerima file kiriman dari server dan disimpan. Aplikasi
ini bertujuan untuk proses otomatisasi, artinya, klien hanya perlu mengaktifkan services ini apabila hendak menerima kiriman file tanpa
perlu campur tangan dari pengguna. Program WEK Transporter akan
mengkopikan file yang diterima apabila klien yang dituju tersebut telah mengaktifkan services ini. Namun apabila program services tidak
diaktifkan maka proses pengkopian file tidak akan dijalankan dan
3.7.2 Perancangan Struktur Menu 3.7.2.1 Struktur Menu
Piranti lunak ini memiliki rancangan struktur menu sebagai berikut : 1. Menu WEK Loader
Program ini tidak menggunakan menu yang khusus. Dalam program ini terdapat beberapa komponen :
- Textfield : IP Destination
Digunakan untuk mengisikan alamat IP tujuan klien yang akan menerima file yang dikirim.
- Browse
Digunakan untuk memilih file mana yang akan dikopikan ke server.
- Button : Upload
Digunakan untuk menjalankan proses pengkopian file dari klien ke server.
2. Menu WEK Transporter Struktur Menu WEK Transporter File Server Client Stop Exit Edit Help Server Client view Log File
Gambar 3.5 Struktur Menu WEK Transporter
3.7.2.2 Penjelasan Menu
1. Menu WEK Transporter
Digunakan untuk melakukan proses kompresi atau dekompresi serta perngiriman file dari server sumber ke server tujuan, yang terdiri dari:
• Menu File
- Server
Digunakan untuk mengaktifkan fungsi server. Saat memilih menu
ini akan menampilkan jendela baru, yang akan digunakan untuk meminta inputanport bagi server.
- Client
Digunakan untuk mengaktifkan fungsi client. Menu client
diaktifkan apabila komputer berfungsi sebagai server tujuan dan
menerima file yang akan dikirimkan dari server sumber. Saat
memilih menu ini akan menampilkan jendela baru, yang akan digunakan untuk meminta inputan IP address dan inputan port bagi
klien. - Stop
Digunakan untuk menghentikan fungsi yang sedang dijalankan, baik server maupun client.
- Exit
Digunakan untuk keluar dari aplikasi WEK Transporter. Sebelum
mengeksekusi fungsi dari menu ini, maka akan muncul kotak dialog konfirmasi yang menanyakan apakah pengguna yakin untuk keluar dari aplikasi.
• Menu Edit
- ViewLogFile
Digunakan untuk melihat log file dari semua transaksi data yang
terjadi. Log file ini berupa file yang utuh dan disimpan dalam
• Menu Help
- HelpContents
Digunakan untuk mencari informasi singkat mengenai pemakaian menu serta fungsi-fungsi yang ada pada aplikasi.
- About
Digunakan untuk menampilkan informasi nama-nama penyusun aplikasi dan versi dari aplikasi ini.
3.7.3 Perancangan State Transition Diagram (STD) 1. STD BrowseFile
2. STD Masukan IP Destination
Gambar 3.7 Masukan IP Destination
3. STD UploadFile
Gambar 3.8 STD Upload File
4. STD Menu File - Server
5. STD Menu File - Client
Gambar 3.10 STD File – Client
6. STD Menu File - Stop
Gambar 3.11 STD File – Stop
7. STD Menu File - Exit
8. STD Menu Edit - View Log File
Gambar 3.13 STD Edit - View Log File
9. STD Menu Help - HelpContents
Layar Utama tampilkan kotak dialog Klik help contents Kotak Dialog Help help
Klik close kembali ke layar utama
Gambar 3.14 STD Help - Help Contents
10. STD Menu Help - About
3.7.4 Perancangan Layar
Perancangan Layar Aplikasi ini terdiri dari : 1. Perancangan Layar WEK Loader v.1.0
2. Perancangan Layar WEK Transporter v.1.0
3. Perancangan Layar Services
4. Perancangan Layar Bilah Menu 5. Perancangan Layar Bilah Edit 6. Perancangan Layar Kotak Dialog 3.7.4.1 Perancangan Layar WEK Loader v.1.0
Pada layar WEK Loader v.1.0 ini terdapat beberapa jenis komponen yaitu, label
nama aplikasi (“WEK Loader”), label judul (“File Upload”), label IP Destination, label File Name, textfield IP Destination (untuk memasukan alamat ip yang ingin dikirimkan file), textfield File Name (untuk memasukan nama file yang akan dicopikan ke server),
tombol browse (untuk membuka kotak dialog buka file), tombol upload (untuk
Gambar 3.17 Rancangan Layar Membuka File
3.7.4.2 Perancangan Layar WEK Transporter v.1.0
a. Layar Utama
Pada layar Utama terdapat judul dari nama aplikasi ini, dan beberapa menu utama yaitu, menu File (dapat memilih submenu didalamnya), menu Help (dapat memilih submenu didalamnya), textarea untuk list IP yang
terkoneksi dengan server, dan textarea yang berisi daftar log file yang dapat
digunakan sebagai dokumentasi.
WEK Transporter V.1.0 _ X Edit File IP Server yang terkoneksi Memo Help IP Client yang terkoneksi Server Client Log
b. Layar Menu File
Pada layar menu File ini, akan menampilkan hasil dari proses
pemilihan menu utama File. Hasil yang ditampilkan akan muncul menu top-down yang terdiri dari 4 submenu yaitu Server (menampilkan jendela
pengaktifan server), Client (menampilkan jendela pengaktifan klien),Stop
(menghentikan jalannya server dan klien), dan Exit (untuk keluar dari
aplikasi). WEK Transporter V.1.0 _ X Edit File IP Server yang terkoneksi Memo Help IP Client yang terkoneksi Server Client Log Server Client Exit Stop
c. Layar Menu Edit
Pada layar menu Edit ini, akan menampilkan log file dari transaksi
pengiriman data yang berlangsung dalam durasi waktu tertentu.
WEK Transporter V.1.0 _ X Edit IP Server yang terkoneksi Memo Help IP Client yang terkoneksi Server Client
LogView Log File Edit
d. Layar Menu Help
Pada layar menu Help ini, akan menampilkan hasil dari proses
pemilihan menu utama Help. Hasil yang ditampilkan akan muncul menu top-down yangterdiri dari 2 submenu yaitu Help Contents (dapat memilih
submenu didalamnya), About Us (dapat memilih submenu didalamnya).
WEK Transporter V.1.0 _ X Edit IP Server yang terkoneksi Memo Help IP Client yang terkoneksi Server Client Log Edit Help Contents About Us
3.7.4.3 Perancangan Layar Services
Berikut ini adalah rancangan layar dari services yang akan dijalankan pada
klien. Jika klien memasukkan host dan port server dan mengaktifkan program,
maka klien akan secara otomatis menerima file yang dikirimkan ke klien
tersebut.
Services _ X
Stop Status : Not Connected
Port Server :
Host Server : Start
Services
Gambar 3.22 Rancangan Layar Services
3.7.4.4 Perancangan Layar Bilah Menu
Bilah Menu terdiri dari beberapa menu yaitu : 1. Bilah Menu File Server
Digunakan untuk mengaktifkan aplikasi sebagai server dengan
WEK Transporter V.1.0 - Start Serv er ? X Port :
Start Cancel
Gambar 3.23 Rancangan Layar Start Server
2. Bilah Menu FileClient
Digunakan untuk mengaktifkan aplikasi sebagai client dengan
memasukkan nomor port client serta host client sebagai alamat IP dari server tujuan.
WEK Transporter V.1.0 - Start Client ? X
Host :
Start Cancel
Port :
3. Bilah Menu FileStop
Digunakan untuk menghentikan aktifitas server dan aktifitas klien
sekaligus.
4. Bilah Menu Exit
Digunakan untuk keluar dari aplikasi.
WEK Transporter V.1.0 - Exit Application ? X
Yes No
Pesan Konfirmasi keluar ?
Gambar 3.25 Rancangan Layar Kotak Konfirmasi Exit
5. Bilah Menu Edit
Digunakan untuk melihat log file yang tercatat selama transaksi file
Gambar 3.26 Rancangan Layar Form View Log File
6. Bilah Menu Help, digunakan untuk memilih bagian bantuan untuk
informasi mengenai aplikasi ini.
•Help Contents, digunakan untuk mengetahui informasi pemakaian
aplikasi.
Gambar 3.27 Rancangan Layar About Us
3.7.4.5 Perancangan Layar Bilah Edit
Bilah edit terdiri dari empat bagian, yaitu :
1. Bilah Edit Host, digunakan untuk memasukan IP host.
Gambar 3.28 Rancangan Layar Edit Host
2. Bilah Edit Port Server, digunakan untuk memasukan port saat aplikasi aktif
sebagai server.
3. Bilah Edit Port Client, digunakan untuk memasukan port saat aplikasi aktif
sebagai client.
Gambar 3.30 Rancangan Layar Edit Port Client
3.7.4.6 Perancangan Layar Kotak Dialog
Perancangan kotak dialog aplikasi ini tidak mencakup kotak dialog yang berasal dari sistem operasi windows, namun hanya kotak dialog yang berasal dari
aplikasi ini sendiri, yaitu :
1. Kotak Dialog Konfirmasi
Kotak dialog ini menanyakan konfirmasi untuk menyakinkan pengguna apakah akan melakukan suatu eksekusi. Jika ya maka akan dilakukan proses eksekusi tersebut. Jika tidak maka proses eksekusi tersebut akan dibatalkan dan kembali ke halaman/layar yang aktif.
2. Kotak Dialog Informasi
Kotak informasi ini akan memberikan penjelasan kepada pengguna, mengenai aksi apa yang telah dilakukan, dengan memberikan informasi singkat.
3.7.5 Perancangan Algoritma
3.7.5.1 Perancangan Algoritma Secara Keseluruhan
Mulai
Upload File oleh Client ke server
Kompresi File
Cek besar file hasil kompresi > 30 KB < 30 KB Pemecahan file ke dalam ukuran tertentu
Kirim isi file ke server tujuan secara multithreading
diterima server tujuan cek file apakah
dipecah? penggabungan file
kembali
Ya Dekompresi file kopikan file ke klien
tujuan Selesai
Tidak
3.7.5.2 Algoritma Pemilihan File Upload
Pemilihan fileupload adalah algoritma untuk memilih file yang akan dikopikan
ke server oleh klien pengirim. Proses yang dijalankan untuk memilih file upload
digambarkan pada diagram alir berikut.
3.7.5.3 Algoritma Upload File
Upload file adalah algoritma untuk mengkopikan file dari klien ke server.
Proses yang dijalankan untuk menguploadfile digambarkan pada diagram alir berikut.
3.7.5.4 Algoritma Pengecekan File Dalam Database
Pengecekan file dalam database adalah algoritma untuk mengecek apakah ada file baru yang masuk ke dalam database dari klien ke server. Proses yang dijalankan
untuk pengecekan file dalam database digambarkan pada diagram alir berikut.
3.7.5.5 Algoritma Buka Koneksi
Buka koneksi adalah algoritma untuk membuka koneksi awal sehingga beberapa klien dapat terhubung dengan server. Proses yang dijalankan untuk membuka
koneksi digambarkan pada diagram alir berikut.
Mulai Listen Accept Selesai Ada Ada Koneksi Tidak Connect
3.7.5.6 Algoritma Kompresi File
Kompresi file adalah algoritma untuk mengompresi file menjadi file yang lebih
kecil dari ukuran file aslinya. Proses yang dijalankan untuk kompresi file digambarkan
Mulai
Baca isi File
Hitung Frekuensi tiap Karakter
Buat pohon Kode Jumlah semua
Karakter-1 ?
Iya
Tidak
Buat tabel kode
Selesai Buat File Kompresi
3.7.5.7 Algoritma Pecah File
Pecah file adalah algoritma untuk membagi file menjadi beberapa bagian
berdasarkan ketersediaan bandwidth yang ada. Proses yang dijalankan untuk pecah file
digambarkan pada diagram alir berikut.
3.7.5.8 Algoritma Pengiriman File
Pengiriman file adalah algoritma untuk mengirimkan file dari server klien
pengirim ke server klien penerima. Proses yang dijalankan untuk mengirimkan file
digambarkan pada diagram alir berikut.
3.7.5.9 Algoritma Penerimaan File
Penerimaan file adalah algoritma untuk menerima file yang dikirim oleh server
pengirim ke server penerima. Algoritma ini berjalan pada server penerima.Proses yang
dijalankan untuk penerimaan file digambarkan pada diagram alir berikut.
3.7.5.10 Algoritma Gabung File
Gabung file adalah algoritma untuk mengembalikan file yang telah dipecah
menjadi file yang utuh seperti semula. Proses yang dijalankan untuk gabung file
digambarkan pada diagram alir berikut.
3.7.5.11 Algoritma Dekompresi File
Dekompresi file adalah algoritma untuk mendekompresi file yang telah
dikompresi menjadi file normal seperti aslinya. Proses yang dijalankan untuk kompresi file digambarkan pada diagram alir berikut.
3.7.6 Perancangan Spesifikasi Proses Aplikasi 3.7.6.1 Spesifikasi Proses Pemilihan File Upload
Modul pemilihan fileupload
Tekan browse
Muncul jendela dialog open
Pilih file
Jika OK
Isi path file ke textfield End jika
End modul
3.7.6.2 Spesifikasi Proses Upload File Modul UploadFile
Tampilkan halaman utama Lakukan pengisian IP Destination
Tekan tombol upload
Lakukan pengecekan IP Destination
Jika IP Destination tidak valid maka
Selain itu
Lakukan pengecekan fileupload
Jika file belum ada maka
lakukan pemilihan file
Selain itu
uploadfile ke server
simpan IP & nama file di databaseserver End jika
End jika End Modul
3.7.6.3 Spesifikasi Proses Splash Modul Splash
Time = 0
Jalankan timer Time = time + 1
Jika time = 1 maka Timer diset false Splashform ditutup Form Utama ditampilkan End Jika
3.7.6.4 Spesifikasi Proses Pengecekan File Dalam Database Modul pengecekan file dalam database
Jalankan timer
Cek record dalam database
Jika ada file
Hentikan timer
Ambil file sesuai database
Kompresi file
Kopi record ke tabel proses
Hapus record di database
Simpan hasil kompresi Kirim file
End jika End modul
3.7.6.5 Spesifikasi Proses Aktifkan Server Modul Aktifkan Server
Form utama diset false
Tampilkan Formactiveserver
Tampilkan pesan untuk mengisi port
Selain itu
PortServer diset dengan nilai dalam textfield port Formactive server diset false
Form utama diset true End jika
End Modul
3.7.6.6 Spesifikasi Proses Aktifkan Client Modul Aktifkan Client
Form utama diset false
Tampilkan Formactive client
Jika textfield host kosong maka
Tampilkan pesan untuk mengisi host
Selain itu
Jika host tidak valid maka
Tampilkan pesan host tidak valid
Selain itu
Jika textfield port kosong maka
Tampilkan pesan untuk mengisi port
Selain itu
Jika textfield port = PortServer maka
Tampilkan pesan PortServer dan PortClient tidak boleh sama
Selain itu
PortClient diset dengan nilai
dalam textfield port
HostClient diset dengan nilai
dalam textfield host
Formactive client diset false Form utama diset true End jika
End jika End jika
End jika End Modul
3.7.6.7 Spesifikasi Proses Buka Koneksi Modul Buka Koneksi
Server listen
Jika ada klien
Server accept Server connect
Selain itu
End jika End modul
3.7.6.8 Spesifikasi Proses Kompresi File Modul Kompresi File
Baca file
Hitung frekuensi tiap karakter Jika jumlah karakter terbaca semua
Buat pohon kode
Buat tabel kode
Buat file yang terkompresi End jika
End Modul
3.7.6.9 Spesifikasi Proses Pecah File Modul Pecah File
Cek ukuran file
Jika ukuran file lebih dari ketentuan
Pecah file sesuai ketentuan End jika
3.7.6.10 Spesifikasi Proses Pengiriman File Modul Pengiriman File
Kopi nama file ke var
Ulangi
Kopi isi file ke buffer
Sampai isi file selesai
Kirim var
Kirim buffer End modul
3.7.6.11 Spesifikasi Proses Penerimaan File Modul Penerimaan File
Terima var
Buat file dengan nama var
Terima buffer
Kopi buffer ke dalam file End modul
3.7.6.12 Spesifikasi Proses Gabung File Modul Gabung File
i=1 Ulangi
Kopi pecah file [i] ke savefile
Until pecah file[i].Filesize=0 End modul
3.7.6.13 Spesifikasi Proses Dekompresi File Modul Dekompresi File
Baca file kompresi
Baca tabel kode Buat pohon kode Buat file asli