6
BAB 2
TINJAUAN PUSTAKA
2.1 Kompresi Istilah kompresi berasal dari kata bahasa Inggris compression yang berarti pemampatan. Kompresi berarti memampatkan data yang berukuran besar sehingga menjadi kecil sehingga dapat mengatasi pemborosan dalam penggunaan media penyimpanan. Kompresi data adalah proses yang dapat mengubah masukan sebuah aliran data masukan (sumber atau data asli) ke dalam aliran data yang lain (keluaran atau data yang terkompresi) yang memiliki ukuran yang lebih kecil. Aliran data dapat berupa file, buffer di memori atau bit individual yang dikirim pada saluran komunikasi (Salomon & Motta, 2010). Kompresi data adalah (dalam bidang ilmu komputer, ilmu pengetahuan dan seni) sebuah penyajian informasi ke dalam bentuk yang lebih sederhana. Kompresi data adalah sebagai sarana untuk representasi yang efisien dari sumber data digital seperti teks, gambar, suara atau kombinasi dari semuanya yaitu video. Tujuan dari kompresi data adalah untuk representasi dari sumber data dalam bentuk digital dengan bit sesedikit mungkin sementara memenuhi persyaratan minimum rekontruksi yang asli (Pu, 2006). Proses kompresi merupakan proses mereduksi ukuran data untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap mewakili kuantitas informasi yang terkandung pada data tersebut. Tujuan dari kompresi data adalah untuk mengurangi data berlebihan (redundancy) sehingga ukuran data menjadi lebih kecil dan lebih ringan dalam proses transmisi dan menghemat ruang memori dalam penyimpanan data (Putra, 2010). 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 (Salomon, 2007).
Universitas Sumatera Utara
7 Data dapat dalam bentuk file teks, gambar, suara atau deretan angka. Alasan kenapa kompresi data sangat dibutuhkan karena semakin banyak informasi saat ini yang digunakan dalam bentuk digital dan semakin lama ukuran yang dibutuhkan untuk menyajikan data tersebut semakin besar (Sayood, 2006). Kompresi data sangat popular sekarang ini karena dua alasan yaitu (Salomon, 2007) : 1. Orang-orang lebih suka mengumpulkan data. Tidak perduli seberapa besar media penyimpanan yang dimilikinya. Akan tetapi cepat atau lambat akan terjadi overflow. 2. Orang-orang tidak suka menunggu dalam waktu lama untuk memindahkan data. Misalnya ketika duduk didepan komputer untuk menunggu halaman Web terbuka atau mendownload sebuah file.
2.2.1 Teknik Kompresi Data Ketika kita berbicara tentang teknik kompresi atau algoritma kompresi, kita sebenarnya mengacu pada dua algoritma. Ada algoritma kompresi yang mengambil sebuah input x dan menghasilkan xc sebagai representasi yang memerlukan bit yang lebih sedikit dan ada algoritma rekontruksi yang beroperasi pada representasi kompresi xc untuk menghasilkan rekontruksi y . Operasi ini secara skematis diperlihatkan pada Gambar 2.1 (Sayood, 2006).
Hallo Mahasiswa Tingkat Akhir
Hallo Mahasiswa Tingkat Akhir
Gambar 2.1 Kompresi dan Rekontruksi (Sayood, 2006)
Universitas Sumatera Utara
8 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 lossless adalah kompresi data yang menghasilkan file data hasil kompresi yang dapat dikembalikan menjadi file data asli sebelum dikompresi secara utuh tanpa perubahan apapun. Kompresi jenis ini ideal untuk kompresi data teks. Teknik kompresi lossless digunakan ketika data asli dari sumber sangat penting dan kita tidak ingin kehilangan rincian data apapun. Contoh seperti data gambar medis, teks dan gambar sebagai bukti untuk alasan hukum, beberapa file komputer dan lain-lain. Pada Gambar 2.1, masukan string AABB direkonstruksi setelah eksekusi dari algoritma kompresi diikuti dengan dekompresi. kompresi lossless disebut kompresi reversibel karena data asli dapat kembali dengan sempurna dengan adanya proses dekompresi.
Gambar 2.2 Kompresi Lossless (Pu, 2006)
2. Kompresi Data Lossy Kompresi lossy adalah kompresi data yang menghasilkan file data hasil kompresi yang tidak dapat dikembalikan menjadi file data sebelum dikompresi secara utuh. Ketika data hasil kompresi di-decode kembali, data hasil decoding tersebut tidak dapat dikembalikan menjadi sama dengan data asli tetapi ada bagian data yang hilang. Kompresi lossy disebut kompresi ireversibel karena tidak mungkin untuk memulihkan data asli persis dengan dekompresi. Gambar 2.2 berikut menunjukkan contoh di mana angka desimal yang panjang menjadi pendek setelah proses kompresi dan dekompresi.
Universitas Sumatera Utara
9
Gambar 2.3 Kompresi Lossy (Pu, 2006)
2.2.2 Parameter Analisis Kinerja Algoritma Kompresi 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 & Motta, 2010).
RC
Ukuran Data Sebelum Dikompresi Ukuran Data Setelah Dikompresi
2. Compression Ratio (CR) Compression Ratio (CR) adalah presentasi besar data yang telah dikompresi yang didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran sebelum dikompresi (Salomon & Motta, 2010).
CR
Ukuran Data Setelah Dikompresi 100% Ukuran Data Sebelum Dikompresi
3. Space Savings (SS) Space Savings (SS) adalah presentasi selisih ukuran data setelah dikompresi dengan ukuran data sebelum dikompresi (Salomon & Motta, 2010).
SS Ukuran Data Sebelum Kompresi Ukuran Data Setelah Kompresi
Universitas Sumatera Utara
10 4. Time Process (Waktu) Time Process adalah waktu kompresi dan dekompresi, yaitu waktu yang dibutuhkan oleh sebuah sistem untuk melakukan proses kompresi dan dekompresi mulai dari pembacaan data hingga proses encoding pada data tersebut. Semakin kecil waktu yang diperoleh maka semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi.
2.3 Dekompresi Algoritma kompresi tidak akan bekerja kecuali proses dekompresi juga tersedia. Kata kompresi sendiri menyiratkan konteks kompresi dan dekompresi. Proses dekompresi dapat dengan mudah diperoleh setelah melakukan proses kompresi. Efisiensi proses dekompresi lebih penting dari proses kompresi, misalnya data film, foto dan audio sering dikompresi pertama oleh seniman dan kemudian dengan versi file yang sama file kompresi didekompresi berkali-kali oleh jutaan pemirsa dan pendengar. Gambar 2.4 dibawah ini menunjukkan hubungan antara kompresi dan dekompresi (Pu,2006).
Gambar 2.4 Kompresi dan Dekompresi (Pu, 2006)
2.4 Algoritma 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 error code-code (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 Punctured Elias Codes ini adalah sebagai berikut :
Universitas Sumatera Utara
11 1. Ambil bilangan biner dari n. 2. Reversed (balikkan bit-bitnya) dan siapkan flag untuk menunjukkan jumlah bit yang bernilai 1 didalam n. 3. Untuk setiap bit 1 didalam n kita siapkan flag dari 1dan 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, yaitu bit MSB (Most Significant Bit) adalah 1, telah dibalikkan) (Salomon, 2007).
Tabel 2.1 Punctured Elias Codes (Salomon, 2007) n
Binary of n
Reserved
Flag
Flag | Reserved
P1
0
0
-
-
-
0
1
1
1
10
10 | 1
101
2
10
01
10
10 | 01
1001
3
11
11
110
110 | 11
11011
4
100
001
10
10 | 001
10001
5
101
101
110
110 | 101
110101
6
110
011
110
110 | 011
110011
7
111
111
1110
1110 | 111
1110111
8
1000
0001
10
10 | 0001
100001
2.5 Algoritma Ternary Comma Code Angka Binary (basis 2) adalah dua bit 0 dan 1. Sama dengan angka Ternary (basis 3) yang didasarkan pada tiga digit (trits) 0, 1 dan 2. Setiap trit (angka) biasa dikodekan dalam dua bit, tetapi dua bit tersebut dapat memiliki empat nilai. Jadi, hal tersebut tampak masuk akal untuk berkerja dengan menggunakan sistem angka Ternary dimana setiap trit (angka) diwakili oleh dua bit dan dalam sebuah penjumlahan menjadi tiga trit (angka) terdapat pada simbol keempat, yakni Comma (c). Sekali kita masukkan simbol c, itu akan memudahkan kita untuk membangun Ternary Comma Code untuk bilangan bulat. Comma Code untuk n adalah bentuk sederhana dari perwakilan Ternary dari n – 1 yang diikuti oleh c. Dengan demikian,
Universitas Sumatera Utara
12 Comma Code dari 8 adalah 21c (karena 7 2 3 1) dan Comma Code dari 18 adalah 122c (karena 17 1 9 2 3 2 ). Tabel 2.2 daftar beberapa Ternary Comma Code (Label L menunjukkan panjang dari kode, dalam bit). Kode-kode ini telah ada (lebih lama dari pada kode-kode yang telah dijelaskan sebelumnnya disini) namun berkembang secara pelan. Karena itu, mereka cocok untuk aplikasi dimana bilangan bulat yang nilainya adalah umum. Kode ini juga mudah untuk di-encode dan di-decode-kan dan hal yang paling prinsip adalah Comma Symbol (sebagai tanda akhir sebuah kode) yang diperlukan adalah dua bit. Ketidak efisiensi ini bukanlah hal yang serius, namun dapat menjadi lebih bagi Comma Code yang didasarkan pada angka dasar yang besar. Pada angka basis 15 Comma Code, contohnya, setiap 15 digit memerlukan 4 bit dan The Comma-nya juga 4 bit bentuk. Setiap kode diakhiri dengan 4 bit Comma, tidak termasuk dengan teori minimal dari satu bit dan fitur ini membuat kode-kode terlihat tidak efesien (bagaimana pun juga, redundansi per simbol menurun untuk sejumlah besar basis. Dalam sistem basis 7, salah satu dari delapan simbol dikorbankan untuk Comma, sementara dalam basis 15 itu adalah salah satu dari 16 simbol) (Salomon, 2007).
Tabel 2.2 Ternary Comma Code (Salomon, 2007) Value
Code
L
Value
Code
L
0
c
2
11
101c
8
1
1c
4
12
102c
8
2
2c
4
13
110c
8
3
10c
4
14
111c
8
4
11c
6
15
112c
8
5
12c
6
16
120c
8
6
20c
6
17
121c
8
7
21c
6
18
122c
8
8
22c
6
19
200c
8
9
100c
6
20
201c
8
…..
…..
64
2001c
10
1,000
1101000c
16
128
11201c
12
3,000
11010002c
18
256
100110c
14
10,000
111201100c
20
512
200221c
14
65,536
10022220020c
24
Universitas Sumatera Utara
13 2.6 File Teks Text file atau file teks disebut juga dengan flat file, yaitu salah satu jenis file komputer yang tersusun dalam suatu urutan baris data teks biasanya diwakili oleh 8 bit kode ASCII (atau EBCDIC) (Pu, 2006). 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 bntuk teks. Data yang berasal dari dokumen pengolah data, angka yang digunakan dalam perhitungan, nama dan alamat dalam basis data merupakan contoh masukan data teks yang terdiri dari karakter, angka dan tanda baca (Pramilo, 2008). Secara umum, format data teks dibagi menjadi dua bagian, yaitu (Purnomo, 2005) : 1. Teks Sederhana (plain text) Format data teks (*.txt) merupakan contoh format teks jenis ini yang paling popular. Format data teks merupakan format teks yang digunakan untuk menyimpan huruf, angka, karakter control (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 control atau simbol pada arsip teks memakan tempat satu byte. 2. Teks Terformat (formatted text) 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 popular. 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 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.
2.7 Bahasa Pemrograman C# C# atau sering disebut C sharp merupakan sebuah bahasa pemrograman yang berorientasi objek yang dikembangkan oleh Microsoft. Seperti halnya bahasa pemrograman yang lain, C# bisa digunakan untuk membangun berbagai macam jenis aplikasi, seperti aplikasi berbasis
Universitas Sumatera Utara
14 windows (deksktop) dan aplikasi berbasis web serta aplikasi berbasis web service. Terdapat beberapa editor dari pemrograman C#, yaitu (Saputra, 2013) : 1. Notepad Notepad dapat membuat aplikasi berbahasa pemrograman C#. File-file C# disimpan dengan ekstensi .cs. Jika tidak hati-hati menyimpan file C# di Notepad, misalnya menyimpan file dengan nama test.cs, maka tidak menutup kemungkinan file tersebut test.cs.txt kecuali kita telah men-setting terlebih dahulu box drop down list pada fungsi Save As menjadi All File. 2. Visual Studio 6 Jika anda telah terbiasa menggunakan Visual Studio 6, tools tersebut bisa digunakan untuk membuat aplikasi dengan C#, khususnya dengan menggunakan editor Microsoft Visual C++.
Ada beberapa alasan kenapa developer memilih C#, yaitu (Nugroho et al, 2013) : 1. Sederhana (simple) C# menghilangkan beberapa hal yang bersifat kompleks yang terdapat dalam beberapa macam bahasa pemrograman seperti Java dan C++, termasuk diantaranya menghilangkan macro, templates, multiple inheritance dan virtual base classes. 2. Modern Adanya beberapa fitur seperti exception handling, garbage collection, extensible data types dan code security. Adanya fitur tersebut menjadikan bahasa C# sebagai bahasa pemrograman yang modern. 3. Object-oriented language Kunci dari bahasa pemrograman yang bersifat object-oriented adalah encapsulation, inheritance dan polymorphism. 4. Powerful dan fleksibel C# bisa digunakan untuk membuat berbagai macam aplikasi, seperti aplikasi pengolah kata, grafik, spreadsheet atau bahkan membuat compiler untuk sebuah bahasa pemrograman. 5. Efisien C# adalah pemrograman yang manggunakan kata-kata yang tidak terlalu banyak. C# hanya berisi kata-kata yang biasa disebut dengan keyword.
Universitas Sumatera Utara
15 6. Modular Kode C# ditulis dengan pembagian masing class-class yang terdiri dari beberapa routines yang disebut sebagai member methods. 7. C# akan popular Dengan dukungan penuh dari Microsoft yang mengeluarkan produk-produk utamanya dengan dukungan Framework .NET, maka masa depan bahasa C# sebagai salah satu bahasa pemrograman yang ada didalam lingkungan Framework .NET akan lebih baik.
2.8 UML (Unifed Modelling Language) UML (Unifed Modelling Language) adalah salah satu standar bahasa yang banyak digunakan di dunia industri untuk mendefinisikan requirement, membuat analisis dan desain, serta menggambarkan arsitektur dalam pemrograman berorientasi objek. UML muncul karena adanya kebutuhan pemodelan visual untuk menspesifikasikan, menggambarkan, membangun dan dokumentasi dari sistem perangkat lunak. UML merupakan bahasa visual untuk pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram dan teksteks pendukung. UML hanya berfungsi untuk melakukan pemodelan. Pengguna tidak terbatas pada metodologi tertentu, meskipun pada kenyataannya UML paling banyak digunakan pada metodologi berorientasi objek (Sukamto & Shalahuddin, 2013). Didalam penelitian ini hanya terdapat 4 jenis UML, yaitu Use Case Diagram, Activity Diagram, Sequence Diagram dan Class Diagram.
1. Use Case Diagram Use case diagram merupakan pemodelan untuk kelakuan (behavior) sistem informasi yang akan dibuat. Use Case mendeskripsikan sebuah interaksi antara salah satu atau lebih aktor dengan sistem informasi yang akan dibuat. Use Case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem informasi dan siapa saja yang berhak menggunakan fungsi-fungsi itu . Simbol dasar yang akan digunakan pada use case diagram adalah (Sukamto & Shalahuddin, 2013): a. Use Case Fungsionalitas yang disediakan sistem sebagai unit-unit yang saling bertukar pesan antar unit dan aktor. Biasanya dinyatakan dengan menggunakan kata kerja di awal frase nama use case.
Universitas Sumatera Utara
16 b. Actor Orang, proses atau sistem lain yang berinteraksi dengan sistem informasi yang akan dibuat diluar sistem informasi yang akan dibuat itu sendiri, jadi walaupun simbol dari aktor adalah gambar orang, tapi aktor belum tentu merupakan orang. c.
Association Komunikasi antar aktor dan use case yang berpartisipasi pada use case atau use case memiliki interaksi dengan aktor.
2. Activity Diagram Activity diagram menggambarkan workflow (aliran kerja) atau aktivitas dari sebuah sistem atau proses bisnis atau menu yang ada pada perangkat lunak. Activity diagram menggambarkan aktivitas sistem bukan apa yang dilakukan aktor. Simbol dasar yang akan digunakan pada activity diagram adalah (Sukamto & Shalahuddin, 2013) : a. Initial note Status awal aktivitas sistem, sebuah diagram aktivitas memiliki sebuah status awal. b. Actions Aktivitas yang dilakukan sistem, aktivitas biasanya diawali dengan kata kerja. c. Decision Asosiasi percabangan dimana jika ada pilihan aktivitas lebih dari satu. d. Join Asosiasi penggabungan dimana lebih dari satu aktivitas digabungkan menjadi satu. e. Activity final Status akhir yang dilakukan sistem, sebuah diagram memiliki sebuah status akhir.
3. Sequence Diagram Sequence
diagram
menggambarkan
kelakuan
objek
pada
use
case
dengan
mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antar objek. Untuk menggambar sequence diagram maka harus diketahui objek-objek yang terlibat dalam sebuah use case beserta metode-metode yang dimiliki kelas yang diinstansiasi menjadi objek itu. Simbol dasar yang akan digunakan pada sequence diagram adalah (Sukamto & Shalahuddin, 2013) : a. Actor Seseorang atau sesuatu yang berinteraksi dengan sistem, sama seperti pasa use case.
Universitas Sumatera Utara
17 b. System Kotak yang menunjukkan sebuah sistem sebagai ‘black box’ atau secara keseluruhan. c. Lifelines Garis putus vertikal dibawah aktor dan sistem, menunjukkan berjalannya sistem. d. Activation bars Garis membentuk kotak panjang di bawah lifelines, menunjukkan waktu ketika objek aktif di dalam interaksi. e. 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) namum diawali huruf kapital. Jika mengandung parameter, ditulis dengan cara yang sama dan setiap parameter diawali dengan koma. f. Output messages Garis panah putus-putus horizontal dari sistem ke aktor yang menunjukkan message yang dikirim dari sistem ke aktor. g. Receiver actor Aktor lain diluar sistem yang menerima message dari sistem juga dapat diikutsertakan. h. Frame Sebuah kotak yang dapat menutup satu atau lebih message untuk membagi sequence. Frame ini dapat menunjukkan loop, pilihan lain.
4. Class Diagram Class diagram menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang disebut atribut dan metode atau operasi. Didalam diagram, class ditampilkan dengan kotak berisi tiga bagian (Sukamto & Shalahuddin, 2013): a. Bagian atas berisi nama dari class, ditulis dengan huruf tebal, rata tengah dan huruf pertama kapital. b. Bagian tengah berisi atribut dari class, ditulis dengan rata kiri dan huruf pertama kecil. c. Bagian bawah berisi method atau operation dari class, ditulis dengan rata kiri dan huruf pertama kecil.
Universitas Sumatera Utara