BAB 2 LANDASAN TEORI
2.1
Pengertian Data Compression
2.1.1
Data Menurut Oxford ( 2010 ),Data dapat diartikan suatu kumpulan angka, karakter, gambar yang sebelumnya tidak memiliki arti apa-apa hingga diproses menjadi suatu bentuk informasi melalu proses yang disebut pemrosesan data. (http://www.oxforddictionaries.com/definition/data?view=uk).
2.1.2
Data Compression Menurut Mahoney ( 2005 ), Data Compression adalah suatu proses mengurangi jumlah data yang diperlukan untuk penyimpanan atau transmisi data (teks, grafis, video, suara, dan sebagainya), biasanya dengan menggunakan teknik encoding. (http://cs.fit.edu/~mmahoney/compression/rationale.html) Data digital yang dikompresi akan mencari pola berulang dari biner 0s dan 1s. Semakin banyak pola dapat ditemukan, semakin banyak data yang dapat dikompresi. File teks pada umumnya dapat dikompresi hingga sekitar 40% dari ukuran aslinya, sedangkan file grafis dari 20% sampai 90%. Beberapa file bila dikompresi hanya berkurang sedikit. Hal ini sepenuhnya tergantung pada jenis file dan algoritma kompresi yang digunakan
8
Pengaplikasian Data Compression dewasa ini : •
Mengkompresi file komputer (Misal: .zip, .rar, .7zip, .bzip, dll)
•
Mengkompresi grafis (Misal : .jpg, .png, .gif)
•
Mengkompresi suara (Misal : .flac, .mp3, .wav, .acc, dll)
•
Mengkompresi video (Misal : .tp, .ts, .avi, .mkv, .mp4, .3gp, dll) Tingkat entropi suatu sumber adalah angka yang hanya bergantung pada
sifat statistik dari sumber. Jika sumber memiliki model sederhana, maka nomor ini dapat dengan mudah dihitung. Di sini, kami mempertimbangkan sumber yang berubah-ubah :
(1) Dalam rumusan di atas diberitahu bahwa X merupakan huruf dalam suatu text. •
Zero Order Model Karakter secara statistik independen satu sama lain dan setiap huruf abjad,A, sama-sama mungkin terjadi. Biarkan m menjadi ukuran alfabet. Dalam hal ini, tingkat entropi diberikan oleh
(2)
9
Untuk suatu ukuran text, alphabet m = 27. Jadi, jika ini pernah menjadi model yang akurat untuk text, maka tingkat entropi akan H = log2 27 = 4,75 bit / karakter. •
First Order Model Karakter secara statistik independen. Misalkan m adalah ukuran alfabet dan pi adalah probabilitas huruf ke-i dalam alfabet. Tingkat entropi adalah
(3) Menggunakan distribusi orde kesatu, tingkat entropi teks akan menjadi 4,07 bit / karakter yang ini merupakan model yang benar. •
Second Order Model Misalkan P j / i adalah probabilitas bersyarat bahwa karakter contoh adalah huruf ke-j dalam alfabet yang diberikan bahwa karakter sebelumnya adalah huruf ke-i. Tingkat entropi adalah
(4) Menggunakan distribusi orde kedua, tingkat entropi teks akan menjadi 3,36 bit / karakter yang ini merupakan model yang benar.
10
•
Third Order Model Misalkan P k / j, i adalah probabilitas bersyarat bahwa karakter contoh adalah huruf ke-x dalam alfabet yang diberikan bahwa karakter sebelumnya adalah huruf ke-j dan yang sebelum itu adalah huruf ke-i. Tingkat entropi adalah :
(5) Menggunakan distribusi orde ketiga, tingkat entropi teks akan menjadi 2,77 bit / karakter yang ini merupakan model yang benar. •
General Order Model Misalkan Bn merupakan karakter n pertama. Tingkat entropi dalam kasus umum diberikan oleh
(6) Dimana jumlahnya lebih dari semua nilai yang mungkin. Hal ini hampir tidak mungkin untuk menghitung tingkat entropi menurut persamaan di atas. Menggunakan metode prediksi, maka mampu memperkirakan bahwa tingkat entropi teks 27-huruf adalah 2,3 bit / karakter.
11
2.1.3
Data Compression dengan Ilmu Lain Banyak sekali metode yang diterapkan pada Data Compression, Secara umum adalah Algoritma. Algoritma berfungsi sebagai metode untuk mengkompresi data, tanpa adanya algoritma-aloritma tertentu ini, maka tata cara kompresi data tidak akan bisa dimengerti. Matematika merupakan dasar dari logika yang dapat membantu pengertian algoritma, serta menerapkan algoritma dalam komputer, karena pada dasarnya data pada komputer merupakan kumpulan angka dan huruf yang nantinya akan dipakai dalam data compression.
2.2
Pengertian Lossless Data Compression Menurut Mahoney ( 2005 ), Lossless Data Compression adalah proses kompresi suatu file, di mana semua data asli dapat dipulihkan bila file yang terkompresi dibuka. Dengan kompresi ini, setiap 1 byte data yang pada awalnya berada di file tersebut akan tetap ada setelah file terkompresi. Semua informasi data yang telah dikompresi benar-benar dapat dipulihkan. Biasanya ini adalah teknik kompresi pilihan untuk teks atau file spreadsheet(file-file penting dalam database), dimana kehilangan kata-kata pada file atau data-data keuangan dapat menimbulkan masalah besar.
12
Pada gambar, kompresi lossless diterapkan pada format
Graphics
Interchange (GIF) yang biasa ditemukan pada web. Di sisi lain, Lossy Compression mengurangi file dengan secara permanen menghapus informasi tertentu, terutama informasi yang berlebihan. Ketika file terkompresi, hanya sebagian dari informasi asli masih ada (walaupun pengguna mungkin tidak menyadarinya). Lossy Compression umumnya digunakan untuk video dan suara, di mana pada jumlah tertentu kehilangan informasi tidak akan terdeteksi oleh sebagian besar pengguna. Gambar JPEG file, misalnya biasanya digunakan untuk foto dan gambar dalam web, adalah gambar yang memiliki Lossy Compression. Menggunakan kompresi JPEG, pencipta dapat memutuskan ukuran file tersebut, semakin kecil ukuran filenya, semakin buruk pula kualitas pada gambar. Sebaliknya, semakin bagus kualitas pada gambar, semakin besar ukuran filenya.
Gambar 2.1 Lossless Data Compression
13
Gambar 2.2 Lossy Data Compression 2.2.1
Kelebihan dan Kekurangan Lossless Data Compression
Lossy Data Compression memiliki kelebihan dalam hal kecepatan dan rasio kompresi yang lebih besar, tetapi sebagian data akan hilang (loss) pada saat dilakukan proses uncompression. Salah satu contoh jenis kompresi ini digunakan untuk mengubah file audio menjadi mp3.
Sebaliknya Lossless Data Compression mensyaratkan bahwa data hasil dekompresi akan persis sama dengan data yang terkompress.
Terdapat 2 teknik kompresi yang umum digunakan dalam Lossless Data Compression yaitu : •
Berdasarkan pada prinsip data yang sering muncul akan dikodekan dengan lebih sedikit bit. Contoh : Huffman Coding
•
Berdasarkan pada permodelan statistik untuk data teks. Misalkan dengan membangun suatu kamus (dictionary) dari simbol-simbol yang sering muncul pada suatu blok dan kemudian hanya akan diacu (reference) dengan menggunakan pointer. Contoh : LZ (Lempel-Ziv) algorithm.
14
2.3
Pengertian Lempel-Ziv Algorithm Menurut Jacob Ziv and Abraham Lempel ( 1977 ), Lempel-Ziv Algorithm adalah Algoritma yang melakukan kompresi dengan menggunakan dictionary, dimana bagian-bagian pada data akan diubah menjadi index yang diperoleh dari “kamus”. (IEEE Transactions on Information Theory, 23(3), pp. 337–343). Dengan kata lain algoritma ini bertujuan merubah bentuk input data yang akan dikompresi menjadi suatu blok-blok data yang tidak mengalami perulangan. Berikut ilustrasinya : Langkah Algoritma : 1.
Memulai inisialisasi pada kamus yang mencakup panjang blok pada input data.
2.
Mencari blok terpanjang W yang ada dalam kamus.
3.
Merubah W berdasarkan indeksnya dalam kamus.
4.
Tambahkan W diikuti oleh simbol pertama dalam blok berikutnya ke dalam kamus.
5.
Lakukan lagi langkah ke-2. Untuk lebih jelasnya akan diperlihatkan pada gambar di bawah ini :
15
Gambar 2.3 Algoritma Lempel – Ziv Contoh di atas mengilustrasikan bagaimana proses encoding dilakukan berdasarkan Algoritma Lempel-Ziv. Pendekatan seperti ini bersifat adaptif dan efektif karena banyak karakter dapat diencode dengan mengacu kepada string yang telah muncul sebelumnya (initial string) pada data tersebut. Prinsip kompresi akan tercapai, apabila referensi dalam bentuk pointer dapat atau telah tersimpan dengan jumlah byte yang lebih sedikit bila dibanding dengan string pada data aslinya dan telah menyelesaikan penelusuran dalam data tersebut. Misalkan : Untuk k = 1, salah satu string adalah : (1)
16
Dengan panjang 2. Untuk k = 2, salah satunya adalah :
(2) Dengan panjang 10; dan untuk k = 3, salah satunya adalah :
(3) Dengan panjang 34. Secara umum, panjang seperti sebuah string
(4) Karena mengandung frase 2j panjang j. Sangat mudah untuk memeriksa bahwa :
(5) Dengan menunjukkan bahwa dalam kedua ungkapan di atas untuk nk, kita dapatkan hasil :
dan
Jika kita membiarkan serangkaian
(6)
menjadi jumlah frasa yang berbeda dalam
panjang, kita akan mendapatkan hasil :
17
(7)
Untuk
dengan demikian kita mendapatkan hasil :
(8) 2.4
Metode Perancangan Program Metode perancangan program yang penulis gunakan adalah metode RPL (Rekayasa Piranti Lunak), secara umum dikenal sebagai terjemahan dari Software Engineering. Ilmu ini membahasa tentang semua aspek produksi piranti lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, desain, algoritma, pengujian sampai pemeliharaan sistem setelah digunakan. Gambar berikut ini akan menceritakan tentang ruang lingkup RPL :
Gambar 2.4 Ruang Lingkup RPL ( Abran et.al., 2004 )
18
•
Software requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak.
•
Software design mencakup proses penentuan arsitektur, komponen, antarmuka, dan karakteristik lain dari perangkat lunak.
•
Software
construction
berhubungan
dengan
detil
pengembangan
perangkat lunak, termasuk algoritma, pengkodean, pengujian, dan pencarian kesalahan. •
Software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak.
•
Software
maintenance
mencakup
upaya-upaya
perawatan
ketika
perangkat lunak telah dioperasikan. •
Software
configuration
management
berhubungan
dengan
usaha
perubahan konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu. •
Software engineering management berkaitan dengan pengelolaan dan pengukuran RPL, termasuk perencanaan proyek perangkat lunak.
•
Software engineering tools and methods mencakup kajian teoritis tentang alat bantu dan metode RPL.
•
Software
engineering
process
berhubungan
dengan
definisi,
implementasi, pengukuran, pengelolaan, perubahan dan perbaikan proses RPL.
19
•
Software quality menitikberatkan pada kualitas dan daur hidup perangkat lunak.
Perancangan program aplikasi dalam skripsi ini menggunakan metode The Waterfall Model. Metode ini terdiri dari beberapa langkah seperti yang dapat dilihat pada gambar 2.5 halaman 19 berikut :
Gambar 2.5 The Waterfall Model Berikut ini adalah penjelasan dari tahapan-tahapan yang ada dalam The Waterfall Model :
20
•
Tahap investigasi dilakukan untuk menentukan apakah terjadi suatu masalah atau adakah peluang suatu sistem informasi dikembangkan. Pada tahapan ini studi kelayakan perlu dilakukan untuk menentukan apakah sistem informasi yang akan dikembangkan merupakan solusi yang layak.
•
Tahap analisis bertujuan untuk mencari kebutuhan pengguna dan organisasi serta menganalisa kondisi yang ada (sebelum diterapkan sistem informasi yang baru).
•
Tahap
disain
bertujuan
menentukan
spesifikasi
detil
dari
komponenkomponen sistem informasi (manusia, hardware, software, network dan data) dan produk-produk informasi yang sesuai dengan hasil tahap analisis. •
Tahap coding dilakukan untuk mengembangkan teori yang telah dipelajari lalu diterapkan kedalam bahasa komputer yang sudah dipelajari sehingga dapat mengembangkan software.
•
Tahap implementasi merupakan tahapan untuk mendapatkan atau mengembangkan hardware dan software, melakukan pengujian, pelatihan dan perpindahan ke sistem baru.
•
Tahapan perawatan (maintenance) dilakukan ketika sistem informasi sudah dioperasikan. Pada tahapan ini dilakukan monitoring proses, evaluasi dan perubahan (perbaikan) bila diperlukan.
21
2.5
Teknologi Pendukung
2.5.1
Teknologi NetBeans Teknologi yang dikembangkan oleh Oracle Coorporation ini merupakan sebuah program open-source yang membantu kalangan peneliti ataupun pengembang aplikasi yang menggunakan pemrograman berbahasa Java. Program ini juga user friendly karena mudah digunakan oleh peneliti ataupun pengembang aplikasi berbasis Java ( Jürgen Petri, 2010 )
2.5.2
Java
Gambar 2.6 Logo Java Gambar 2.6 di atas merupakan logo Java, yang merupakan bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems sebagai komponen inti dari Java Sun Microsystems. Bahasa ini banyak berasal dari sintaks-sintaks bahasa C dan C++, namun memiliki model objek yang lebih sederhana dan lebih sedikit fasilitas-fasilitas yang tidak terlalu penting. Aplikasi ini biasanya disusun menjadi kelas-kelas yang dapat berjalan pada JVM (Java Virtual Machine) dalam sistem operasi komputer apapun ( James Gosling, 2005 ).