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 yang ditransaksikan dalam jaringan tanpa menghilangkan sebagian atau keseluruhan
50
51 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, BWT, Run Length dan lainnya. Berdasarkan tipe peta kode yang digunakan untuk
52 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, lalu mengkodekan satu simbol dalam satu waktu. Dimana simbol yang
53 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
54 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 file input. 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.
55 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 A B C D
3 1 2 1 Dengan
3/7 1/7 2/7 1/7 menggunakan
Kode Huffman 0 110 10 111 kode
Huffman
ini,
string
“ABACCDA”
direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 111 0. Jadi, jumlah bit yang
56 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.
57 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 “C”. Tahapan proses kompresi ditunjukkan pada Tabel 3.2. Kolom posisi menyatakan
58 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 1. 2. 3. 4. 5. 6.
Posisi Karakter 1 2 3 4 6 9
A B B A A C
Dictionary
Output
[4] A B [5] B B [6] B A [7] A B A [8] A B A C ---
stream karakter : kode output : frasa baru yang ditambahkan ke dictionary
a
b
[1]
[2]
[1] [2] [2] [4] [7] [3] b ab [2]
[4]
aba
c
[7]
[3]
4 5 6 7 8 = = = = = ab bb ba aba abac
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
59 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
ii.
C ← karakter pertama dari string.PW
60 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. 2. 3. 4. 5. 6.
[1] [2] [2] [4] [7] [3]
A B B AB ABA C
--[4] A B [5] B B [6] B A [7] A B A [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, Acrobat Reader, Powerpoint, Flash ) 2. File object/biner ( file com, file sistem/dll, file hasil kompilasi : C, Java, Borland Delphi ) 3. File gambar ( file jpeg, file bitmap, file gif )
61 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
No
Tipe File
Ukuran File Asli (Bytes)
Ukuran Hasil Kompresi (Bytes)
Rasio Kompresi (%)
Waktu Kompresi (Mili Sekon)
Waktu Dekompresi (Mili Sekon)
Huffman
LZW
Huffman
LZW
2.780
2.345
1.827
1.033
Huffman
LZW
Huffman
LZW
25,870,848
15,372,726
22,804,363
41
12
PDF
44,695,203
38,265,341
49,050,151
15
-10
5.625
4.531
4.782
1.766
PPT
10,210,816
9,669,276
13,525,766
6
-33
1.406
906
1.282
470
306.597
248.541
289.414
19
6
190
46
46
61
DLL
23,013,732
17,970,264
23,291,046
22
-2
2.750
1.811
2.094
935
BMP
9,068,816
7,997,731
10,435,141
12
-16
1.406
764
1.000
359
JPG
19,836,161
19,513,350
27,801,845
2
-41
2.672
1.782
2.594
860
1
XLS
2 3 4
COM
5 6 7 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
14
ZIP
46,572,690
46,196,210
63,746,236
1
-37
673
406
421
188
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
62 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
63 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 muncul dikodekan dengan rangkaian bit yang pendek dan karakter yang jarang muncul
64 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 lihat tabel perbandingan berikut.
65 Tabel 3.5 Tabel Perbandingan WinZip dan WEK Transporter Perbandingan Algoritma
WinZip Menggunakan gabungan dari beberapa algoritma
WEK Transporter Hanya menggunakan satu jenis algoritma, algoritma Huffman Proses dilakukan secara otomatis, dari pengiriman file, kompresi serta dekompresi.
Otomatisasi
Manual, membutuhkan campur tangan pengguna
Keamanan data
Terdapat fungsi proteksi enkripsi
Tidak terdapat fungsi proteksi
Enkapsulasi data
Tidak ada
Ada
Pemecahan file
Sesuai dengan kapasitas penyimpanan data
Dilakukan pada file dengan ukuran diatas 30 Kb
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 line telepon, modem sebagai media transaksi data.
66 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 WEK Transporter
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
67 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 komponen RAS dalam Windows Server. Penggunaan RAS memungkinkan
68 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. 6. Perancangan Spesifikasi Proses Aplikasi.
69 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 seorang klien dalam proses pengiriman file ke klien lainnya.
70
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.
71
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 dibatalkan.
72 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.
73 2. Menu WEK Transporter
Struktur Menu WEK Transporter
File
Edit Server
Help view Log File
Client
Server
Client
Stop
Exit
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 inputan port bagi server.
74 -
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 -
View Log File Digunakan untuk melihat log file dari semua transaksi data yang terjadi. Log file ini berupa file yang utuh dan disimpan dalam tempat penyimpanan (harddisk).
75 •
Menu Help -
Help Contents 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 Browse File
Gambar 3.6 STD Browse File
76 2. STD Masukan IP Destination
Gambar 3.7 Masukan IP Destination
3. STD Upload File
Gambar 3.8 STD Upload File
4. STD Menu File - Server
Gambar 3.9 STD File - Server
77 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
Gambar 3.12 STD File – Exit
78 8. STD Menu Edit - View Log File
Gambar 3.13 STD Edit - View Log File
9. STD Menu Help - Help Contents
Layar Utama
Klikhelp contents tampilkan kotakdialog help
KotakDialog Help
Klikclose kembali ke layar utama
Gambar 3.14 STD Help - Help Contents
10. STD Menu Help - About
Gambar 3.15 STD Help – About
79 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 memastikan bahwa file tersebut siap dikopikan ke server).
80
Gambar 3.16 Rancangan Layar “WEK Loader v.1.0”
81
Gambar 3.17 Rancangan Layar Membuka File
3.7.4.2 Perancangan Layar WEK Transporter v.1.0 Perancangan layar keseluruhan ini dapat dikategorikan sebagai berikut :
82 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. _
WEKTransporterV.1.0
File
Edit
Server
Log
Help
IPServer yang terkoneksi
Client
Memo
IP Client yang terkoneksi
Gambar 3.18 Rancangan Layar Menu Utama
X
83 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). _
WEKTransporterV.1.0
File
Edit
Server Server
Log
Help
Client Stop IPServer Exit yang terkoneksi
Client
Memo
IP Client yang terkoneksi
Gambar 3.19 Rancangan Layar Menu File
X
84 c. Layar Menu Edit Pada layar menu Edit ini, akan menampilkan log file dari transaksi pengiriman data yang berlangsung dalam durasi waktu tertentu. _
WEKTransporterV.1.0
Edit Server
Edit
Help
View Log File Log
IPServer yang terkoneksi
Client
Memo
IP Client yang terkoneksi
Gambar 3.20 Rancangan Layar Menu Edit
X
85 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 yang terdiri dari 2 submenu yaitu Help Contents (dapat memilih submenu didalamnya), About Us (dapat memilih submenu didalamnya). _
WEKTransporterV.1.0
Edit
Edit
Server
Log
Help HelpContents AboutUs
IPServer yang terkoneksi
Client
Memo
IP Client yang terkoneksi
Gambar 3.21 Rancangan Layar Menu Help
X
86 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
_
Host Server : Port Server :
X
Start Services Stop
Status : Not Connected 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 memasukan nomor port server.
87
? X
WEKTransporterV.1.0-Start Serv er
Port : Start
Cancel
Gambar 3.23 Rancangan Layar Start Server
2. Bilah Menu File Client Digunakan untuk mengaktifkan aplikasi sebagai client dengan memasukkan nomor port client serta host client sebagai alamat IP dari server tujuan.
? X
WEKTransporter V.1.0- Start Client
Host : Port : Start
Cancel
Gambar 3.24 Rancangan Layar Start Client
88 3. Bilah Menu File Stop Digunakan untuk menghentikan aktifitas server dan aktifitas klien sekaligus.
4. Bilah Menu Exit Digunakan untuk keluar dari aplikasi.
? X
WEKTransporter V.1.0- Exit Application
Pesan Konfirmasi keluar ? Yes
No
Gambar 3.25 Rancangan Layar Kotak Konfirmasi Exit
5. Bilah Menu Edit Digunakan untuk melihat log file yang tercatat selama transaksi file terjadi dalam durasi waktu yang dapat ditentukan.
89
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. • About, digunakan untuk mengetahui informasi dari pembuat aplikasi.
90
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.
Gambar 3.29 Rancangan Layar Edit Port Server
91 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.
Gambar 3.31 Rancangan Layar Kotak Dialog Konfirmasi
92 2. Kotak Dialog Informasi Kotak informasi ini akan memberikan penjelasan kepada pengguna, mengenai aksi apa yang telah dilakukan, dengan memberikan informasi singkat.
Gambar 3.32 Rancangan Layar Kotak Dialog Informasi
93 3.7.5
Perancangan Algoritma
3.7.5.1 Perancangan Algoritma Secara Keseluruhan
Mulai
Selesai
Upload File oleh Client ke server
kopikan file ke klien tujuan
Kompresi File
Dekompresi file
Cek besar file hasil kompresi
penggabungan file kembali
> 30 KB
Ya
Pemecahan file ke dalam ukuran < 30 KB tertentu
Kirim isi file ke server tujuan secara multithreading
Tidak
cek file apakah dipecah?
diterima server tujuan
Gambar 3.33 Diagram Sistem Secara Keseluruhan
94 3.7.5.2 Algoritma Pemilihan File Upload Pemilihan file upload 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.
Gambar 3.34 Algoritma Pemilihan File Upload
95 3.7.5.3 Algoritma Upload File Upload file adalah algoritma untuk mengkopikan file dari klien ke server. Proses yang dijalankan untuk mengupload file digambarkan pada diagram alir berikut.
Gambar 3.35 Algoritma Pemilihan File Upload
96 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.
Gambar 3.36 Algoritma Pengecekan File Dalam Database
97 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
T idak
Ada Koneksi
Ada
Accept
Connect
Selesai
Gambar 3.37 Algoritma Buka Koneksi
98 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 pada diagram alir berikut.
99
Mulai
Baca isi File
HitungFrekuensi tiap Karakter
Tidak
Jumlahsemua Karakter-1 ?
Iya
Buat pohon Kode
Buat tabel kode
BuatFileKompresi
Selesai
Gambar 3.38 Algoritma Kompresi File
100 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.
Gambar 3.39 Algoritma Pecah File
101 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.
Gambar 3.40 Algoritma Pengiriman File
102 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.
Gambar 3.41 Algoritma Penerimaan File
103 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.
Gambar 3.42 Algoritma Gabung File
104 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.
Gambar 3.43 Algoritma Dekompresi File
105 3.7.6
Perancangan Spesifikasi Proses Aplikasi
3.7.6.1 Spesifikasi Proses Pemilihan File Upload Modul pemilihan file upload 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 Upload File Tampilkan halaman utama Lakukan pengisian IP Destination Tekan tombol upload Lakukan pengecekan IP Destination Jika IP Destination tidak valid maka Lakukan Pengisian IP Destination
106 Selain itu Lakukan pengecekan file upload Jika file belum ada maka lakukan pemilihan file Selain itu upload file ke server simpan IP & nama file di database server 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 End Modul
107 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 Form active server Jika textfield port kosong maka
108 Tampilkan pesan untuk mengisi port Selain itu PortServer diset dengan nilai dalam textfield port Form active 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 Form active 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
109 Selain itu PortClient diset dengan nilai dalam textfield port HostClient diset dengan nilai dalam textfield host Form active 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 Buka Koneksi
110 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 End modul
111 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
112 3.7.6.12 Spesifikasi Proses Gabung File Modul Gabung File i=1 Ulangi Kopi pecah file [i] ke save file Until pecah file[i].File size=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 End modul