BAB 2 LANDASAN TEORI
2.1. Kompresi Data Kompresi data di dalam konteks ilmu komputer adalah merupakan ilmu atau seni dalam merepresentasikan informasi yang terdapat pada data ke dalam suatu bentuk yang lebih padat (kecil) (Pu, 2006). Perkembangan komputer dan multimedia mengakibatkan kompresi data menjadi hal yang sangat penting dan berguna dalam teknologi pada saat sekarang ini. Solomon (2007) mengemukakan definisi kompresi data adalah proses yang mengkonversi sebuah masukan berupa aliran data (the source atau data asli mentah) menjadi suatu aliran data lain (the Output, aliran bit, atau aliran sudah dikompres) yang memiliki ukuran lebih kecil. Aliran data (stream) dapat berupa sebuah file atau buffer pada memori. Data dalam konteks kompresi data melingkupi segala bentuk digital dari informasi, yang dapat diproses oleh sebuah program komputer. Bentuk dari informasi tersebut secara luas dapat diklasifikasikan sebagai teks, suara, gambar dan video. Terdapat banyak perangkat lunak kompresi data yang sering digunakan oleh banyak orang, seperti winzip, winrar, 7zip dan lain-lain untuk memperkecil ukuran data sebelum mereka menyimpan dan mengirimkan data tersebut ke sebuah media penyimpanan. Hal itu dilakukan untuk mempermudah dalam mengatur file dan memperkecil penggunaan media penyimpanan. Selain itu juga membantu dalam mempercepat proses pengiriman file dari satu media ke media lain dimana pada saat sekarang ini telah dikembangkan cloud computing yaitu sebuah media penyimpanan yang terdapat pada media online yang dapat diakses dimana saja dengan memerlukan koneksi internet. Dengan adanya kompresi data maka data yang telah dikompresi akan memperkecil kuota atau bandwith dalam pengiriman data melalui internet.
Universitas Sumatera Utara
2.1.1. Teknik Kompresi Data Berdasarkan kemungkinan data yang telah dikompresi dapat dikembalikan ke data sebelum dikompresi atau data aslinya, teknik kompresi data dikelompokkan menjadi dua bagian yaitu kompresi data lossless dan kompresi data Lossy (Pu, 2006).
1. Kompresi Data Lossless Kompresi data lossless adalah teknik kompresi data dimana data yang telah dikompresi dapat dikembalikan ke data aslinya dengan tidak mengurangi informasi yang ada pada data tersebut. Dalam teknik kompresi ini, pada saat proses kompresi dihasilkan sebuah data yang berbeda dengan data aslinya. Karena setiap bit-bit yang terdapat pada data di-encode sehingga dihasilkan bit-bit yang baru yang lebih pendek. Data tersebut dikembalikan ke data aslinya (data sebelum dikompresi) pada saat proses dekompresi. Teknik kompresi lossless digunakan pada data yang tergolong penting sehingga tidak boleh ada banyak atau sebagian informasi yang hilang. Seperti misalnya pada file teks, jika terdapat sedikit saja perubahan pada data itu maka akan sangat mudah kelihatan. Contoh algoritma lossless pada kompresi data adalah Arithmetic Coding, Huffman Coding, dan lainlain. Teknik kompresi lossless dapat diGambarkan seperti pada Gambar 2.1.
Gambar 2.1 Kompresi Lossless (Pu, 2006)
2. Kompresi Data Lossy Kompresi data Lossy adalah teknik kompresi data dimana data mengalami sedikit atau banyak kehilangan pada saat proses kompresi. Data setelah dikompresi persis
Universitas Sumatera Utara
sama seperti data aslinya hanya saja ada perubahan kerapatan ataupun resolusi pada data tersebut. Oleh karena itu sangat kecil kemungkinan dan bahkan tidak akan pernah bisa data yang telah dikompresi dengan teknik kompresi Lossy dapat dikembalikan seperti data sebelum dikompresi atau data aslinya. Perubahan yang terjadi pada data pada saat proses kompresi tidaklah terlalu kelihatan. Teknik kompresi ini biasanya digunakan pada data berupa gambar, suara dan video. Karena pada data tersebutlah kehilangan akan informasi yang detail itu mungkin tidak dapat dirasakan oleh sistem kerja indera penglihatan dan pendengaran manusia. Contoh algoritma kompresi Lossy adalah Fractal Compression, Wavelet Compression, Wyner-Ziv Coding (WZC), dan lain-lain. Teknik kompresi Lossy dapat digambarkan seperti pada Gambar 2.2.
Gambar 2.2 Kompresi Lossy (Pu, 2006)
2.1.2. Konsep Kompresi Data Suatu metode pada kompresi data akan menghasilkan bit-bit (satuan terkecil pembentuk data) data baru yang lebih pendek dibandingkan oleh bit-bit data sebelum dikompresi. Bit-bit data yang lebih pendek tersebut biasanya tidak akan bisa dibaca oleh komputer sebelum dilakukan proses encoding. Pada proses encoding bit-bit data tersebut di-encode setiap delapan bitnya sehingga membentuk satu karakter yang dapat dibaca oleh komputer. Begitu juga sebaliknya, pada saat dekompresi bit-bit data tersebut di-decode kembali agar membentuk bit-bit data semula yang akan digunakan dalam proses dekompresi. Karena pada saat proses dekompresi dibutuhkan bit-bit data sebelum di-Encode untuk dapat dibaca kembali dalam proses dekompresi. Hubungan antara metode atau algoritma kompresi dan dekompresi dapat ditunjukkan seperti pada Gambar 2.3.
Universitas Sumatera Utara
Gambar 2.3 Proses Kompresi dan Dekompresi (Pu, 2006) Setiap metode atau algoritma pada kompresi data memiliki fungsi encoding dan decoding. Pada saat mengimplementasikannya, implementorlah yang menentukan bagian Encoder dan Decoder yang menentukan aksi encoding dan decoding yang dipilih dan diterapkan terhadap suatu data. Sebelum melakukan proses encoding, bit data hasil kompresi tadi diperiksa dahulu apakah jumlah total bit-bit tersebut merupakan kelipatan delapan (habis dibagi delapan). Karena di dalam komputer satu karakter direpresentasikan oleh bilangan ASCII (American Standard Code For Information Interchange) sebanyak delapan bit dalam bilangan biner. Jika ternyata jumlah bit-bit data tersebut bukan merupakan kelipatan delapan. Maka dibentuk variabel baru sebagai penambahan ke bit-bit data itu agar bit-bit data tersebut habis dibagi delapan. Variabel ini adalah padding dan flagging.
1. Padding Padding adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit data pada hasil proses kompresi sehingga jumlah keseluruhan bit-bit data tersebut merupakan kelipatan delapan (habis dibagi delapan). Contoh misalkan dihasilkan bit-bit data hasil kompresi yaitu 1100101101010001100001101. Terdapat 25 bit data dalam bilangan biner. Maka dilakukan penambahan bit 0 sebanyak 7 kali agar jumlah bit-bit data tersebut habis dibagi delapan. Sehingga bit bit data itu menjadi 11001011010100011000011010000000 setelah diberikan padding.
Universitas Sumatera Utara
2. Flagging Flagging adalah penambahan bilangan biner sepanjang delapan bit setelah padding dimana flagging ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa terdapat n buah padding di dalam bit-bit data hasil dari kompresi. Penambahan flagging ini dimaksudkan untuk mempermudah dalam membaca bitbit data hasil kompresi pada saat proses dekompresi. Contoh misalkan bit-bit data yang telah diberikan padding adalah 11001011010100011000011010000000. Karena terdapat 7 bit penambahan padding maka flag nya adalah bilangan biner dari 7 dengan panjang 8 bit yaitu 00000111. Sehingga bit-bit datanya menjadi 1100101101010001100001101000000000000111 setelah diberikan flagging.
2.1.3. Pengukuran Kinerja Kompresi Data Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa faktor atau variabel yang biasa digunakan untuk mengukur kualitas dari suatu teknik kompresi data tersebut, yaitu:
1. Ratio of compression (Rc) Ratio of compression (Rc) adalah perbandingan antara ukuran data sebelum dikompresi dengan ukuran data setelah dikompresi.
πΉπ =
ππππππ π
πππ πππππππ π
πππππππππ ππππππ π
πππ πππππππ π
πππππππππ
(Salomon dan Motta, 2010)
Misalkan didapat sebuah nilai Ratio of compression sebesar 2.75. Itu berarti besar data sebelum kompresi adalah 2.75 kali lipat dari besar data setelah dikompresi.
2. Compression ratio (Cr) Compression ratio (Cr) adalah persentasi besar data yang telah dikompresi yang didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran data sebelum dikompresi.
Universitas Sumatera Utara
πͺπ =
ππππππ π
πππ πππππππ π
πππππππππ
ππππππ π
πππ πππππππ π
πππππππππ
Motta, 2010)
π πππ%
(Salomon dan
Misalkan didapat sebuah nilai Compression ratio sebesar 35%. Itu berarti setelah dikompresi ukuran data adalah 35% dari data sebelum dikompresi.
3. Redundancy (Rd) Redundancy (Rd) adalah kelebihan yang terdapat di dalam data sebelum dikompresi. Jadi setelah data dikompresi dapat dihitung Redundancy data yaitu persentasi dari hasil selisih antara ukuran data sebelum dikompresi dengan data setelah dikompresi.
πΉπ
= πππ% β πͺπ(Salomon dan Motta, 2010)
Misalkan didapat sebuah nilai Redundancy sebesar 14%. Itu berarti besarnya kelebihan data sebelum dikompresi adalah 14%.
4. Waktu Kompresi dan Dekompresi Waktu kompresi dan dekompresi adalah waktu yang dibutuhkan oleh sebuah sistem untuk melakukan proses kompresi dan dekompresi dari mulai pembacaan data hingga proses encoding pada data tersebut. Semakin kecil waktu yang diperoleh maka semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi itu.
2.2. Punctured Elias Codes Punctured Elias Codes untuk bilangan integer dirancang oleh Peter Fenwick dalam sebuah percobaan untuk meningkatkan performa the BurrowsβWheeler transform. Istilah Punctured datang dari tempat pengawasan eror kode-kode (ECC). ECC terdiri dari data yang asli ditambah sejumlah bilangan dari check bits. Jika beberapa check bits dihilangkan, untuk mempersingkat serangkaian kode itu, hasil kode ditujukan sebagai Punctured (Salomon, 2007).Cara untuk membangun kode Punctured Elias Codes ini adalah sebagai berikut.
Universitas Sumatera Utara
1. Ambil bilangan biner dari n, 2. Reversed (balikkan bit-bitnya), dan siapkan flag untuk menunjukkan jumlah bit yang bernilai 1 di dalam n. 3. Untuk setiap bit 1 di dalam n kita siapkan flag dari 1 dan akhiri flag dengan 0. 4. Gabungkan flag dengan bilangan biner yang sudah dibalikkan (reversed).
Kode Punctured ini dinamakan kode P1 dan kode ini dimulai dengan 1(paling sedikit terdapat satu flag, kecuali untuk kode P1 dengan n=0) dan juga diakhiri dengan 1 (karena n yang asli , yang bit MSB adalah 1, telah dibalikkan). Setelah itu kita dapat membangun kode Punctured yang lain yaitu P2 = P1(n+1) dengan menghilangkan bit 1 yang paling besar. Berikut adalah contoh beberapa bilangan untuk kode Punctured Elias P1 dan P2 (Salomon, 2007). Tabel 2.1 Tabel Punctured Elias Codes n
Binary of n
Reversed
flag
Flag | Reversed
P1
P2
0
0
-
-
-
0
01
1
1
1
10
10|1
101
001
2
10
01
10
10|01
1001
1011
3
11
11
110
110|11
11011
0001
4
100
001
10
10|001
10001
10101
5
101
101
110
110|101
110101
10011
6
110
011
110
110|011
110011
1101111
7
111
111
1110
1110|111
1110111
00001
8
1000
0001
10
10|0001
100001
101001
2.3. File Text 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 teks yang terdiri dari karakter, angka dan tanda baca (Sitorus, 2012).
Universitas Sumatera Utara
Masukan dan keluaran data teks direpresentasikan sebagai set karakter atau sistem kode yang dikenal oleh sistem komputer. Ada tiga macam set karakter yang umum digunakan untuk masukan dan keluaran pada komputer, yaitu ASCII, EBCDIC, dan Unicode. ASCII (American Standard Code for Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal. ASCII digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks. Kode ASCII memiliki komposisi bilangan biner sebanyak 8 bit, dimulai dari 00000000 hingga 11111111. Total kombinasi yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan desimal. EBCDIC (Extended Binary Code Decimal Interchange Code) merupakan set karakter yang diciptakan oleh komputer merk IBM. EBCDIC terdiri dari 256 karakter yang masing-masing berukuran 8 bit. Adanya keterbatasan pada kode ASCII dan EBCDIC, dibuat standar kode internasional baru yang merupakan kode 16 bit yang disebut Unicode. Unicode adalah suatu standar industri yang dirancang untuk dimanipulasi secara konsisten oleh komputer (Sudewa, 2003).
2.3.1. Format Teks Secara umum, Format data teks dibagi menjadi dua bagian, yaitu (Herry et al, 2005,):
1. Teks sederhana (plain Text) Format data teks (*.txt) merupakan contoh Format teks jenis ini yang paling populer. 2. Teks terformat (formatted Text) Merupakan teks yang terformat dan mengandung styles. Format data dokumen Microsoft Word (*.doc) merupakan contoh format teks jenis ini yang paling populer. Contoh format data teks di atas beserta perangkat lunak yang biasa digunakan di antaranya adalah (Herry et al, 2005):
1. Format data teks (*.txt) 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,
Universitas Sumatera Utara
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 teks. Saat ini perangkat lunak yang paling banyak digunakan untuk memanipulasi format data ini adalah Notepad.
2. Format data dokumen (*.doc) Doc merupakan ekstensi arsip dokumen perangkat lunak Microsoft Word yang paling banyak digunakan dalam menulis 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.
3. Hyper Text Markup Language (*.htm atau *.html) Merupakan format teks standard untuk tampilan dokumen web.
4. Rich Text Format (*.rtf) Format teks ini dikembangkan oleh Microsoft yang dapat dibaca oleh berbagai macam platform, seperti Windows, Linux, Mac OS dan sebagainya.
2.4. Bahasa Pemrograman Java Java adalah suatu bahasa pemrograman yang bersifat Open source yang diciptakan atau dirancang oleh salah satu pemrogram yang bekerja di Sun Microsystem, yang ketika itu ditugaskan untuk memimpin proyek dalam menciptakan program yang bergunauntuk mengendalikan perangkat elektronik rumah tangga yang bersifat Multiplatform (Kadir, 2005). Bahasa Java adalah bahasa modern yang telah diterima masyarakat komputasi dunia. Hampir semua perusahaan perangkat lunak dan computer besar mendukung dan mengembangkan aplikasi system berbasis Java.
Universitas Sumatera Utara
PadaTahun 1996, Sun Microsystem secara resmi merilis versi awal Java yang kemudian terus berkembang hingga muncul JDK1.1 (Java Development Kit versi1.1). Perkembangan terus dilakukan hingga muncul versi baru yang disebut Java 2. Perubahan utama antara versi sebelumnya adalah adanya Swing yang merupakan teknologi Graphical User Interface (GUI) yang mampu menghasilkan aplikasi desktop yang benar- benar baik. Sedangkan dalam penelitian ini menggunakan J DK v e r s i 1.7 dimana versi ini menyediakan lingkungan pengembangan yang kaya fitur, stabil, aman dan mendukung konektivitas basis data, rancangan antarmuka pemakai, masukan/keluaran, dan pemrograman jaringan.
2.5. UML (Unified Modelling Language) UML (Unified Modeling Language) adalah bahasa yang banyak digunakan sebagai standar
pemodelan
di
dunia
dalam
memodelkan
sebuah
sistem
dengan
menggambarkan relasi antar objek dalam lingkungan rekayasa perangkat lunak (Whitten and Bentley, 2007). UML menggabungkan teknik dari pemodelan data, pemodelan bisnis (alur kerja), komponen dan segala hal yang terlibat di dalam proses. UML 2.2 mempunyai 14 tipe diagram yang dibagi di dalam 2 kategori yaitu yang menampilkan informasi struktural, dan yang menampilkan behavior atau perilaku software. Dalam penelitian ini, hanya akan menggunakan 4 jenis UML di antaranya adalah Use Case Diagram, Activity Diagram, Sequence Diagram dan Class Diagram.
2.5.1. Use Case Diagram Use case diagram adalah teknik yang digunakan untuk menampilkan functional requirements dari sebuah sistem. Use case diagram menampilkan bagaimana software akan bekerja dari sudut pandang user (bukan Developer). Simbol dasar yang akan digunakan pada use case diagram yaitu: 1. Use case Simbol yang digunakan untuk menunjukkan fungsi sistem secara umum. Dilambangkan dengan simbol oval dengan teks yang menunjukkan fungsi sistem di dalamnya.
Universitas Sumatera Utara
2. Actor. Simbol yang digunakan untuk mewakili seseorang/sesuatu (misal: organisasi, sistem yang lain, dll) yang berinteraksi dengan sistem. 3. Association. Kedua simbol di atas dihubungkan dengan garis yang disebut garis asosiasi. Di dalam use case juga disertakan boundary yang menunjukkan batasan antara sistem dengan luar sistem.
2.5.2. Activity Diagram Activity diagram menggambarkan alur dari proses yang terjadi dalam sebuah use case. Activity diagram juga digunakan untuk menggambarkan logika dari sebuah sistem. Notasi/simbol yang akan digunakan di dalam Activity diagram yaitu: 1. Initial node. Lingkaran hitam penuh yang menggambarkan awal dari proses. 2. Actions. Persegi panjang dengan sudut lengkung yang menampilkan langkah/step dari proses. 3. Flow. Panah yang menampilkan alur dari actions. 4. Desicion. Belah ketupat (diamond) dengan satu panah masuk dan dua panah keluar, menampilkan kondisi. 5. Merge. Belah ketupat (diamond) dengan banyak panah masuk dan satu panah keluar, menggabungkan alur program yang sebelumnya terpisah dengan sebuah kondisi. 6. Fork. Baris hitam dengan satu panah masuk dan dua atau lebih panah keluar, menunjukkan sebuah proses yang terjadi secara bersamaan. 7. Join.
Universitas Sumatera Utara
Baris hitam dengan dua atau lebih anak panah masuk dan satu anak panah keluar. Menggambarkan proses yang terjadi secara paralel telah selesai. Seluruh proses yang terjadi ketika fork harus selesai sebelum melanjutkan ke flow berikutnya. 8. Activity final. Lingkaran hitam penuh di dalam lingkaran hitam lain yang kosong, menggambarkan proses selesai.
2.5.3. Sequence Diagram Sequence diagram menggambarkan bagaimana objek saling berinteraksi melalui message dalam eksekusi operation, untuk satu buah use case. Diagram ini mengilustrasikan bagaimana message dikirim dan diterima diantara objek, dan di urutan yang mana. Sequence membantu untuk menggambarkan data yang masuk dan keluar sistem. Notasi/simbol yang akan digunakan di dalam Sequence diagram yaitu: 1. Actor. Seseorang atau sesuatu yang berinteraksi dengan sistem. Sama seperti pada use case. 2. System. Kotak yang menunjukkan sebuah sistem sebagai βblack boxβ atau secara keseluruhan. 3. Lifelines. Garis putus vertikal di bawah aktor dan sistem, menunjukkan berjalannya sistem. 4. Activation bars. Garis membentuk kotak panjang di bawah lifelines, menunjukkan waktu ketika objek aktif di dalam interaksi. 5. Input messages. Garis panah horizontal dari aktor ke sistem yang menunjukkan Input. Cara penulisannya adalah diawali dengan huruf kecil, dan setiap kata setelahnya tetap digabung (tanpa spasi) namun diawali huruf kapital. Jika mengandung parameter, ditulis dengan cara yang sama, dan setiap parameter diawali dengan koma. 6. Output messages. Garis panah putus-putus horizontal dari sistem ke aktor yang menunjukkan message yang dikirim dari sistem ke actor.
Universitas Sumatera Utara
7. Receiver actor. Aktor lain di luar sistem yang menerima message dari sistem juga dapat diikutsertakan. 8. Frame. Sebuah kotak yang dapat menutup satu atau lebih message untuk membagi sequence. Frame ini dapat menunjukkan loop, pilihan lain.
2.5.4. Class Diagram Class diagram menggambarkan struktur objek-objek dari class yang tersusun di dalam sistem, termasuk di dalamnya atribut dan operasi yang dijalankan, serta relasi di antara objek-objek/class
tersebut.
Digunakan
dalam
pemodelan
konseptual
dan
penerjemahan ke bentuk kode. Di dalam diagram, class ditampilkan dengan kotak berisi tiga bagian: 1. Bagian atas berisi nama dari class. Ditulis dengan huruf tebal, rata tengah dan huru pertama kapital 2. Bagian tengah berisi atribut dari class. Ditulis dengan rata kiri dan huruf pertama kecil. 3. Bagian bawah berisi method atau operation dari class. Ditulis dengan rata kiri dan huruf pertama kecil.
Universitas Sumatera Utara