• Tidak ada hasil yang ditemukan

APLIKASI KOMPRESI FILE MENGGUNAKAN KOMBINASI ALGORITMA LZ77 DAN HUFFMAN.

N/A
N/A
Protected

Academic year: 2017

Membagikan "APLIKASI KOMPRESI FILE MENGGUNAKAN KOMBINASI ALGORITMA LZ77 DAN HUFFMAN."

Copied!
83
0
0

Teks penuh

(1)

SKRIPSI

Oleh :

YUSUF FERYANTO

0834010211

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL

“VETERAN” J AWA TIMUR

2012

(2)

SKRIPSI

Diajukan Untuk Memenuhi Sebagai Persyaratan Dalam Memperoleh Gelar Sarjana Komputer

Program Studi Teknik Informatika

Oleh :

YUSUF FERYANTO

0834010211

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL

(3)

APLIKASI KOMPRESI FILE MENGGUNAKAN

KOMBINASI ALGORITMA LZ77 DAN HUFFMAN

Disusun oleh :

YUSUF FERYANTO

0834010211

Telah disetujui mengikuti Ujian Negara Lisan Gelombang V ( lima) Tahun Akademik 2011 / 2012

Pembimbing I

Nur Cahyo Wibowo, S.Kom, M.Kom NPT. 379 030 040 1971

Pembimbing II

Ir .Sutiyono, MT NIP.19600731 198703 1 001

Mengetahui,

Ketua Program Studi Teknik Informatika Fakultas Teknologi Industri

Universitas Pembangunan Nasional ”Veteran” Jawa Timur

(4)

KOMBINASI ALGORITMA LZ77 DAN HUFFMAN

Disusun Oleh :

YUSUF FERYANTO

0834010211

Telah dipertahankan dan diterima oleh Tim Penguji Skripsi Program Studi Teknik Informatika Fakultas Teknologi Industri

Universitas Pembangunan Nasional ”Veteran” Jawa Timur Pada Tanggal 13 April 2012

Pembimbing : 1.

Nur Cahyo Wibowo, S.Kom, M.Kom NIP. 3790 03040 197

Universitas Pembangunan Nasional ”Veteran” Jawa Timur

Ir . Sutiyono, MT

(5)

Kombinasi Algor itma Huffman Dan LZ77 Dosen Pembimbing I : Nur Cahyo Wibowo, S.Kom, M.Kom Dosen Pembimbing II : Ir .Sutiyono, MT.

Penyusun : Yusuf Fer yanto

ABSTRAK

Perkembangan penggunaan komputer yang semakin meningkat dalam berbagai bidang berkontribusi pada semakin bervariasinya format data yang disimpan oleh pengguna. Format data tersebut meliputi data teks, audio dan video serta kombinasi diantara ketiganya yang lazim disebut data multimedia.

Disamping itu frekuensi penggunaan data secara bersama-sama turut serta membantu pengembangan jaringan komputer menjadi semakin kompleks pada sehingga penggunaan bandwith menjadi semakin sempit untuk saling berkirim data. Kondisi yang sering ditemui adalah pada saat mengirim data atau file tentu akan menggunakan bandwidth yang besar apabila ukuran file yang akan dikirim juga besar, sehingga proses pengiriman data akan mempengaruhi kesibukan dan akan membuat pengiriman data atau file menjadi lama. Sehubungan dengan permasalahan yang telah dipaparkan maka diperlukan sebuah aplikasi untuk mengecilkan atau mengkompresi ukuran data atau file tersebut agar dapat menghemat pemakaian bandwidth.

Berdasarkan uraian tersebut, pada Tugas Akhir ini akan diciptakan sebuah aplikasi kompresi dan dekompresi file yang mudah di gunakan oleh user

lain. Aplikasi ini menggunakan kombinasi Algoritma LZ77 dan Huffman. Aplikasi kompresi dapat menghemat ruang penyimpanan file secara optimal. proses dekompresinya dapat mengembalikan file seperti semula isi file pun tidak mengalami perubahan atau corrupt.

(6)

Segala puji dan syukur semata di tujukan ke hadirat Allah SWT, yang telah

memberikan rahmat serta hidayah-Nya, sehingga memungkinkan penulis untuk

menyelesaikan Proyek Akhir yang berjudul:

PEMBUATAN APLIKASI KOMPRESI FILE MENGGUNAKAN

KOMBINASI ALGORITMA LZ77 DAN HUFFMAN

Buku Proyek Akhir ini disusun dan diajukan sebagai syarat untuk

menyelesaikan program Sarjana pada Program Studi Teknik Informatika Fakultas

Teknologi Industri di Universitas Pembangunan Nasional ”Veteran” Jawa Timur.

Dalam penyusunan Proyek Akhir ini, penulis berusaha menerapkan ilmu yang

di dapat selama menjalani proses perkuliahan yang tentu saja tidak terlepas dari

petunjuk, bimbingan, bantuan dan dukungan dari berbagi pihak.

Dengan tidak lupa akan kodratnya sebagai manusia, Penulis menyadari

bahwa karya Proyek Akhir ini masih jauh dari kesempurnaan dan mengandung

banyak kekurangan, sehingga dengan segala kerendaha hati, Penulis mengharapkan

saran dan kritik yang membangun dari pembaca.

Surabaya April 2012

Penulis

(7)
(8)

2.12.3 Class ... 32

BAB III ANALISIS DAN PERANCANGAN 3.1 Analisis Sistem ... 44

(9)
(10)
(11)

Gambar 4.5 Isi Hasil Proses Kompresi File Huffman.txt ... 60

Gambar 4.6 Hasil Proses Kompresi File Blutut.pdf ... 60

Gambar 4.7 Isi Hasil Proses Kompresi File Blutut.pdf ... 61

Gambar 4.8 Hasil Proses Kompresi File Info.doc ... 61

Gambar 4.9 Isi Hasil Proses Kompresi File Info.doc ... 61

Gambar 4.10 Hasil Proses Kompresi File Man.ppt ... 62

Gambar 4.11 Isi Hasil Proses Kompresi File Man.ppt ... 62

Gambar 4.12 Percobaan Kompresi Multiple File ... 63

Gambar 4.13 Hasil Proses Kompresi Multiple File... 63

Gambar 4.14 Isi Hasil Proses kompresi multiple File ... 64

Gambar 4.15 Proses Dekompresi File Hasil NewBox.zip ... 65

Gambar 4.16 Pemilihan Lokasi Dekompresi ... 65

Gambar 4.17 Hasil Proses Dekompresi File Kedua.zip ... 65

(12)

Tabel 2.1 Kode Huffman Untuk ABACCDA... 17

Tabel 2.2 Pencatatan Codewords Prefiks Huffman Statis Untuk LDL ... 22

Tabel 2.3 Pencatatan Affiks Codewords Huffman Statis ... 22

Tabel 2.4 Pencatatan Codewords huffman Statis untuk Indikasi Jarak ... 23

Tabel 3.1 Kode Dictionary huffman ... 49

(13)

1.1. Latar Belakang

Perkembangan penggunaan komputer yang semakin meningkat dalam berbagai bidang berkontribusi pada semakin bervariasinya format data yang disimpan oleh pengguna. Format data tersebut meliputi data teks, audio dan video serta kombinasi diantara ketiganya yang lazim disebut data multimedia.

Disamping itu frekuensi penggunaan data secara bersama-sama turut serta membantu pengembangan jaringan komputer menjadi semakin kompleks pada sehingga penggunaan bandwith menjadi semakin sempit untuk saling berkirim data. Kondisi yang sering ditemui adalah pada saat mengirim data atau file tentu akan menggunakan bandwidth yang besar apabila ukuran file yang akan dikirim juga besar, sehingga proses pengiriman data akan mempengaruhi kesibukan pada jaringan dan akan membuat pengiriman data atau file menjadi lama. Hal ini akan menjadi permasalah yang serius dan berkepanjangan dan mengganggu sistem jaringan. Sehubungan dengan permasalahan yang telah dipaparkan maka diperlukan sebuah aplikasi untuk mengecilkan atau mengkompresi ukuran data atau file tersebut agar dapat menghemat pemakaian bandwidth.

(14)

memanfaatkan teknik kompresi ini, maka proses pengiriman data atau file akan menjadi lebih maksimal dan mereduksi waktu transfer file.

Sejak era 1940-an, mulai dipikirkannya suatu metode untuk memperkecil ukuran data atau kompresi. Hal ini menunjukkan bahwa di masa lalu, para pakar juga telah memprediksi pertumbuhan data yang akan semakin besar.

Terdapat banyak metode kompresi, tetapi secara umum mempunyai teknik yang terbagi menjadi dua kategori yaitu lossy compression dan lossless compression. Masing-masing teknik tersbut mempunyai kekhasan sendiri terhadap data yang menjadi obyek kompresinya.

Pada teknik lossy compression, lebih tepat digunakan pada obyek data audio, video dan citra digital, sedangkan teknik lossless compression lebih tepat digunakan pada data dokumen yang banyak mengandung teks daripada data multimedia karena mampu mempertahankan kebutuhan informasi yang dikandung oleh data.

