BAB 2
TINJAUAN PUSTAKA
2.1. Kompresi Data
Kompresi data adalah proses mengubah sebuah aliran data input menjadi aliran data
baru yang memiliki ukuran lebih kecil. Aliran yang dimaksud adalah berupa file
ataupun buffer dalam memori. Kebutuhan terhadap kompresi data dipengaruhi oleh
dua alasan, yaitu kecenderungan manusia untuk mengumpulkan data dan kebutuhan
terhadap proses transfer data yang cepat. Karena itu metode-metode untuk
mengkompresi data semakin berkembang. (Salomon, 2004)
Terdapat banyak metode untuk kompresi data. Metode-metode tersebut lahir
dari ide yang berbeda-beda, cocok untuk berbagai tipe data, dan menghasilkan output
yang berbeda-beda. Namun, prinsip dasar yang menjadi dasar tiap metode adalah
sama, yaitu mengkompresi data dengan menghilangkan redundancy dari data asli.
(Salomon, 2004)
Lossy dan Lossless Compression adalah pengelompokan metode kompresi
berdasarkan keutuhan data. Lossy Compression menghilangkan beberapa data untuk
memperoleh kompresi yang lebih baik, seperti Linear Predictive Coding, A-Law
Algorithm, Mu-Law Algorithm, Fractal Compression, dan lain-lain. Ketika proses
dekompresi dilakukan, maka output yang dihasilkan tidak sama dengan data aslinya.
Metode kompresi ini lebih efektif untuk mengkompresi data gambar, video, atau
audio. Sedangkan Lossless Compression tidak menghilangkan data sama sekali,
sehingga cocok untuk mengkompresi data berupa teks. Yang termasuk Lossless
Compression adalah Burrows-Wheeler, DEFLATE, LZW, FLBE, VLBE, Huffman,
2.2.Fixed Length Binary Encoding (FLBE)
Secara matematis kode disebut juga pemetaan. Sebuah kode memetakan symbol
tunggal maupun string dari symbol menjadi sebuah codeword (bitstring). Proses ini
disebut juga encoding dan proses sebaliknya disebut decoding. (Salomon, 2007)
Kode dapat mengandung fixed maupun variable length, dan dapat bersifat
statis maupun dinamis. Kode statis merupakan kode yang tidak dapat berubah-ubah,
seperti ASCII dan Unicode. Sementara kode dinamis bervariasi dari waktu ke waktu,
semakin banyak data yang dibaca dan diproses, maka semakin banyak pula
probabilitas yang didapatkan dari sebuah symbol. Algoritma Huffman merupakan
contoh dari kode tersebut. (Salomon, 2007)
Algoritma FLBE dikenal juga sebagai kode-kode blok. Kemudahan dalam
mengubah simbol yang asli ke dalam bentuk fixed-length code menjadikan algoritma
ini mudah untuk diimplementasikan ke dalam software. Kemudahan tersebut
berbanding lurus dengan proses mengubah kembali fixed-length code menjadi simbol
aslinya. (Salomon, 2007)
FLBE akan mengambil karakter yang terdapat dalam string yang ingin
dikompresi, kemudian menghitung frekuensi (jumlah kemunculan karakter pada
string). FLBE mengubah bit karakter menjadi fixed-length code sehingga
menghasilkan String Bit yang baru. String Bit inilah yang merupakan hasil kompresi
dari algoritma FLBE.
2.3.Sequitur
Algoritma Sequitur merupakan algoritma yang berdasarkan pada konsep tata bahasa
bebas konteks (context-free grammar). Pada algoritma ini dikenal simbol nonterminal
dan simbol terminal. Kedua jenis simbol tersebut merupakan unsur dari production
rules (aturan-aturan yang digunakan untuk membangun sebuah kalimat). Sebuah
simbol nonterminal diletakkan di sebelah kiri dan sebuah string simbol terminal dan
nonterminaldi sebelah kanan. Simbol nonterminal di sebelah kiri menjadi nama dari
Algoritma Sequitur membangun tata bahasanya dengan menggunakan 2
prinsip, yaitu :
1. Digram Uniqueness, tidak ada pasangan simbol yang berdekatan yang muncul
lebih dari satu.
2. Semua aturan harus digunakan lebih dari satu kali dan aturan yang hanya
digunakan sekali harus diabaikan atau ditiadakan.
Kedua aturan ini dapat dilihat pada gambar 2.2, di mana terdapat 3 contoh string yang
dikompresi menggunakan metode Sequitur. Input S sebelah kiri dari gambar 2.2
bagian (a) sudah merupakan sebuah tata bahasa yang mengandung frase bc yang
berulang sehingga frase bc dijadikan sebagai production rule. Frase bc kemudian
diubah menjadi simbol nonterminal A. Perubahan tersebut menghasilkan dua aturan
grammar, di mana aturan pertama merupakan input yang redundancy-nya dihilangkan
dan aturan kedua merupakan simbol A yang menggantikan digram bc.
Pada gambar 2.2 bagian (b) input S sebelah kiri mengandung redundancy
abcdbc yang kemudian diubah ke dalam simbol nonterminal A. Simbol nonterminal A
mengandung redundancy bc yang juga diubah ke dalam simbol nonterminal B.
Gambar 2.2 bagian (c) menunjukkan bagaimana prinsip kedua dari algoritma Sequitur.
Karena simbol nonterminal B yang mengandung simbol aA hanya muncul satu kali,
maka simbol tersebuh diabaikan. Demikian pula dengan simbol C yang mengandung
BdA yang juga hanya muncul sekali. Sehingga mengubah simbol abcdbc menjadi
Gambar 2.2: tiga urutan contoh input dan grammar (Salomon, 2004)
2.4.Parameter Analisis Kompresi
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa
faktor atau variabel yang biasa digunakan untuk menganalisa kualitas dari suatu
teknik kompresi data tersebut, yaitu :
1. Ratio of Compression (RC) (Salomon & Motta, 2010)
Ratio of Compression (RC) adalah nilai perbandingan antara ukuran bit data
sebelum dikompresi dengan ukuran bit data yang telah dikompresi. Secara
matematis dapat dituliskan sebagai berikut:
=
2. Compression Ratio (CR) (Salomon & Motta, 2010)
Compression Ratio (CR) adalah persentase perbandingan antara data yang
sudah dikompresi dengan data yang belum dikompresi. Secara matematis
dapat dituliskan sebagai berikut:
3. Space Savings (SS)
Space Savings (SS) adalah persentase selisih antara data yang belum dikompresi
dengan besar data yang dikompresi.
= −
4. Waktu kompresi dan dekompresi
Waktu kompresi dan dekompresi adalah waktu yang dibutuhkan untuk
melakukan proses kompresi dan dekompresi. Semakin kecil waktu yang
diperoleh maka semakin efisien metode yang digunakan dalam proses
kompresi dan dekompresi itu.
2.5.File Text
Teks adalah kumpulan dari karakter – karakter atau string yang menjadi satu kesatuan.
Teks yang memuat banyak karakter didalamnya selalu menimbulkan masalah pada
media penyimpanan dan kecepatan waktu pada saat transmisi data. File teks
merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang berasal
dari dokumen pengolah kata, angka yang digunakan dalam perhitungan, nama dan
alamat dalam basis data merupakan contoh masukan data Dteks yang terdiri dari
karakter, angka dan tanda baca. (Pramilo, 2008)
Format file teks yang akan digunakan dalam penelitian ini adalah format data
teks (*.txt) dan format data dokumen (*.doc).
1. Format data teks
Format data teks merupakan format teks yang digunakan untuk menyimpan huruf,
angka, karakter, kontrol (tabulasi, pindah baris, dan sebagainya) atau simbol-simbol
lain yang biasa digunakan dalam tulisan seperti titik, koma, tanda petik, dan
sebagainya. Satu huruf, angka, karakter, kontrol atau simbol pada arsip teks memakan
tempat satu byte. Berbeda dengan jenis teks terformat yang satu huruf saja dapat
memakan tempat beberapa byte untuk menyimpan format dari huruf tersebut seperti
font, ukuran, tebal atau tidak dan sebagainya. Kelebihan dari format data teks ini
teks. Saat ini perangkat lunak yang paling banyak digunakan untuk memanipulasi
format data ini adalah Notepad. (Pramilo, 2008)
2. Format data dokumen
Doc merupakan ekstensi arsip dokumen perangkat lunak Microsoft Word yang paling
banyak digunakan dalam penulisan laporan, makalah dan sebagainya. Doc merupakan
jenis teks terformat yang tidak hanya dapat mengatur tampilan teks seperti styles
(font, ukuran huruf dan sebagainya), namun juga dapat menyisipkan gambar.
Kekurangan format teks dokumen ini terletak pada ukuran datanya yang besar.
(Pramilo, 2008)
2.6.Unified Modeling Language (UML)
Unified Modeling Language (UML) adalah sebuah “bahasa” yang telah menjadi
standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem
piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah
sistem. (Yasin, 2012)
Semua jenis aplikasi piranti lunak dapat dimodelkan menggunakan UML.
Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya,
maka UML lebih cocok untuk penulisan piranti lunak dalam bahasa-bahasa
berorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun demikian, UML
tetap dapat digunakan untuk modeling aplikasi procedural dalam VB atau C. Seperti
bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax/semantik. Notasi UML
merupakan sekumpulan bentuk khusus untuk 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),
UML masih terus dikembangkan hingga saat ini. UML 2.5 merupakan versi
terbaru yang dikeluarkan pada bulan Oktober 2012. Dalam penelitian ini penulis akan
menggunakan 4 jenis UML, diantaranya:
1. Use Case Diagram
Use case diagram menggambarkan fungsionalitas yang diharapkan dari
sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan
bukan “bagaimana. Use case memiliki unsur aktor, sistem, use case,
association, generalization. Aktor merupakan sebuah entitas manusia atau
mesing yang berinteraksi dengan sistem untuk melakukan
pekerjaan-pekerjaan tertentu.(Yasin, 2012)
2. Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang
sedang dirancang, bagaimana masing-masing alir berawal, decision yang
mungkin terjadi, dan bagaimana mereka berakhir. Berbeda dengan use
case, activity menggambarkan proses yang berjalan. Unsur yang terdapat
pada activity adalah initial node (lingkaran hitam), aktivitas (segiempat
dengan sudut membulat), decision (belah ketupat), fork dan join (titik
sinkronisasi yang dapat berupa titik, garis horizontal atau vertikal), activity
final (lingkaran hitam di dalam lingkaran kosong). (Yasin, 2012)
3. Sequence Diagram
Sequence diagram menggambarkan interaksi antarobjek di dalam dan di
sekitar sistem berupa message yang digambarkan terhadap waktu.
Sequence diagram terdiri dari dimensi vertikal (waktu) dan dimensi
horizontal (objek-objek yang terkait). Sequencediagram digunakan untuk
menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan
sebagai respons dari sebuah event untuk menghasilkan output tertentu.
Unsur yang terdapat dalam sequence adalah aktor, lifeline vertikal,
4. Class Diagram
Class diagram adalah sebuah spesifikasi yang jika diinstansiasi akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan dan
desain berorientasi objek. Class menggambarkan keadaan
(atribut/property) suatu sistem, sekaligus menawarkan layanan untuk
memanipulasi keadaan tersebut (metoda/fungsi). Class diagram
menggambarkan struktur dan deskripsi class, package dan objek beserta
hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan
lain-lain. Dalam Class diagram terdapat tiga area pokok, yaitu Nama (dan