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, PPM, Shanon-Fano, Sequitur, dan lain-lain. (Salomon, 2004)
6
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 string yang di sebelah kanan. (Salomon & Motta, 2010)
7
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 simbol nonterminal A adalah lebih optimal.
8
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:
=
×
%
9
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 adalah ukuran datanya yang kecil karena tiadanya fitur untuk memformat tampilan
10
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), dan Ivar Jacobson OOSE (Object-Oriented Software Engineering). (Yasin, 2012)
11
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 pekerjaanpekerjaan 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). Sequence diagram 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,
message, specification execution. (Yasin, 2012)
12
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 lainlain. Dalam Class diagram terdapat tiga area pokok, yaitu Nama (dan stereotype), Atribut, dan Metoda (Yasin, 2012)