Berdasarkan uraian tersebut, pada Tugas Akhir ini akan dirancang sebuah aplikasi kompresi dan dekompresi data secara dengan menggunakan Algoritma kombinasi LZ77 dan Huffman pada localhost. Penggunaan kedua algoritma ini karena sifatnya yang Loseless dimana data atau file hasil kompresi dapat didekompres lagi dan hasilnya tepat sama seperti data atau file sebelum proses kompresi.

1.2. Per umusan Masalah

(15)

Bagaimana membuat aplikasi kompresi data atau file dengan menggunakan kombinasi algorithma LZ77 dan Huffman ?

1.3. Batasan Masalah

Dalam tugas akhir ini batasan masalah yang dipergunakan yaitu :

a. Algoritma yang digunakan adalah Kombinasi Algoritma LZ77 dan Huffman.

b. Diterapkan pada localhost

c. Data atau file yang dikirim akan terkompresi. d. Data atau file diproses secara antrian (FIFO).

e. Karena bersifat lossless, data yang dikompresi ditujukan pada data dokumen (file teks, office document dan pdf) bukan format data yangg termasuk dalam citra digital, maupun video.

1.4. Tujuan

Tujuan yang ingin dicapai pada pengerjaan tugas akhir ini adalah:

a. Membangun perangkat lunak dengan kombinasi algoritma LZ77 dan Huffman untuk mencapai hasil yang optimal.

b. Menciptakan perangkat lunak yang dapat menghemat ruang penyimpanan data atau menperkecil ukuaran file dan mudah di operasikan.

(16)

1.5. Manfaat

Adapun manfaat yang ingin diperoleh dari pengerjaan tugas akhir ini adalah dapat membuat perangkat lunak untuk mempermudah pengguna menyimpan data dengan menghemat ruang penyimpan dan mempercepat proses transfer file.

1.6. Metode Penelitian

Adapun metode penelitian yang dipergunakan dalam pengerjaan tugas akhir ini adalah :

a. Studi Literatur

Mencari referensi dan bahan pustaka tentang teori-teori yang berhubungan dengan permasalahan yang akan dikerjakan dalam tugas akhir ini.

b. Studi Kasus

Mencari contoh-contoh kasus serupa yang berhubungan dengan permasalahan dalam tugas akhir ini.

c. Analisa Permasalahan Dan Perancangan Sistem

Melakukan analisa permasalahan dan membuat perancangan sistem yang termasuk rancangan form atau antar muka

d. Implementasi Dan Pengujian

Menerapkan hasil perancangan ke dalam pembuatan sistem (coding) dan melakukan pengujian untuk mengetahui validitas hasil.

e. Evaluasi

(17)

1.7. Sistematika Penulisan

Sistematika penulisan tugas akhir ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan tugas akhir ini adalah sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi latar belakang masalah, identifikasi masalah, maksud dan tujuan yang ingin dicapai, batasan masalah, metodologi penelitian yang diterapkan dalam memperoleh dan mengumpulkan data, waktu dan tempat penelitian, serta sistematika penulisan. BAB II TINJ AUAN PUSTAKA

Membahas berbagai konsep dasar dan teori-teori yang berkaitan dengan topik masalah yang diambil dan hal-hal yang berguna dalam proses analisis permasalahan.

BAB III ANALISIS DAN PERANCANGAN

Menganalisis masalah dari model penelitian untuk memperlihatkan keterkaitan antar proses yang diteliti serta model matematis untuk analisisnya.

BAB IV IMPLEMENTASI DAN PENGUJ IAN

Membahas mengenai pengimplementasian aplikasi yang telah dibuat ke perangkat yang akan digunakan serta melakukan pengujian terhadap aplikasi yang telah diimplementasikan tersebut.

BAB V PENUTUP

(18)

2.1. Algor ithma Dan Pemr ogr aman

Pada era tahun 1950 –1960, kecepatan komputer sangat rendah dan disertai juga dengan keterbatasan dari media penyimpan, sehingga tentunya berakibat juga dengan keterbatasan dalam penulisan program-program komputer. Namun di era saat ini, dengan kecepatan komputer yang cukup handal demikian juga ketersediaan dari media penyimpan yang cukup handal dan besar, serta didukung juga dengan perkembangan bahasa pemrograman yang ada sehingga kita dapat dengan mudah membuat suatu program. Permasalahan yang timbul dalam pembuatan program tersebut adalah bagaimana kita dapat memahaminya, sehingga apabila terdapat perubahan yang akan dilakukan kita dapat memperbaikinya secara mudah. Hal ini tentu saja harus kita perhatikan terutama apabila kita melihat dari biaya yang harus dikeluarkan dalam pembuatan program tersebut. Istilah Pemrograman Terstruktur (Structured Programming) mengacu dari suatu kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik ini akan meningkatkan produktifitas programmer, dengan mengurangi waktu yang dibutuhkan dalam penulisan (write), pengujian (test), penelusuran kesalahan (debug) dan pemeliharan(maintain) suatu program. Pada pembahasan berikut ini kita akan melihat bagaimana tehnik ini yang pendekatan yang dilakukan secara modular, dapat membantu kita dalam membangun suatu program.

(19)

Tentunya fungsi yang dijalankan oleh setiap modul sangat terbatas sesuai dengan ruang lingkup yang akan dikerjakan. Dengan adanya sejumlah modul program ini tentu saja kesalahan yang timbul dapat dikurangi. Setiap program tentu akan memiliki program utamanya, yang kemudian akan memanggil sejumlah modul-modul yang ada.

Pemrograman secara modular ini dapat diimplementasikan dengan penggunaan subroutine, suatu kelompok instruksi yang menjalankan suatu pengolahan yang sifatnya terbatas seperti pencetakan, pembacaan untuk proses input atau untuk proses penghitungan. Subroutine dapat dikelompokkan menjadi internal subroutine dan external subroutine.

2.1.1. Inter nal Subroutines

Adalah bagian dari suatu program yang digunakan. Dideklarasikan cukup sekali saja, untuk sejumlah proses yang sama akan dilakukan oleh program tersebut. Program akan memanggil subroutines tersebut jika diperlukan dan apabila telah selesai, kontrol selanjutnya dikembalikan ke instruksi berikutnya. Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya dikenal sebagai call dan return.

2.1.2. Exter nal Subroutines

(20)

2.1.3. Pendekatan Top Down

Pemrograman terstruktur mempergunakan Pendekatan Top-Down dalam perencanaan program. Merupakan pendekatan yang menggambarkan pemecahan modul kompleks/besar menjadi modul-modul yang lebih sederhana/kecil Berbentuk Struktur Hirarki. Di dalam pemrograman terstruktur, terdapat 3 bentuk struktur perintah yang dipergunakan :

a. Sequence Structure b. Loop Structure c. Selection Structure

Struktur perintah yang instruksinya dieksekusi berdasarkan urutannya. Dimulai dari bagian atas dan diakhiri di bagian bawahnya. Digambarkan dengan bujur sangkar, sebagai simbol untuk : Input dan Output Operasi aritmatika. Operasi pemindahan data dalam memori komputer. Menggambarkan perulangan eksekusi dari satu atau lebih instruksi Menggambarkan struktur yang mengeksekusi suatu instruksi hanya apabila kondisinya terpenuhi.

Algoritma merupakan sekumpulan langkah-langkah untuk menyelesaikan suatu tugas. Penamaan “Algoritma” diambil dari seorang ahli matematika bernama Al-Khwarizmi. Sebuah algoritma harus:

a. Jelas, tepat dan tidak membingungkan b. Memberikan penyelesaian yang tepat c. Mempunyai akhir

Tujuh langkah dasar dalam pengembangan program : a. Definisi Masalah

(21)

c. Pengembangan outline ke dalam algoritma d. Melakukan test terhadap algoritma

e. Memindahkan algoritma ke dalam bahasa pemrograman f. Menjalankan program pada komputer

g. Dokumentasi dan pemeliharaan program

h. Pada tahap ini memerlukan pemahaman terhadap permasalahan dengan membaca berulang kali sampai dengan mengerti apa yang dibutuhkan.

Setelah permasalahan didefinisikan, permasalahan dapat di bagi kedalam tugas tugas atau langkah langkah yang lebih kecil dan menghasilkan outline solusi. Outline solusi pada langkah kedua dikembangakan menjadi algoritma yaitu sebuah set langkah yang menggambarkan tugas yang akan dikerjakan dan urutan pengerjaannya.

(22)

perubahan yang dialami oleh program (perbaikan ataupun penambahan modul, dan lain-lain).

2.2. Kompr esi File

Sistem komunikasi dirancang untuk mentransmisi informasi yang dibangkitkan oleh sumber ke beberapa tujuan. Sumber informasi mempunyai beberapa bentuk yang berbeda. Sebagai contoh, dalam radio broadcasting, sumber biasanya sumber audio (suara atau music). dalam TV broadcasting, sumber informasi biasanya sebuah sumber video yang keluarannya berupa image bergerak. Output dari sumber-sumber ini adalah sinyal analog dan sumbernya disebut sumber analog.

