bab 3 analisa dan perancangan sistem 3.1 gambaran …thesis.binus.ac.id/doc/bab3/2006-2-01274-if-bab...
Post on 27-Mar-2019
224 Views
Preview:
TRANSCRIPT
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 yang ditransaksikan dalam jaringan tanpa menghilangkan sebagian atau keseluruhan
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 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”
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 Posisi Karakter Dictionary Output1. 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 = = = = = dictionary ab bb ba aba abac
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. [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, 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
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
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 WinZip WEK Transporter
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 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 MenuWEK 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 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 Kotak Dialog HelpKlik help contentstampilkan kotak dialog help
Klik closekembali 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.
WEK Transporter V.1.0 X_
EditFile
IP Serveryang
terkoneksi
Memo
Help
IP Client yangterkoneksi
Server
Client
Log
Gambar 3.18 Rancangan Layar Menu Utama
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).
WEK Transporter V.1.0 X_
EditFile
IP Serveryang
terkoneksi
Memo
Help
IP Client yangterkoneksi
Server
Client
LogServer
Client
Exit
Stop
Gambar 3.19 Rancangan Layar Menu File
84
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 Serveryang
terkoneksi
Memo
Help
IP Client yangterkoneksi
Server
Client
LogView Log File
Edit
Gambar 3.20 Rancangan Layar Menu Edit
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).
WEK Transporter V.1.0 X_
Edit
IP Serveryang
terkoneksi
Memo
Help
IP Client yangterkoneksi
Server
Client
Log
Edit
Help Contents
About Us
Gambar 3.21 Rancangan Layar Menu Help
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 X_
Stop
Status : Not Connected
Port Server :
Host Server : StartServices
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
WEK Transporter V.1.0 - Start Serv er ? X
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.
WEK Transporter V.1.0 - Start Client ? X
Host :
Start Cancel
Port :
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.
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
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
Upload File olehClient ke server
Kompresi File
Cek besar filehasil kompresi
> 30 KB
< 30 KB
Pemecahan file kedalam ukuran
tertentu
Kirim isi file ke servertujuan secaramultithreading
diterima server tujuan
cek file apakahdipecah?
penggabungan filekembali
Ya
Dekompresi file
kopikan file ke klientujuan
Selesai
Tidak
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
Accept
Selesai
Ada
Ada Koneksi
Tidak
Connect
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
Hitung Frekuensitiap Karakter
Buat pohon Kode
Jumlah semuaKarakter-1 ?
Iya
Tidak
Buat tabel kode
Selesai
Buat File Kompresi
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
top related