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

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.

  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 lain- lain. 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 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.

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 1100101101010001100001101 0000000 setelah diberikan padding.

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 bit- bit data hasil kompresi pada saat proses dekompresi. Contoh misalkan bit-bit data yang telah diberikan padding adalah 1100101101010001100001101 0000000 . 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 1100101101010001100001101 0000000 00000111 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. c ) Ratio of compression (R

  Ratio of compression

  (R c ) 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. r )

  Compression ratio (C

  Compression ratio

  (C r ) adalah persentasi besar data yang telah dikompresi yang didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran data sebelum dikompresi.

  (Salomon dan

  = %

  Motta, 2010) Misalkan didapat sebuah nilai Compression ratio sebesar 35%. Itu berarti setelah dikompresi ukuran data adalah 35% dari data sebelum dikompresi.

  3. d ) Redundancy (R

  Redundancy

  (R d ) 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.

  1 10 10|1 101 001

  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).

  

File teks merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang

  6 110 011 110 110|011 110011 1101111 7 111 111 1110 1110|111 1110111 00001 8 1000 0001 10 10|0001 100001 101001

  11 11 110 110|11 11011 0001 4 100 001 10 10|001 10001 10101 5 101 101 110 110|101 110101 10011

  3

  01 10 10|01 1001 1011

  10

  2

  1

  1. Ambil bilangan biner dari n, 2.

  1

  01

  flag Flag | Reversed P1 P2

Tabel 2.1 Tabel Punctured Elias Codes n Binary of n 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).

  4. Gabungkan flag dengan bilangan biner yang sudah dibalikkan (reversed).

  3. Untuk setiap bit 1 di dalam n kita siapkan flag dari 1 dan akhiri flag dengan 0.

  Reversed (balikkan bit-bitnya), dan siapkan flag untuk menunjukkan jumlah bit yang bernilai 1 di dalam n.

2.3. File Text

  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, 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.

  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.

  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.

  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.

  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.