Kontras dengan komputer dan tempat penyimpanan data (storage) seperti disk magnetic atau optical, menghasilkaan ouput berupa sinyal diskrit (biasanya karakter binary atau ASCII). Sinyal yang menjadi sumbernya biasa disebut dengan sumber diskrit. baik sumber analog maupun diskrit, sebuah komunikasi digital dirancang untuk mentransmisi informasi dalam bentuk digital. Sehingga konsenkuensi keluaran dari sumber harus diubah dahulu menjadi bentuk keluaran sumber digital yang biasanya dilakukan pada source encoder. Keluaran dari sumber tersebut dapat diasumsikan menjadi sebuah digit biner sekuensial.

(23)

memakan tempat yang lebih kecil. Ide inilah yang menjadi cikal bakal dalam terciptanya kompresi data.

Model pertama yang muncul untuk kompresi sinyal digital adalah Shannon-Fano coding. Shannon dan fano (1948) terus menerus mengembangkan algoritma ini yang menghasilkan codeord biner untuk setiap symbol (unik) yang terdapat pada data file.

Huffman coding (1952) memakai hampir semua karakteristik dari Shannon-fano coding. Huffman coding dapat menghasilkan kompresi file yang efektif dengan mengurangkan jumlah redudansi dalam mengkodingkan simbol. Telah dapat dibuktikan, bahwa Huffman coding merupakan metode fixed-length yang paling efesien.

Pada limabelas tahun terakhir, Huffman coding telah digantikan oleh Arithmetic coding. Arithmetic coding melewatkan ide untuk menggantikan sebuah simbol masukan dengan kode yang spesifik. Algoritma ini menggantikan sebuah aliran simbol masukan dengan sebuah angka keluaran single floating-point. Lebih banyak bit dibutuhkan dalam angka keluaran, maka semakin rumit pesan yang diterima.

Algoritma dictionary-based compression menggunakan metode yang sangat berbeda dalam mengkompres file. Algoritma ini menggantikan string variable-length dari simbol menjadi sebuah token. Token merupakan sebuah indek dalam susunan kata di kamus. Apabila token kecil dari susunan kata, maka token akan menggantikan prase tersebut dan kompresi pun terjadi.

(24)

data umumnya diterapkan pada mesin komputer, hal ini dilakukan karena setiap simbol yang muncul pada komputer memiliki nilai bit-bit yang berbeda. Misal pada ASCII setiap simbol yang dimunculkan memiliki panjang 8 bit, misal kode A pada ASCII mempunyai nilai decimal 65, jika dirubah dalam bilangan biner menjadi 010000001. Pemampatan data digunakan untuk mengurangkan jumlah bir-bit yang dihasilkan dari setiap simbol yang muncul. Dengan pemampatan ini diharapkan dapat mengurangi (memperkecil ukuran data) dalam ruang penyimpanan.

2.3. J enis-jenis Kompr esi File

Berdasarkan mode penerimaan data oleh manusia, kompresi data dapat dibagi menjadi dua, yaitu :

a. Dialoque Mode

yaitu proses penerimaan data dimana pengirim dan penerima seakan berdialog (real time), dimana kompresi data harus berada dalam batas penglihatan dan pendengaran mausia. Contohnya pada video conference.

b. Retrieval Mode

yaitu proses penerimaan data tidak dilakukan secara real time. Jenis kompresi ini dapat dilakukan random access terhadap data dan dapat bersifat interaktif.

2.4. Metode Kompr esi File

(25)

a. Metode Statik

Menggunakan peta kode yang selalu sama. Metode ini membutuhkan dua fase (two-pass) : fase pertama untuk menghitung probabilitas kemunculan tiap simbol/karakter dan menentukan peta kodenya dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan. Contohnya pada Huffman static, arithmetic coding

b. Metode Dinamik (adaptif)

Menggunakan peta kode yang dapat diubah dari waktu ke waktu. Metode ini disebut adaptif karena peta kode mampu beradaptasi terhadap karakteristik isi file selama proses kompresi berlangsung. metode ini bersifat onepass, karena isi file selama dikompres hanya diperlakukan satu kali pembacaan terhadap isi file. Contohnya pada algoritma LZW dan DMC.

Berdasarkan teknik pengkodean atau pengubahan simbol yang digunakan, metode kompresi dapat dibagi ke dalam tiga kategori, yaitu :

a. Metode simbolwise

Menghitung peluang kemunculan dari tiap simbol dalam file input, lalu mengkodekan satu simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandinglan simbol yang lebih jarang muncul. Contohnya pada Huffman coding, arithmetic coding.

b. Metode dictionary

Menggantikan karakter/fragmen dalam file input dengan indeks lokasi dari karakter/fragmen tersebut dalam sebuah kamus (dictionary). Contohnya pada algoritma LZW.

(26)

Menggunakan model finite-context atau finite-state untuk memprediksi distribusi probabilitas dari simbol-simbol selanjutnya. Contohnya pada algoritma DMC

2.5. Tek nik Kompr esi File

Teknik kompresi data dapat digolongkan menjadi dua kelompok utama yaitu : lossy dan lossless. Teknik kompresi secara lossy dimaksudkan dengan teknik kompresi data dengan menghilangkan ketelitian data utama guna mendapatkan data sekecil mungkin (kompresi data sebesar mengkin). Teknik kompresi data secara lossless yaitu teknik kompresi data dengan mengurangkan jumlah data yang terjadi redudansi (memiliki symbol yang sama) sebelum terjadi kompresi.

a. Lossy Compression

Merupakan teknik kompresi yang menghilangkan beberapa informasi data yang dianggap tidak penting. Sehingga hasil data yang telah terkompresi tidak sama dengan data yang sebelum dikompresi. Namun data yang telah terkompresi tersebut sudah cukup untuk digunakan, walaupun datanya telah berubah. Keunggulan dari teknik ini adalah file atau data yang telah terkompresi memiliki ukuran yang lebih kecil dari ukuran data aslinya. Biasanya teknik kompresi ini banyak diaplikasikan pada data gambar dan data audio.

b. Lossless Compression

(27)

data aslinya. Keunggulan dari teknik ini adalah data yang telah terkompresi, apabila didekompresi kembali akan menghasilkan data yang sama persis dengan data aslinya. Biasanya teknik kompresi ini banyak diaplikasikan pada data teks.

2.6. Algor ithma Huffman

Algoritma Huffman ditemukan oleh David Huffman pada tahun 1952. Algoritma ini menggunakan pengkodean yang mirip dengan kode Morse [7]. Berdasarkan tipe kode yang digunakan algoritma Huffman termasuk metode statistic. Sedangkan berdasarkan teknik pengkodeannya menggunakan metode symbolwise. Algoritma Huffman merupakan salah satu algoritma yang digunakan untuk mengompres teks. Berikut ini ilustrasi algoritma Huffman dengan menggunakan file teks yg berisi “ABACCDA :

a. Pilih dua simbol dengan peluang (probability) paling kecil (pada contoh di atas simbol B dan D). Kedua simbol tadi dikombinasikan sebagai simpul orangtua dari simbol B dan D sehingga menjadi simbol BD dengan peluang 1/7 + 1/7 = 2/7, yaitu jumlah peluang kedua anaknya.

b. Selanjutnya, pilih dua simbol berikutnya, termasuk simbol baru, yang mempunyai peluang terkecil.

c. Ulangi langkah 1 dan 2 sampai seluruh simbol habis.

(28)

Gambar 2.1. Representasi Teks ABACCDA

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 2.1

(29)

Tabel 2.1. Kode Huffman untuk “ABACCDA”

Dengan menggunakan kode Huffman ini, string “ABACCDA” direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 111 0. Jadi, jumlah bit yang dibutuhkan hanya 13 bit dari yang seharusnya dibutuhkan 56 bit. Untuk menguraikan kembali data yang sudah dikodekan sebelumnya dengan algoritma Huffman, dapat digunakan cara sebagai berikut :

1. Baca bit pertama dari string biner masukan

2. Lakukan traversal pada pohon Huffman mulai dari akar sesuai dengan bit yang dibaca. Jika bit yang dibaca adalah 0 maka baca anak kiri, tetapi jika bit yang dibaca adalah 1 maka baca anak kanan.

3. Jika anak dari pohon bukan daun (simpul tanpa anak) maka baca bit berikutnya dari string biner masukan.

4. Hal ini diulang (traversal) hingga ditemukan daun.

5. Pada daun tersebut simbol ditemukan dan proses penguraian kode selesai. 6. Proses penguraian kode ini dilakukan hingga keseluruhan string biner

(30)

2.7. Algor ithma LZ77

LZ77 merupakan algoritma kompresi file lossless yang dikembangkan oleh dua orang ilmuan komputer yang bernama Abraham Lempel dan Jacob Ziv pada tahun 1977. Inti dari algoritma LZ77 adalah string matching di mana sebuah string panjang dibagi menjadi 2 blok yaitu Sliding Window dan Read Ahead atau Look Ahead.

