Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
3.1.2 Proses Dekompresi LZW
Proses dekompresi yaitu membaca satu-persatu kode bit dan menerjemahkan pada dictionary kemudian output hasilnya. Karateristik algoritma LZW adalah membangun
kembali dictionary berdasarkan kode bit yang diterima. Proses pembuatan dictionary ini tetap menggunakan struktur data binary tree. Sesuai proses kompresi yang telah
dilakukan maka kode-kode bit tersebut adalah : 94876968 25669 2602612576626084. Kemudian hasil dekompresi algoritma LZW
dapat dilihat pada Tabel 3.2:
Tabel 3.2 Contoh proses dekompresi
Output Code Dictionary
94 ‘’ W = 256
87 ’W’ WE = 257
69 ‘E’ ED = 258
68 ‘D’ D = 259
256 WE = 260
69 ‘E’ E = 261
260 WEE = 262
261 EW = 263
257 WEB = 264
66 ‘B’ B = 265
260 WET = 266
84 ‘T’
3.2 Pemodelan Fungsional
Pemodelan fungsional diharapkan agar sebuah sistem yang dibangun memiliki fungsi yang maksimal. Oleh karena itu, maka fungsi-fungsi yang ada pada sistem tersebut
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
perlu dianalisis. Pada perangkat lunak kompresi yang menggunakan algoritma LZW, secara garis besar terdapat dua fungsi utama yaitu kompresi dan dekompresi
menggunakan algoritma LZW.
Pemodelan fungsional menggambarkan aspek dari sistem yang berhubungan dengan transformasi dari nilai, seperti fungsi, pemetaan, batasan, dan ketergantungan
fungsional. Pemodelan fungsional menangkap sesuatu yang dikerjakan oleh sistem tanpa memperhatikan bagaimana dan kapan hal itu dikerjakan. Data Flow Diagram
DFD adalah representasi grafis yang menggambarkan aliran informasi dan transformasi yang terjadi pada data dari input sampai output.
3.2.1 DFD Level 0 Context Diagram
DFD level 0 atau disebut juga context diagram yang menggambarkan interaksi sistem dengan entitas-entitas eksternal. Semua proses sistem digambarkan pada sebuah
lingkaran proses yang bertujuan agar diagram dapat menggambarkan bagaimana entitas-entitas luar mengirim dan menerima data dari sistem tersebut. DFD level 0
untuk sistem ini ditunjukan pada gambar 3.2.
P.0 Proses Encoding dan
Decoding Algoritma LZW
User
File Asli File Terkompresi
File Asli File Terkompresi
Informasi
Gambar 3.2 DFD level 0
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Tabel 3.3 Spesifikasi proses context diagram perangkat lunak kompresi LZW
Nama Input
Keterangan Proses Output
Proses 0 Proses
Encoding dan
Decoding Algoritma
LZW File Asli, File
Terkompresi, Informasi
Proses Encoding adalah proses mengubah file asli
menjadi file terkompresi, dan Proses Decoding
adalah proses mengubah file yang telah
terkompresi menjadi file asli kembali.
File asli, file terkompresi,
Informasi
3.2.2 DFD Level 1
DFD Level 1 memberikan gambaran umum dari sistem. Pada level ini juga terdapat proses utama pada sistem. Serta pada level ini juga terdapat hubungan sistem dengan
entitas, baik entitas eksternal maupun entitas internal. Masing-masing entitas data yang tercantum pada DFD level 0 sama dengan entitas data pada tabel 3.3.
P.1 Proses
Encoding User
P.2 Proses
Decoding
File Asli File Terkompresi
File Terkompresi File Asli
Informasi
Informasi
Gambar 3.3 DFD level 1 Proses P.0
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Tabel 3.4 Spesifikasi Proses DFD Level 1 P.0
Nama Input
Keterangan Proses Output
Proses 1 Proses
Encoding File Asli
Proses Encoding adalah proses mengubah file asli
menjadi file terkompresi. Dimana pada proses ini
dilakukan encoding dengan menggunakan
algoritma LZW File terkompresi,
informasi
Proses 2 Proses
Decoding File terkompresi
Proses Decoding adalah proses mengubah file
terkompresi menjadi file asli. Dimana pada proses
ini dilakukan decoding dengan menggunakan
algoritma LZW File Asli, informasi
3.2.3 DFD Level 2
DFD level 2 merepresentasikan proses yang terjadi pada algoritma LZW. Berikut grafik serta tabel spesifikasi proses DFD Level 2 untuk proses P.1 dan proses P.2:
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009 P.3
Baca String Dari File
P.4 Cari String
pada Dictionary
File Asli str
str_terdapat_pada_dictionary
P.5 Tambahkan
str pada Dictionary
str_tidak_terdapat_pada_dictionary +
P.6 Output Kode
str_ditambahkan File Terkompresi
+
Gambar 3.4 DFD level 2 Proses P.1
Tabel 3.5 Spesifikasi Proses DFD Level 2 P.1
Nama Input
Keterangan Proses Output
Proses 3 Baca String
Dari File File Asli
Membaca string dari file sampai End of File
str
Proses 4 Cari String
pada Dictonary
str Mencari str yang terdapat
pada Dictonary str_terdapat_pada_d
ictionary, str_tidak_terdapat_p
ada_dictionary Proses 5
Tambahkan str pada
dictionary str_terdapat_pada_
dictionary Tambahkan str_terdapat
_pada_dictionary pada
dictionary str_ditambahkan
Proses 6 Output Kode
str_ditambahkan Output kode dari
str_ditambahkan sehingga menghasilkan File
Terkompresi File Terkompresi
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
P.7 Baca codeword
Dari File Terkompresi
File Terkompresi P.8
Cari word untuk
codeword pada Dictionary
codeword P.9
Output word word
File Asli
Gambar 3.5 DFD level 2 Proses P.2
Tabel 3.6 Spesifikasi Proses DFD Level 2 P.2
Nama Input
Keterangan Proses Output
Proses 7 Baca token
dari File Terkompresi
File Terkompresi Membaca token dari file
terkompresi codeword
Proses 8 Cari word
untuk token pada
Dictionary codeword
Mencari string asli dari token yang telah dibaca.
Kemudian menghasilkan word sebagai string asli.
word
Proses 9 Output word
word Output word sehingga
didapat file asli File Asli
3.2.4 Kamus Data
Kamus data merupakan sekumpulan data yang terdapat pada sistem, dimana data disusun untuk memudahkan selama proses analisis dan desain. Kamus data
menjelaskan lebih rinci mengenai istilah-istilah data yang terdapat pada DFD. Kamus
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
data membantu analis sistem untuk mendesain sistem dimana tidak ada data yang menggunakan nama berbeda padahal isi data tersebut identik, ataupun kesalahan
dimana nama data berulang pada desain. Kamus data juga sangat berguna untuk menjelaskan sistem yang telah didesain dan mempermudan pemeliharaan maupun
penambahan fungsi pada sistem.
Masukan-masukan kamus data bisa dibuat setelah diagram aliran data dilengkapi atau bisa juga disusun saat diagram aliran data sedang dikembangkan.
Penganalisis sistem bisa saja membuat suatu diagram aliran data level 0 dan sekaligus membuat masukan-masukan data awal. Selanjutnya, sewaktu penganalisis sistem
mengembangkan diagram level data menjadi diagram anak, penganalisis juga bisa memodifikasi masukan-masukan kamus data yang baru sesuai dengan aliran data pada
diagram alir anak.
Berikut ini merupakan kamus data yang berisikan data yang digunakan pada diagram alir data mulai dari diagram konteks, DFD level 1, DFD level 2.
Tabel 3.7 Kamus data
Nama Tipe Data
Keterangan File Asli
File File yang akan dikompresi
File Terkompresi File
File yang telah terkompresi dengan algoritma LZW
informasi String
Informasi ukuran file, rasio kompresi, dan waktu yang
dibutuhkan pada proses kompresi maupun dekompresi
str String
String yang dibaca dari file asli str_terdapat_pada_dictionary
String String yang dibaca dari file asli
dan terdapat pada dictionary
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
str_tidak_terdapat_pada_dictionary String String yang dibaca dari file asli
dan tidak terdapat pada dictionary
str_ditambahkan String
String yang dibaca dari file asli dan ditambahkan pada
dictionary codeword
String Data yang dibaca dari file
terkompresi, yang disimpan dalam memori dengan tipe data
string. word
String String yang didapat dari
penerjemahan token dengan menggunakan dictionary
3.2.5 Perancangan Struktur Data
Perancangan struktur data berguna untuk dapat menghasilkan desain struktur data terbaik pada implementasi. Dalam algoritma LZW struktur data terpenting adalah
struktur data yang digunakan dictionary. Struktur data yang baik sangat berpengaruh pada kecepatan proses decoding maupun encoding.
Struktur Data Dictionary : TYPE
TreeNode = Pointer BinaryTreeNode; BinaryTreeNode = record
Key : integer; Data : String;
RighChild : TreeNode; LeftChild : TreeNode;
END TYPE
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
TYPE DictionaryStructure = record
Key : integer; Data : String;
DictionarySize : integer; RighChild : TreeNode;
LeftChild : TreeNode; END TYPE
3.2.6 Perancangan Prosedural
Tahapan selanjutnya dalam perancangan perangkat lunak adalah tahapan perancangan prosedural atau detail algoritma. Tahapan ini disajikan dalam bentuk prosedur dan
flowchart. Hal ini dilakukan untuk mempermudah dalam pengkodean yang akan dilakukan. Berikut ini prosedur dan flowchart proses encoding algoritma LZW:
Prosedur 1. Proses Encoding LZW
{ Input : File asli }
{ Proses : Melakukan proses encoding algoritma LZW }
{ Output : File terkompresi dan informasi kompresi }
Kamus Data :
String1 : string;
Karakter1 : char;
Dictionary : DictionaryStucture;
Algoritma Encoding LZW : 11.
String 1 ← karakter pertama dari file sumber
12. while not EOF do
13. Karakter1
← baca karakter dari file sumber 14.
if Dictionary not full then
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
15. if Gabungan String1, Karakter1 terdapat pada Dictionary then
16. String1
← String1 + Karakter1 17.
else 18.
Output kode untuk String1 19.
Tambahkan Gabungan String1, Karakter1 pada Dictionary
20. String1
← Karakter1 21.
end if 22.
else 23.
Output kode untuk String1 24.
String1 = Karakter1 25.
end if 26.
end while 27.
Output kode untuk String1
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
String1 = Baca Karakter
While NOT EOF
Karakter1 = Baca Karakter
IF String1 + Karakter1
Terdapat Pada Dcitionary
Output Kode Untuk String1
String1 = String1+ Karakter1
Tambahkan String1 +
Karakter1 Pada Dictionary
String1 = Karakter1
Start
End IF Dictionary Not
Full Output Kode
Untuk String1
String1 = Karakter1
Output Kode Untuk String1
Yes
Yes No
No
Gambar 3.6 Flowchart proses encoding algoritma LZW
Berikut ini prosedur proses pencarian string pada dictionary pada algoritma LZW:
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Prosedur 2. Proses pencarian string pada dictionary
{ Input : String yang dicari }
{ Proses : Melakukan proses pencarian string pada dictionary }
{ Output : Nilai indeks untuk string pada dictionary, -1 artinya tidak ditemukan }
Kamus Data :
StringFind : string;
Dictionary : DictionaryStructure;
RightTemp : BinaryTreeNode;
LeftTemp : BinaryTreeNode;
Algoritma proses pencarian string pada dictionary: 1.
if Dictionary= NULL then 2.
return -1 3.
end if 4.
while TRUE 5.
if Dictionary.Data = StringFind then 6.
return Dictionary.Key 7.
else
8. RightTemp = Dictionary.Right
9. LeftTemp = Dictionary.Left
10. if RightTemp = NULL and LeftTemp = NULL then
11. return -1
12. end if
13. if RightTemp.Data = StringFind then
14. Dictionary= Dictionary.Right
15. else
16. Dictionary= Dictionary.Left
17. end if
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
18. end if
19. end while
Prosedur penambahan string pada dictionary dapat dilihat pada Lampiran D. Berikut ini prosedur dan flowchart proses decoding algoritma LZW:
Prosedur 4. Proses Decoding LZW
{ Input : File terkompresi }
{ Proses : Melakukan proses decoding algoritma LZW }
{ Output : File asli }
Kamus Data :
element : string;
word : string;
x : integer;
Dictionary : DictionaryStucture;
Algoritma Decoding LZW : 15.
baca token x dari file terkompresi 16.
cari nilai element dengan indeks x 17.
output element 18.
word = element 19.
while not E0F do 20.
baca x 21.
cari nilai element dengan indeks x 22.
if tidak entri untuk indeks x then 23.
element = word + karakter pertama pada word 24.
end if 25.
output element 26.
tambahkan entri word + karakter pertama pada word pada dictionary 27.
word = element
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
28. end while
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
baca token x dari file terkompresi
While NOT EOF Start
End Cari Nilai element Dengan indeks x
Output element
word = element
If tidak ada entri untuk indeks x
baca x
Cari Nilai element Dengan indeks x
element = word + karakter pertama pada word
Output element Tambahkan entri word + karakter
pertama pada word pada dictionary
word = element
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Gambar 3.7 Flowchart proses decoding algoritma LZW
3.3
Perangkat Keras Dan Perangkat Lunak Pengujian
Sebelum menganalisis perlu diketahui spesifikasi komputer yang digunakan. Karena hasil yang diperoleh dipengaruhi oleh kinerja dari komputer. Terutama waktu dan
kecepatan proses karena perangkat keras yang lebih baik mempengaruhi waktu dan kecepatan proses. Sistem operasi yang digunakan adalah Windows XP. Bahasa
pemrograman yang digunakan adalah bahasa pemrograman C++ yaitu menggunakan compiler Visual C++ 2003. Perangkat keras yang digunakan adalah komputer
personal dengan spesifikasi sebagai berikut :
1. Prosessor AMD Sempron 2500+ 1,75 GHz
2. RAM 896 MB
3. Hardisk 80 GB
3.4
Implementasi Antarmuka
Antarmuka perangkat lunak sangat penting untuk memudahkan pengguna dalam memakainya. Dalam hal ini walaupun perangkat lunak dibuat untuk analisis penulis,
namun tetap saja aspek antarmuka sangat penting terutama dalam penyajian informasi hasil program tersebut. Implementasi antarmuka adalah sebagai berikut:
1. Tampilan Utama
Tampilan utama menampilkan menu File untuk memilih menu LZW dimana menu tersebut akan menampilkan halaman untuk melakukan proses kompresi
maupun dekompresi File. Menu Help adalah menu yang menampilkan bagaimana cara pemakaian program, serta menu exit untuk keluar dari aplikasi.
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Gambar 3.8 Tampilan halaman utama
2. Tampilan Proses Kompresi dan Dekompresi
Pada Tampilan inilah proses utama dari program dapat diakses. Untuk melakukan proses kompresi maka pengguna harus menentukan file sumber dan
file tujuan proses kompresi tersebut. Cara menentukan file sumber adalah dengan melakukan klik pada tombol “Get File” pada “Source” kemudian pilih
file. Cara menentukan file tujuan adalah dengan melakukan klik pada tombol “Get File” pada “Destination” kemudian pilih file. Kemudian pilih panjang bit
yang akan digunakan dengan memilih dari combo box “Bit Length”. .Kemudian untuk mengkompres file maka klik pada tombol “Compress”.
Untuk melakukan proses dekompresi maka pengguna harus menentukan file sumber dan file tujuan proses dekompresi. Cara menentukan file sumber
adalah dengan melakukan klik pada tombol “Get File” pada “Source” kemudian pilih file. Cara menentukan file tujuan adalah dengan melakukan
klik pada tombol “Get File” pada “Destination” kemudian pilih file. Kemudian untuk melakukan dekompresi file maka klik pada tombol “Decompress”.
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Gambar 3.9 Tampilan proses kompresi
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Gambar 3.10 Tampilan proses dekompresi
3. Tampilan Dialog Pencarian File
Tampilan dialog pencarian file dilakukan pada halaman proses kompresi dan dekompresi dengan melakukan klik pada button “Get File”. Maka pengguna
akan mendapatkan tampilan untuk mencari serta memilih file yang akan diproses seperti pada Gambar 3.9.
Gambar 3.11 Tampilan pencarian file
4. Tampilan Bantuan
Tampilan bantuan Help berguna sebagai halaman yang menjelaskan bagaimana cara menggunakan program. Hal ini berguna agar pengguna tidak
binggung dalam cara pemakaian program.
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
Gambar 3.12 Tampilan bantuan
Fahrur Razi : Analisis Pengaruh Panjang Bit Kode Pada Kinerja Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch LZW, 2009.
USU Repository © 2009
BAB 4
ANALISIS PENGARUH PANJANG BIT KODE PADA KINERJA PROGRAM KOMPRESI YANG MENGGUNAKAN ALGORITMA LZW
4.1 File Yang Dicoba