Pencarian kata (string matching) dilakukan dengan mencocokkan string pada String Ahead dengan string pada Sliding Window. Jika sama, maka dibentuk kode yang terdiri dari pasangan offset dan length dan akan disalin ke file output. Setelah itu indeks awal Sliding Window akan bergeser ke kanan sebanyak lenght adalah panjang karakter yang ditemukan sama dikurangi 1. Jika isi Read Ahead dukurangi 1. Jika masih tidak ditemukan kesamaan hingga panjang isi dari Read Ahead = 2 maka isi Read Ahead akan disalin ke file output dan indeks awal Siling Window akan bertambah 2. Berikut contoh penyelesaian suatu kasus dengan metode LZ77.

Contoh sebuah string : AAAAAAABCABCAAAAA Sliding Window (bergaris bawah) : AAAAAAABCA Read Ahead (dicetak tebal) : BCAAAAA

Karena isi Read Ahead tidak sama dengan Sliding Window maka indeks akhir Read Ahead akan dikurangi 1 menjadi BCAAAA. Karena masih tidak ditemukan kesamaan, maka indeks akhir Read Ahead akan dikurangi terus hingga menjadi :

(31)

Karena isi Read Ahead terhadap kesamaan dengan isi Sliding Window maka dicari nilai offset dan length-nya. Perhitungan sebagai berikut :

Offset = indeks akhir dari Sliding Window – indeks awal rangkaian yang sama = 10 – 8 = 2

Length = panjang karakter yang sama -1 = 3 – 1 = 2

Selain itu diberikan juga flag untuk membedakan hasil dari kompresi yang mana yang merupakan karakter literal dan kode. Di mana flag 0 untuk karakter literal dan flag 1 untuk kode. Contohnya, hasil kompresi adalah AAAAAAAAAAABCA2293. Di sini tampak jelas yang mana yang merupakan literal(huruf) dan kode(angka). Tetapi bagaimana jika hasil kompresi adalah 222222222223922293 maka akan sangat sulit membedakan yang mana literal dan yang mana kode. Oleh karena itu flag akan digunakan untuk menandai sebuah

(32)

Flag : 00000000 00000011 11000000 Prefix code : 0 3 192

Prefix code akan diselipkan pada hasil kompresi sehingga menjadi : 02222222232223922219293

2.8. Kombinasi Algor ithma LZ77 dan Huffman

Agar dapat dikombinasikan dengan algorithma Huffman, maka algorithma LZ77 diubah terlebih dahulu menjadi algoritma kompresi lossless. Metode kompresi didasarkan pada konsep bahwa string karakter dapat mencocokkan string identik karakter dalam string yang muncul sebelumnya. Karena itu, ini dikategorikan sebagai kompresi metode kamus. LZ77 diubah menggunakan ukuran jendela tetap dikenal sebagai jendela geser. Algoritma memungkinkan pencarian buffer dengan panjang sampai 32 KB. Jendela buffer pencarian memegang catatan karakter yang telah melewati look-ahead buffer dan tersedia untuk mencari untuk mencocokkan urutan baru karakter dalam lookahead buffer.

Ketika urutan baru karakter, yang akan dikompresi, yang cocok dengan string karakter dalam buffer pencarian, string yang cocok digantikan oleh dua angka, juga dikenal sebagai token, dalam output terkompresi stream. Kedua token menunjukkan :

1. Yang pertama: Memberikan informasi tentang jarak, tentang seberapa jauh kembali ke pencarian buffer cocok string mulai urutan karakter.

(33)

Karakter yang tidak cocok hanya ditulis ke kompresi stream, bukan sebuah token. Oleh karena itu, aliran kompresi terdiri dari tiga entitas: 1. Literal (karakter yang cocok/sama), 2. Distance (jarak offset yg cocok) dan 3. Length (panjang string yang cocok). Dalam laporan ini, istilah untuk format ini adalah LDL – Literal Distance Length.

Output stream dikompresi dari algoritma LZ77 kemudian akan dikodekan dengan “statis” Huffman coding menggunakan total tiga tabel kode, dimana satu untuk literal, distance dan length. Pengkodean yang digunakan oleh algoritma LZ77 beroperasi pada karakter ASCII, maka ukuran huruf adalah 256. Setelah itu dianalisa dan diperiksa berulang menggunakan Algoritma LZ77, kode baru dalam kode vektor v dibentuk setelah skema literal-distance-length (LDL). Jenis pengkodean Huffman yang dalam laporan ini adalah statis Huffman coding. Istilah “statis” berasal dari kenyataan bahwa codewords Huffman tidak mengubah seluruh file, yang dikodekan menggunakan algoritma LZ77. Di sisi lain "dinamis" Huffman coding adalah kode Huffman yang dibuat untuk masing-masing panjang blok yang digunakan oleh algoritma LZ77. Setelah setiap blok telah diperintahkan oleh format LDL. Dalam file kombinasi LZ77 dan huffman “statis” Huffman-encode, standar yang sudah mendefinisikan tabel Huffman, dan sudah diimplementasikan dalam berbagai tool kompresi. Untuk file terkompresi secara dinamis dengan

(34)

Seperti disebutkan, 256 pertama literal menunjukkan karakter ASCII.pada tabel di bawah ini.

Tabel 2.2. Pencatatan Codewords Prefiks Huffman Statis untuk Semua LDL

Ini diwakili tanpa membubuhkan bit tambahan, yaitu LDL dalam kisaran ini benar-benar didefinisikan oleh prefiks Huffman codewords. Literal 257-285 berdedikasi untuk menunjukkan panjang dari string yang cocok, sementara 286-287 tidak pernah digunakan. Tergantung pada panjang simbol yang sesuai, kode affix mungkin diperlukan, sesuai dengan Tabel 2.2. Misalnya, indikasi panjang string simbol dari buffer pencarian yang muncul di blok saat ini dapat memiliki panjang 120. Hal ini akan menghasilkan codeword Huffman 11000000|0110, di mana "|" menunjukkan pemisahan antara awalan dan affix bit.

(35)

Kode bit terakhir ditambahkan dalam format hasil kombinasi adalah kode jarak, yang terdaftar dalam Tabel 2.3. Sebagaimana dicatat, membubuhkan bit juga diperlukan tergantung pada jarak. Sebuah contoh penggunaan Tabel 1.3 sekarang dibuat A jarak 65 dalam string teks non-encoded, dikodekan sebagai 01100|00000, sedangkan jarak dari 67 hasilnya 01100|00010. Di sini, "|" menunjukkan pemisahan antara kode Huffman dan bit ekstra.

Tabel 2.4. Pencatatan Codewords Huffman Statis untuk Semua Indikasi Jarak.

2.9. Flow Map

Flow Map adalah diagram yang menunjukan aliran data berupa formulir-formulir ataupun keterangan berupa dokumentasi yang mengalir atau beredar dalam suatu sistem. Notasi yang digunakan dalam suatu flow map merupakan penggabungan notasi flow chart program. Hal-hal yang harus diperhatikan dalam menggambarkan flow map adalah sebagai berikut:

a. Penggambaran flow map dimulai dari atas halaman ke bagian bawah, kemudian dari kiri kebagian kanan

(36)

c. Dalam flow map harus jelas dimana awal suatu status informasi, kemudian dimana akhir silkus

d. Semua bagian siklus informasi harus jelas Menggunakan kertas kerja yang jelas sesuai dengan yang akan dilakukan dalam sistem

e. Semua sub sistem yang digambarkan, harus mengalami siklus informasi f. Jika penggambaran suatu siklus informasi terpotong, maka gunakan

penghubung antar bagian.

2.10. Unified Modelling Language

Unified Modelling Language (UML) adalah sebuah "bahasa" yang telah menjadi standar dalam industri untuk menentukan, visualisasi, merancang dan mendokumentasikan artifactdari sistem software, untuk memodelkan bisnis dan sistem non software lainnya. UML merupakan suatu kumpulan teknik terbaik yang telah terbukti sukses dalam memodelkan sistem yang besar dan kompleks.

Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun. Tetapi karena UML juga menggunakan class dan operation

dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam bahasa-bahasa berorientasi objek seperti C++, Java, VB.NET. Walaupun demikian, UML tetap dapat digunakan untuk modeling aplikasi prosedural dalam VB atau C.

(37)

menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch OOD (Object-Oriented Design), Jim Rumbaugh OMT (Object Modeling Technique), dan Ivar Jacobson OOSE (Object-Oriented Software Engineering).

Sejarah UML sendiri cukup panjang. Sampai era tahun 1990 seperti kita ketahui puluhan metodologi pemodelan berorientasi objek telah bermunculan di dunia. Diantaranya adalah: metodologi Booch, metodologi Coad , metodologi OOSE, metodologi OMT, metodologi Shlaer-Mellor, metodologi Wirfs-Brock, dan sebagainya. Masa itu terkenal dengan masa perang metodologi (method war) dalam pendesainan berorientasi objek. Masing-masing metodologi membawa notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita bekerja sama dengan group/perusahaan lain yang menggunakan metodologi yang berlainan.

(38)

itulah UML telah menjelma menjadi standar bahasa pemodelan untuk aplikasi berorientasi objek.

Object Management Group, Inc. (OMG) adalah sebuah organisasi international yang dibentuk pada 1989, didukung lebih dari 800 anggota, terdiri dari perusahaan sistem informasi, software developer, dan pada user sistem komputer. organisasi ini salah satunya bertugas membuat spesifikasi “manajemen objek” untuk menetapkan kerangka bersama dalam rekayasa software.

Gambar 2.3. Metodologi dalam UML

Sasaran OMG adalah membantu perkembangan object-oriented technology dan mengarahkannya dengan mendirikan Object Management Architecture (OMA). OMA menentukan infrastruktur konseptual yang didasarkan pada seluruh spesifikasi yang dikeluarkan OMG.

(39)

Saat ini piranti lunak semakin luas dan besar lingkupnya, sehingga tidak bisa lagi dibuat asal-asalan. Piranti lunak saat ini seharusnya dirancang dengan memperhatikan hal-hal seperti scalability, security, dan eksekusi yang robust walaupun dalam kondisi yang sulit. Selain itu arsitekturnya harus didefinisikan dengan jelas, agar bug mudah ditemukan dan diperbaiki, bahkan oleh orang lain selain programmer aslinya. Keuntungan lain dari perencanaan arsitektur yang matang adalah dimungkinkannya penggunaan kembali modul atau komponen untuk aplikasi piranti lunak lain yang membutuhkan fungsionalitas yang sama.

Pemodelan (modeling) adalah proses merancang piranti lunak sebelum melakukan pengkodean (coding). Model piranti lunak dapat dianalogikan seperti pembuatan blueprint pada pembangunan gedung. Membuat model dari sebuah sistem yang kompleks sangatlah penting karena tidak dapat memahami sistem semacam itu secara menyeluruh. Semakin komplek sebuah sistem, semakin penting pula penggunaan teknik pemodelan yang baik.

(40)

UML menyediakan beberapa notasi dan artifact standar yang bisa digunakan sebagai alat komunikasi bagi para pelaku dalam proses analisis dan desain. Artifact didalam UML didefinisikan sebagai informasi dalam bentuk yang digunakan atau dihasilkan dalam proses pengembangan perangkat. Contohnya adalah source code yang dihasilkan oleh proses pemrograman.

Yang harus diperhatikan untuk menjaga konsistensi antar artifact selama proses analisis dan desain adalah bahwa setiap perubahan yang terjadi pada satu artifact harus juga dilakukan pada atifact sebelumnya.

Untuk membuat suatu model, UML memiliki diagram grafis sebagai

(41)

1. Setiap sistem yang kompleks selalu paling baik jika didekati melalui himpunan berbagai sudut pandang yang kecil yang satu sama lain hampir saling bebas (independent). Sudut pandang tunggal senantiasa tidak mencukupi untuk melihat sistem yang besar dan kompleks.

2. Diagram yang berbeda-beda tersebut dapat menyatakan tingkatan yang berbeda-beda dalam proses rekayasa.

3. Diagram-diagram tersebut dibuat agar model yang dibuat semakin mendekati realitas.

2.11. Semantik Dalam UML

OMG telah menetapkan semantik (makna istilah) semua notasi UML dalam model struktural dan model behavior. Model struktural (model statis), menekankan stuktur obyek dalam sebuah sistem, menyangkut kelas-kelas, interface, atribut dan hubungan antar komponen. Model behavioral (model dinamis), menekankan perilaku obyek dalam sebuah sistem, termasuk metode, interaksi, kolaborasi dan state history.

Tujuan utama UML diantaranya untuk :

1. Memberikan model yang siap pakai, bahasa pemodelan visual yang ekspresif untuk mengembangkan dan saling menukar model dengan mudah dan dimengerti secara umum.

2. Memberikan bahasa pemodelan yang bebas dari berbagai bahasa pemrograman dan proses rekayasa.

(42)

Pertama, UML menggabungkan konsep Booch, OMT dan OOSE, sehingga UML merupakan suatu bahasa pemodelan tunggal yang umum dan digunakan secara luas oleh para user ketiga metode tersebut dan bahkan para user metode lainnya.

Kedua, UML menekankan pada apa yang dapat dikerjakan dengan metode-meode tersebut.

Ketiga, UML berfokus pada suatu bahasa pemodelan standar, bahkan pada proses standar. Meskipun UML harus diaplikasikan dalam konteks sebuah proses, dari pengalaman, bahwa organisasi dan masalah yang berbeda juga memerlukan proses yang berbeda pula.

UML tidak mencakup : 1. Bahasa Pemrograman

UML adalah bahasa pemodelan visual, bukan dimaksudkan untuk menjadi suatu bahasa pemrograman visual, tetapi UML memberikan arah untuk bergerak kearah kode.

2. Tool (software aplikasi) pemodelan

Membuat standar sebuah bahasa diperlukan oleh tool-tool dan proses. UML mendefinisikan semantik dan notasi, bukan sebuah tool. Contoh tool yang menggunakan UML sebagai bahasanya adalah Rational Rose dan Enterprise Architect.

3. Proses rekayasa

(43)

2.12. Notasi Dalam UML 2.12.1.Actor

Gambar 2.4 Notasi Actor

Actor menggambarkan segala pengguna software aplikasi (user). Actor memberikan suatu gambaran jelas tentang apa yang harus dikerjakan software aplikasi. Sebagai contoh sebuah actor dapat memberikan input kedalam dan menerima informasi dari software aplikasi, perlu dicatat bahwa sebuah actor berinteraksi dengan use case, tetapi tidak memiliki kontrol atas use case. Sebuah actor mungkin seorang manusia, satu device, hardware atau sistem informasi lainnya.

2.12.2.Use Ca se

Gambar 2.5. Notasi Use Case

Use case menjelaskan urutan kegiatan yang dilakukan actor dan sistem untuk mencapai suatu tujuan tertentu. Walaupun menjelaskan kegiatan, namun use case hanya menjelaskan apa yang dilakukan oleh actor dan sistem bukan bagaimana actor dan sistem melakukan kegiatan tersebut.

Use-case Konkret adalah use case yang dibuat langsung karena keperluan actor. Actor dapat melihat dan berinisiatif terhadapnya

(44)

memperumum (generalize) use case lainnya. Untuk menggambarkannya dalam use case model biasanya digunakan association relationship yang memiliki stereotype include, extend atau generalization relationship. Hubungan include

menggambarkan bahwa suatu use case seluruhnya meliputi fungsionalitas dari use case lainnya. Hubungan extend antar use case berarti bahwa satu use case merupakan tambahan fungsionalitas dari use case yang lain jika kondisi atau syarat tertentu terpenuhi.

2.12.3.Class

Gambar 2.6. Notasi Class

Class merupakan pembentuk utama dari sistem berorientasi obyek, karena class menunjukkan kumpulan obyek yang memiliki atribut dan operasi yang sama. Class digunakan untuk mengimplementasikan interface.

Class digunakan untuk mengabstraksikan elemen-elemen dari sistem yang sedang dibangun. Class bisa merepresentasikan baik perangkat lunak maupun perangkat keras, baik konsep maupun benda nyata.

Notasi class berbentuk persegi panjang berisi 3 bagian: persegi panjang paling atas untuk nama class, persegi panjang paling bawah untuk operasi, dan persegi panjang ditengah untuk atribut.

(45)

2.12.4.Inter fa ce

Gambar 2.7. Notasi Interface

Interface merupakan kumpulan operasi tanpa implementasi dari suatu class. Implementasi operasi dalam interface dijabarkan oleh operasi didalam class. Oleh karena itu keberadaan interface selalu disertai oleh class yang mengimplementasikan operasinya. Interface ini merupakan salah satu cara mewujudkan prinsip enkapsulasi dalam obyek.

2.12.5.Inter action

Gambar 2.8. Notasi Interaction

Interaction digunakan untuk menunjukkan baik aliran pesan atau informasi antar obyek maupun hubungan antar obyek. Biasanya interaction ini dilengkapi juga dengan teks bernama operation signature yang tersusun dari nama operasi, parameter yang dikirim dan tipe parameter yang dikembalikan.

2.12.6.Note

Gambar 2.9. Notasi Note

(46)

2.12.7.Dependency

Gambar 2.10. Notasi Dependency

Dependency merupakan relasi yang menunjukan bahwa perubahan pada salah satu elemen memberi pengaruh pada elemen lain. Elemen yang ada di bagian tanda panah adalah elemen yang tergantung pada elemen yang ada dibagian tanpa tanda panah.

Terdapat 2 stereotype dari dependency, yaitu include dan extend. Include

menunjukkan bahwa suatu bagian dari elemen (yang ada digaris tanpa panah) memicu eksekusi bagian dari elemen lain (yang ada di garis dengan panah).

Extend menunjukkan bahwa suatu bagian dari elemen di garis tanpa panah bisa disisipkan kedalam elemen yang ada di garis dengan panah.

2.12.8.Association

Gambar 2.11. Notasi Asociation

Association menggambarkan navigasi antar class (navigation), berapa banyak obyek lain yang bisa berhubungan dengan satu obyek (multiplicity antar class) dan apakah suatu class menjadi bagian dari class lainnya (aggregation).

(47)

sebaliknya. Aggregation mengacu pada hubungan “has-a”, yaitu bahwa suatu class memiliki class lain, misalnya Rumah memiliki class Kamar.

2.12.9.Gener alization

Gambar 2.12. Notasi Generalization

Generalization menunjukkan hubungan antara elemen yang lebih umum ke elemen yang lebih spesifik. Dengan generalization, class yang lebih spesifik (subclass) akan menurunkan atribut dan operasi dari class yang lebih umum (superclass) atau “subclass is superclass”. Dengan menggunakan notasi generalization ini, konsep inheritance dari prinsip hirarki dapat dimodelkan. 2.12.10. Realization

Gambar 2.13. Notasi Realization

Realization menunjukkan hubungan bahwa elemen yang ada di bagian tanpa panah akan merealisasikan apa yang dinyatakan oleh elemen yang ada di bagian dengan panah. Misalnya class merealisasikan package, component merealisasikan class atau interface.

2.13. Inter aksi Manusia Dan Komputer

(48)

yang saling mendukung untuk mencapai suatu tujuan tertentu. Interaksi manusia dan komputer merupakan disiplin ilmu yang mempelajari desain, evaluasi, implementasi dari sistem komputer interaktif untuk dipakai oleh manusia,beserta studi tentang faktor-faktor utama dalam lingkungan interaksinya.

Tujuan mempelajari interaksi manusia dan komputer adalah :

1. Menghasilkan sistem yang bermanfaat (usable), memiliki manfaat dan mudah dioperasikan oleh user.

2. Fungsionalitas yang hendak dicapai adalah fungsi-fungsi yang ada dalam sistem yg dibuat sesuai dengan perencanaan.

3. Keamanan (safe), apakah sistem yg kita dibuat memiliki tingkat pengamanan data atau tidak.

4. Efeektifitas dan Efisiensi, berpengaruh pada produktifitas kerja dari penggunanya dan sistem yang dibuat harus berfungsi dengan baik.

Manusia merupakan pengguna (user) yang memakai komputer. User ini berbeda-beda dan memiliki karakteristik masing-masing sesuai dengan kebutuhan dan kemampuannya dalam menggunakan komputer.

Manusia dan komputer berinteraksi lewat masukan & keluaran melalui antarmuka. Antarmuka pemakai adalah bagian sistem komputer yang memungkinkan manusia berinteraksi dengan komputer. Berikut ini adalah bagan hubungan antara ketiga komponen dalam IMK :

(49)

Antar muka komputer hrs user friendly (ramah dengan pengguna) yaitu :

• antarmuka yang bagus

• mudah dioperasikan

• mudah dipelajari

• pengguna merasa senang menggunakan software tersebut.

Antarmuka yang berkualitas tinggi yg dikagumi oleh orang-orang, beredar luas dan sering ditiru. Suatu antar muka / interface yang dibuat seharusnya tidak hanya dapat dilihat, disentuh atau didengar, tetapi juga mencakup konsep, kebutuhan user untuk mengetahui sistem komputer, dan harus dibuat terintegrasi ke seluruh system.

Berikut ini adalah aturan-aturan perancangan user interface : 1. Berusaha untuk konsisten.

2. Memungkinkan frequent users menggunakan shortcuts. 3. Memberikan umpan balik yang informatif.

4. Merancang dialog yang memberikan penutupan (keadaan akhir)

5. Memberikan pencegahan kesalahan dan penanganan kesalahan yang sederhana.

6. Memungkinkan pembalikan aksi yang mudah.

7. Mendukung pusat kendali internal (internal locus of control). 8. Mengurangi beban ingatan jangka pendek.

9. Membetulkan pasangan yang bersesuaian

(50)

Perancangan pada dasarnya adalah proses kreatif dan tak dapat diduga. Perancang sistem interaktif harus memadukan pengetahuan saksama dari kelayakan teknis dan rasa estetik apa yang menarik bagi pemakai.

Dalam perancangan interaksi, juga melibatkan bahasa komputer sebagai bagian dari proses. Bahasa komputer yang efektif tidak hanya merepresentasikan tugas pemakai dan memenuhi kebutuhan manusia untuk berkomunikasi, tetapi harus selaras dengan mekanisme perekaman, manipulasi, dan penampilannya.

Bahasa-bahasa alami di dunia komputer, antara lain :

• Natural-language interaction

Operasi komputer menggunakan bahasa alami manusia (mis. Inggris) untuk memberi instruksi dan menerima respons.

Digunakan untuk laporan (mis. Prakiraan cuaca, laboratorium medis). Di sisi artistik dapat menghasilkan puisi dan novel.

• Adventure and educational games

(51)

2.14. Embar cader o RAD Studio

Seiring dengan ditemukannya metode pemrograman berorientasi obyek, bahasa pemrograman pascal berevolusi menjadi object pascal dan dikembangkan oleh Borland dengan nama Borland Delphi.

Delphi merupakan alat bantu pengembangan aplikasi yang berbasis visual. Perangkat ini merupakan hasil pengembangan dari bahasa pemrograman pascal yang diciptakan oleh Niklaus Wirth. Pada masa itu, Wirth bermaksud membuat bahasa pemrograman tingkat tinggi sebagai alat bantu mengajar logika pemrograman komputer kepada para mahasiswanya.

Keberhasilan Borland dalam mengembangkan Delphi menjadikan salah satu bahasa yang populer dan disukai oleh banyak programmer, disamping Visual Basic yang dikeluar Microsoft di kemudian hari.

Lingkungan pengembangan Delphi yang mudah, intuitif dan memudahkan pemakai, berhasil melampaui popularitas rivalnya, yaitu Visual Basic, sehingga pernah menyandang predikat “VB-Killer”.

Karena tuntutan perkembangan teknologi, Borland berganti nama menjadi Code Gear, tetapi tetap mempergunakan nama Delphi untuk tools yang berbasis object pascal ini. Tidak lama kemudian Code Gear diakuisisi oleh Embarcadero dan namanya pun berubah menjadi Embarcadero RAD Studio dengan tetap mempertahankan Delphi sebagai salah satu tools-nya.

Beberapa kelebihan yang dimiliki oleh Embarcadero Delphi 2010 ini antara lain :

(52)

2. Semua file yang disertakan saat proses kompilasi, digabungkan menjadi satu sesuai dengan arsitektur native compiler, sehingga mengurangi ketergantungan terhadap library ataupun file-file pendukung lainya, sesuai dengan prinsip build once, runs everywhere

3. Delphi mempunyai kemampuan selective object linking, sehingga apabila terdapat pemanggilan sebuah library dan ternyata tidak terdapat instruksi dalam library tersebut yang dipergunakan dalam system, maka secara otomatis, kompiler tidak akan menyertakan library tersebut dalam proses kompilasinya. Hal ini berbeda dengan tools lain yang tidak mempunyai kemampuan seperi itu. Dengan adanya kemampuan tersebut, maka file eksekusi yang dihasilkan delphi menjadi lebih optimal.

4. Lingkungan pengembangan Delphi sangat intuitif karena semua komponen yang menjadi alat utama desain visual telah ditampilkan saat pertama kali langsung dapat diamati oleh user dan dapat digunakan secara langsung.

Berikut ini adalah tampilan Delphi :

(53)

Dalam delphi seperti halnya bahasa visual lainnya menyediakan komponen. Komponen adalah “jantung” bagi pemograman visual. Componen Palette telah terbagi menjadi berbagai jenis komponen, diantaranya adalah Standard, Additional, Win32, System, dan beberapa lainnya. Berikut ini adalah uraian yang komponen palet yang paling sering dipergunakan, termasuk dalam tugas akhir ini.

Gambar 2.16. Daftar komponen Palet Standard Delphi

Tampak pada palet standard diatas (dengan urutan dari kiri ke kanan), adalah frame, main menu, pop up menu, label, edit text, memo, button, check box, radio button, list box, combo box, scroll bar, group box, radio group, panel dan action list.

Gambar 2.17. Daftar Komponen Palet Additional

(54)

Gambar 2.18. Daftar Komponen Palet Win 32

Pada palet win 32 terdapat komponen tab control, page control, image list, rich edit, track bar, progress bar, up down, hot key, animate, date time picker, month calendar, tree view, list view, header control, status bar, tool bar, cool bar, page scroller, Combo Box Ex, XP Manifest, Shell Resource.

Gambar 2.19. Daftar komponen Palet System

Komponen yang terdapat dalam palet system adalah timer, paint box, media player, ole container, comadmin dialog, DDE Client Conv, DDE Client Item, DDE Server Conv dan DDE Server Item.

Gambar 2.20. Komponen Palet Dialog

Komponen yang terdapat dalam palet dialog adalah open dialog, save

dialog, open picture dialog, save picture dialog, open text file dialog, save text file

dialog, font dialog, color dialog, print dialog, printer setup dialog, find dialog,

(55)

Gambar 2.21. Membuat Aplikasi Sederhana Dengan Delphi

(56)

BAB III

ANALISIS DAN PERANCANGAN

3.1. Analisis Sistem

Analisis adalah tahap aktifitas kreatif dimana analis berusaha memahami permasalahan secara mendalam. Ini adalah proses interative yang terus berjalan hingga permasalahan dapat dipahami dengan benar. Analisis bertujuan untuk mendapatkan pemahaman secara keseluruhan tentang sistem yang akan dibuat berdasarkan masukan dari pihak-pihak dan juga pengalaman analis yang berkepentingan dengan sistem tersebut.

Bahan penelitian dalam tugas akhir ini berasal berbagai studi literatur dari buku-buku teks dan website, yang selanjutnya dipergunakan menjadi bahan analisis sehingga penulis dapat dibuat pemodelan sistem dan merancang simulasinya.

Dalam melakukan analisis, dibuat dua jenis analisis, yaitu analisis kebutuhan non fungsional dan analisis kebutuhan fungsional. Analisis non fungsional adalah sebuah tahap dimana pengembang perangkat lunak menganalisis sumber daya yang akan menggunakan perangkat lunak yang dibangun, sehingga dapat ditentukan kompatibilitas aplikasi yang dibangun terhadap sumber daya yang ada. Sedangkan analisis kebutuhan fungsional adalah suatu gambaran dari informasi yang terjadi pada sistem yang bersangkutan.

(57)

3.2. Analisis Masalah

Permasalahan yang dibuat dalam tugas akhir ini adalah membuat simulasi algoritma LZ77 dan Huffman untuk mengompresi data, kemudian mengimplementasikannya pada proses pengiriman data. Hasil simulasi algoritma kombinasi LZ77 dan Huffman yang telah dibuat ini kemudian dilakukan uji coba, sehingga kita bisa melihat hasil kompresi dan simulasi yang telah dibuat. Data dari hasil penelitian dengan algoritma ini beserta pengimplementasiannya akan dibandingkan dengan file aslinya. Dari perbandingan ini akan diperoleh kelebihan dan kekurangan dari algoritma ini, dan selanjutnya dari perbandingan tersebut akan diperoleh kesimpulan.

Tahap pertama yang dilakukan dalam melakukan analisis berorientasi objek menggunakan UML adalah menentukan actor atau pengguna sistem. Kata aktor dalam konteks UML, menampilkan peran (roles) yang pengguna (atau sesuatu di luar sistem yang dikembangkan yang dapat berupa perangkat keras, end user, sistem yang lain, dan sebagainya). Sedangkan analisis dan kebutuhan non-fungsional meliputi analisis dan kebutuhan pengguna, analisis dan kebutuhan perangkat keras, serta analisis dan kebutuhan perangkat lunak.

Dalam tugas akhir ini, pengguna diartikan sebagai orang yang mengakses dan menggunakan perangkat lunak aplikasi kompresi algoritma kombinasi LZ77 dan Huffman, dalam hal ini pengguna harus memiliki kemampuan dasar untuk mengoperasikan komputer dan memiliki kapabilitas dalam menggunakan aplikasi komputer.

(58)

kasus ini adalah aplikasi kompresi menggunakan kombinasi algoritma LZ77 dan Huffman. Berikut ini adalah spesifikasi perangkat keras komputer yang dipergunakan dalam tugas ini adalah :

1. Processor : Intel Core 2 Duo 2,0 Ghz 2. Memory (RAM) : 2028 MBytes

3. Hard Disk : 180 GB, dengan ruang kosong minimal 500 MB 4. Monitor : LCD 13 inch

5. Keyboard dan Mouse

Sedangkan perangkat lunak yang dipergunakan dalam tugas akhir ini adalah :

1. Sistem Operasi Microsoft Windows 7 Profesional 2. Embarcadero RAD Studio 2010

3. Rational Rose Enterprise 4. Microsoft Office 2010

3.3. Analisis Pr oses Kompr esi Dengan Literal Kar akter

(59)

function ‘ord’ untuk mengkonversikan nilai char ke bentuk byte. Terdapat sebuah variabel ‘hasil’ yang akan menyimpan hasil dari kompresi yang telah dilakukan. Pertama-tama, variabel hasil diisi dengan SW.

Frase ‘AAAAAAAAAAABCABCAAAAA’ Hasil ‘AAAAAAAAAA’

Setelah literasi awal dilakukan, kemudian dibandingkan apakah isi dari RA sama atau merupakan bagian dari SW, jika tidak maka index akhir sari RA akan dikurangi 1. Proses ini terus dilakukan jika isi dari RA sama dengan 2. Jika RA sama dengan 2 maka variabel hasil akan ditambahkan dengan isi dari RA dan index awal SW akan bergeser sebanyak 2 ke kanan.

Frase ‘AAAAAAAAAAABCABCAAAAA’ Hasil ‘AAAAAAAAAAAB’

Jika isi dari RA sama atau terdapat pada SW maka pada variabel hasil akan dicatat 2 buah kode yang terdiri dari offset dan length. Setelah itu index awal SW akan bergeser sebanyak isi dari RA.

Frase ‘AAAAAAAAAAABCABCAAAAA’ Hasil ‘AAAAAAAAAAABCA22’

Pada proses kompresi akan berhenti apanila index akhir dari SW sudah sama dengna panjang dari frase. Proses kemudian dilanjutkan dengan menambah

flag pada setiap 8 byte pada variabel hasil. Hasil akhir dari proses kompresi dengan metode LZ77 ini ditampung dalam variabel ‘hasil2’.

Frase ‘AAAAAAAAAAABCABCAAAAA’ Hasil ‘AAAAAAAAAAABCA2293’

(60)

Isi dari variabel hasil2 tersebut kemudian dikompresi lagi dengan metode Huffman. Langkah pertama dari proses kompresi dengna metode Huffman adalah dengan membentuk sebuah tree yang berasal dari kumpulan node. Setiap node memiliki variabel data dan value dan juga memiliki 1 anak yaitu left dan right. Nilai dari variabel hasil2 akan dikonversikan menjadi bilangan ASCII(0-225). Nilai dari variabel value diperoleh dari jumlah kemunculan karakter tersebut.

Adapun pada Huffman tree setiap leaf adalah karakter yang terdapat pada sebuah file yang akan dikompresi. Setiap mencapai suatu leaf, proses akan mencatat alur yang terjadi ke dalam senuah variabel ‘path’ dan kemudian akan disimpan ke dalam variabel dictionary dapat dilihat pada Tabel 3.2

Setelah dikompres dengan menggunakan Huffman, string tersebut dapat direpresentasikan menjadi rangkaian bit : 0101101110111101111101111110

Setelah dictionary telah diperoleh, maka langkah terakhir yaitu menyalin dictionary ke file output kemudian mengkonversi setiap karakter yang terdapat pada file input sesuai dengan dictionary karakter tersebut.

(61)

Gambar 3.1. Pohon Huffman

Dari Gambar pohon Huffman diatas di peroleh kode dictionary Huffman seperti Tabel 3.1. Yang mepresentasikan permintaan bit yang di butuhkan oleh setiap karakter.

(62)

3.4. Use Ca se Diagr am Aplikasi Kompr esi File

Gambar 3.2. Use Case Diagram Aplikasi Pada use case terjadi beberapa proses yaitu :

1. Input file yang akan dikompres dan didekompres. 2. Proses kompress.

3. Proses Dekompress. 3.5. Sequence Diagr am

Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait).

(63)

untuk menghasilkan output tertentu. Diawali dariapa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan.

Sequence Diagram yang digambarkan dalam perancangan sistem dapat dilihat pada Gambar 3.3 dan Gambar 3.4.

Gambar 3.3. Sequence Diagram Proses Kompresi

Pada sequence diagram di atas terjadi beberapa proses yaitu : 1. User mengambil file yang akan di kompres.

2. Sistem membaca file.

3. Sistem mencari string yang sama.

4. Sistem mengirim string untuk di kompresi huffman. 5. Sistem melakukan perubahan dari string ke bit. 6. Sistem mengirim data bit.

(64)

Gambar 3.4 Sequence Diagram Proses Dekompresi Pada sequence diagram di atas terjadi beberapa proses yaitu : 1. User mengambil file yang berekstensi(.zip).

2. Sistem membaca header file.

3. Sistem melakukan perubahan dari bit ke string. 4. Sistem mengirim string untuk didekompres. 5. Sistem mengembalikan posisi string yang sama. 6. Sistem mengirim data string.

3.6. Per ancangan Sistem

(65)

Adapun tahapan yang dilakukan dalam perancangan sistem ini membahas mengenai tujuan perancangan sistem, dan perancangan antar muka.

Perancangan sistem merupakan tindak lanjut dari tahap analisa. Perancangan sistem bertujuan untuk memberikan gambaran sistem yang akan dibuat. Dengan kata lain perancanagn sistem didefinisikan sebagai penggambaran atau pembuatan sketsa dari beberapa elemen yang terpisah kedalam satu kesatuan yang utuh dan berfungsi. Selain itu juga perancangan bertujuan untuk lebih mengarahkan sistem yang terinci, yaitu pembuatan perancangan yang jelas dan lengkap yang nantinya akan digunakan untuk pembuatan simulasi. Aplikasi kompresi ini dibuat dengan sederhana, sehingga diharapkan user dapat dengan mudah menggunakan aplikasi kompresi ini.

Perancangan antarmuka dibutuhkan untuk mewakili keadaan sebenarnya dari aplikasi yang akan dibangun, berikut akan disajikan perancangan antarmuka dari aplikasi yang akan dibangun :

Gambar 3.5. Tampilan Awal Program

(66)

Form tersebut telah dirancang untuk tampil sekitar lima detik, kemudian dilanjutkan dengan tampilan form utama, seperti yang terlihat di bawah ini :

Gambar 3.6. Form Utama Program Kompresi

Seperti yang terlihat pada Gambar 3.6 di atas, form tersebut merupakan desain tampilan form utama program kompresi. Form tersebut telah dirancang sebagai media untuk berinteraksi antara user dan sistem aplikasi kompresi ini.

(67)

4.1. Implementasi Pr osedur Kompr esi

Uraian di bawah ini merupakan prosedur kompresi yang dibuat dalam tugas ini. Dalam uraian tersebut digambarkan bagaimana proses kompresi dilakukan oleh sistem.

CreationTime, LastWriteTime: TFileTime; Path: UnicodeString;

IsFolder, IsAnti: boolean; FileName: TFileName;

Ownership: TStreamOwnership; Size: Cardinal;

destructor Destroy; override; if recurse then

begin

if FindFirst(p + '*.*', faDirectory, f) = 0 then repeat

if (f.Name[1] <> '.') then

Traverse(IncludeTrailingPathDelimiter(p + f.Name)); until FindNext(f) <> 0;

SysUtils.FindClose(f); end;

if path <> '' then

item.Path := IncludeTrailingPathDelimiter(path) + item.Path;

(68)

Penjelasan dari algorithma diatas adalah sebagai berikut :

1. Sistem akan membaca semua file yang terdapat dalam directory (atau folder) yang dipilih oleh user secara rekursif, termasuk atributnya.

2. Setelah itu dilakukan proses kompresi secara berurutan sesuai dengan jumlah

file yang dipilih user dan menyimpan hasilnya pada directory tujuan.

for i := 0 to willlist.Count - 1 do begin

if FindFirst(p + willlist[i], faReadOnly or faHidden or faSysFile or faArchive, f) = 0 then

repeat

item.LastWriteTime := f.FindData.ftLastWriteTime; item.Attributes := f.FindData.dwFileAttributes; item.Size := f.Size; item.IsFolder := false;

if (Item <> nil) and (ClassType <> TList) then Notify(Item, lnAdded);

until FindNext(f) <> 0;

SysUtils.FindClose(f); end;

(69)

4.2. Implementasi Pr osedur Dekompr esi

Uraian di bawah merupakan prosedur dekompresi yang dibuat dalam tugas akhir ini. Dalam uraian tersebut digambarkan bagaimana proses kompresi dilakukan oleh sistem.

procedure ReadFile(const Dir, Path, Willcards: string; recurse: boolean);

(70)

Penjelasan dari algorithma di atas adalah sebagai berikut :

1. Sistem akan menyertakan lokasi (path atau folder) tujuan ekstraksi file yang telah dikompresi.

2. Apabila lokasi tersebut tidak ada, maka sistem akan membuat lokasi dengan menciptakan folder baru.

3. Kemudian sistem akan menciptakan stream luaran dan memulai proses ekstraksi dan menyimpannya di lokasi tujuan.

4. Ketika semua file telah diekstrak seluruhnya maka path ekstraksi dikosongkan.

4.3. Pengujian Aplikasi

Proses pengujian dilakukan dengan dua cara, yaitu : single file dan

multiple file. Tujuan dari dua cara pengujian tersebut adalah untuk mengetahui keberhasilan proses kompresi untuk single file dan multiple file sekaligus. Metode pengujian yang dipergunakan adalah black box, sehingga difokuskan pada keberhasilan fungsional sistem. Berikut ini adalah proses pengujiannya :

(71)

4.3.1. Pengujian Kompr esi File

Gambar 4.2. Percobaan Dengan Single File

Pada percobaan pertama ini, dipilih file Huffman.txt dengan ukuran 389 KB. langkah selanjutnya adalah menekan tombol kompresi, sehingga akan tampil

form seperti yang tampak pada ilustrasi berikut ini :

(72)

Ketika mengisi nama file lalu tombol Save ditekan, maka proses kompresi dimulai dan hasilnya akan langsung tersimpan, seperti yang tampak pada Gambar 4.4 dibawah ini :

Gambar 4.4. Hasil Proses Kompresi Huffman.txt

Ketika membuka file satu.zip, maka seperti yang tampak pada Gambar 4.5 dibawah ini :

Gambar 4.5. Isi Hasil Proses Kompresi Huffman.txt

Pada proses kompresi file Huffman.txt, ukuran file yang semula sebesar 389 bytes berubah menjadi 414 bytes, sehingga dapat dikatakan telah terjadi penambahan sekitar 25 bytes atau memiliki rasio 25 % terhadap file aslinya.

(73)

Ketika membuka file kedua.zip, maka seperti yang tampak pada Gambar 4.7 dibawah ini:

Gambar 4.7. Isi Hasil Proses Kompresi File Blutut.pdf.

Hasil kompresi file berukuran 2,313 KB menjadi 1,781 KB atau dengan rasio penghematan mencapai 24 % terhadap file aslinya.

Percobaan ketiga single file adalah menggunakan info.doc, yang memiliki ukuran sebesar 59 KB, langkah selanjutnya adalah menekan tombol kompresi, sehingga akan tampil form seperti yang tampak pada Gambar 4.3, dengan hasil akhir sebagai berikut :

Gambar 4.8. Hasil Kompresi File info.doc.

Ketika membuka file ketiga.zip, maka seperti yang tampak pada Gambar 4.9 dibawah ini:

Gambar 4.9. Isi Hasil Proses Kompresi File info.doc.

(74)

Percobaan keempat single file adalah menggunakan Man.ppt, yang memiliki ukuran sebesar 253 KB, langkah selanjutnya adalah menekan tombol kompresi, sehingga akan tampil form seperti yang tampak pada gambar 4.3, dengan hasil akhir sebagai berikut :

Gambar 4.10. Hasil Kompresi File Man.ppt.

Ketika membuka file k eempat.zip, maka seperti yang tampak pada Gambar 4.11 dibawah ini:

Gambar 4.11. Isi Hasil Proses Kompresi File Man.ppt.

Hasil kompresi file berukuran 253 KB menjadi 227 KB atau dengan rasio penghematan mencapai 11 % terhadap file aslinya.

4.3.2. Pengujian Kompr esi Multiple File

Pada percobaan kelima dilakukan secara multiple file pada Black Newbox

yang mempunyai banyak file dan setiap file mempunyai ukuran yang berbeda untuk analisa perbandingan. Pada Gambar 4.12 seluruh file yang ada di listbox

(75)

Gambar 4.12. Percobaan Kompresi Multiple File

langkah selanjutnya adalah menekan tombol kompresi, sehingga akan tampil form seperti yang tampak pada Gambar 4.13, dengan hasil akhir sebagai berikut :

Gambar 4.13. Hasil Proses Kompresi Multiple File.

(76)

Gambar 4.14. Isi Hasil Proses Kompresi MultipleFile.

Pada gambar di atas proses hasil dari uji coba kompresi secara multiple file

Gambar

Tabel 2.4. Pencatatan Codewords Huffman Statis untuk Semua Indikasi Jarak.
Gambar 2.3. Metodologi dalam UML
Gambar 2.6. Notasi Class
Gambar 2.9. Notasi Note
+7

Referensi

Dokumen terkait

$o(nload.. &amp;e+el C'ange Model EEPROM Ope)ation dan* P)int ;ead Test Ca)a pengop)asiann.a pun luma.an muda'* tinggal jalankan tanpa pe)lu mengisntal* kalau p)inte) anda

Penelitian ini dilakukan untuk meneliti pengaruh sudut kemiringan ( slant angle = ) terhadap peningkatan perpindahan panas pada penukar kalor pipa konsentrik dengan

Bahwa, pemeriksaan tersebut dilakukan dengan cara melihat dan menghitung barang, menyesuaikan barang dengan berita acara penerimaan barang yang berlokasi di SMAN 1 Tanjung Raja

The product of the pozzolanic reaction (secondary C-S-H) can incorporate alkali metal ions into their structure and reduce the alkalinity of the pore solution. At the same time, the

Karya ilmiah ini harus dilaksanakan oleh dosen IKIP Padang dalam rangka meningkatkan mutu, baik sebagai dosen maupun sebagai peneli ti.. Oleh karena itu, Pusat

I ndofood Sukses Makm ur ( I NDF) akan m engerek har ga t epung t erigu karena sej ak Mei 2018 harga t epung t elah naik 10% sebagai dam pak kenaikan harga gandum di pasar global

Endang Malihatun, Upaya Meningkatkan Hasil Prestasi Belajar Pada Mata Pelajaran Akidah Akhlak Materi Akhlak Terpuji Dengan Media Komik (Studi Tindakan Kelas 5 MI

yaitu dengan cara memberikan jasa pelayanan sesuai dengan yang diharapkan oleh pelanggan.. Kualitas pelayanan mempunyai hubungan yang erat dengan tingkat kepuasan