• Tidak ada hasil yang ditemukan

KOMPRESI FILE.TXT DENGAN ALGORITMA HUFFMAN PADA FILE DENGAN MENGGUNAKAN PENGKODEAN.

N/A
N/A
Protected

Academic year: 2017

Membagikan "KOMPRESI FILE.TXT DENGAN ALGORITMA HUFFMAN PADA FILE DENGAN MENGGUNAKAN PENGKODEAN."

Copied!
77
0
0

Teks penuh

(1)

PADA FILE DENGAN MENGGUNAKAN PENGKODEAN

BASE-64

SKRIPSI

Oleh :

LINGGA ADI F IRMANTO

( 0734010127 )

``

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNANNASIONAL “VETERAN” J ATIM

SURABAYA

(2)

Pembimbing I : Dian Puspita Hapsari, S.Kom, M.Kom Pembimbing II : Achmad Junaidi, S.Kom.

Penyusun : Lingga Adi Firmanto

ABSTRAK

Kompresi data adalah upaya untuk memperkecil ukuran data tanpa kehilangan data aslinya. Sejumlah algoritma telah dikembangkan untuk memperoleh hasil kompresi sekecil mungkin, yang salah satunya adalah Huffman. Algoritma Huffman merupakan algoritma kompresi data berbasis statistik. Keunikan dari algoritma ini adalah semakin banyak terdapat karakter yang sama maka hasil kompresinya akan semakin kecil karena sejumlah karakter yang sama tersebut akan diwakili oleh satu pola saja. Penelitian ini berupaya agar data yang akan dikompresi memiliki “nilai kembar” sebanyak mungkin agar saat dikompresi dengan algoritma Huffman diperoleh hasil kompresi yang semakin kecil dengan melakukan pengkodean (encoding) berbasis 64 sebagai upaya yang bisa dilakukan untuk memperkecil interval. Terbatasnya jumlah karakter pola yang tersedia akan membuat peluang terjadinya karakter kembar semakin besar. Hasil akhir proses encode adalah berupa dokumen baru yang hanya terdiri dari susunan karakter pola saja. File ini selanjutnya akan dikompresi dengan algoritma Huffman.

Oleh karena itu, dalam tugas akhir ini, penulis membuat aplikasi yang mampu melakukan proses kompresi menggunakan algorithma huffman pada file yang mengalami pengkodean base-64 menggunakan bahasa pemrograman Java.

(3)

Alhamdulillaahi rabbil ‘alamin, segala puji bagi Allah Yang Maha Kuasa yang telah

memberikan kekuatan-Nya sehingga penulis bisa menyelesaikan tugas akhir yang berjudul :

“Kompresi File Dengan Algoritma Huffman Pada File Dengan Menggunakan Pengkodean

Base-64”. Serta kepada Nabi Muhammad SAW yang telah menuntun kita semua kejalan yang

lurus dan di ridhoi oleh Allah SWT.

Melalui tugas akhir ini, penulis merasa mendapat kesempatan besar untuk lebih

memperdalam ilmu pengetahuan yang diperoleh selama di perkuliahan.Terutama di bidang

pemrograman java. Namun demikian, penulis menyadari bahwa Tugas Akhir ini masih memiliki

banyak kelemahan dan kekurangan. Oleh karena itu penulis sangat mengharapkan kritik dan

sarannya untuk pengembangan ke depannya.

Secara khusus, dalam kesempatan ini pula, penulis ingin mengucapkan terima kasih dan

penghargaan sebesar-besarnya kepada:

1.

Bapak Ir. Sutiyono MT selaku Dekan Fakultas Teknologi Industri Universitas

Pembangunan Nasional “Veteran” Jawa Timur.

2.

Ibu Dr. Ir. Ni Ketut Sari, MT selaku Ketua Program Studi Teknik Informatika Universitas

Pembangunan Nasional ”Veteran” Jawa Timur.

(4)

restunya yang tiada henti.

5.

Teman-teman seperjuangan Indra,kiki,reza(ahong),farid,yursa,nanang yang selalu ada

untuk membantu meringankan pengerjaan tugas akhir ini.

6.

Rizky Novitasari atas dukungannya selama ini serta teman-teman dari drughi indonesia.

Saya menyadari bahwa dalam penyusunan laporan ini tidak terlepas dari kekurangan

dan kesalahan. Untuk itu, saya sangat terbuka bagi kritik dan saran yang bersifat membangun.

Semoga laporan tugas akhir ini bermanfaat bagi saya khususnya dan bagi pembaca umumnya.

Surabaya, 15 Juni 2012

(5)
(6)

2.9 Unified Modelling Language ... 21

(7)

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Hasil Perancangan ... 53

4.2 Implementasi Package Base64 ... 53

4.2.1 Implementasi Fungsi byte[] Encode () ... 53

4.2.2 Implementasi Fungsi int Encode() ... 54

4.2.3 Implementasi Fungsi byte[] Decode() ... 54

4.2.4 Implementasi Fungsi int Decode() ... 55

4.3 Implementasi Package Frequency Table ... 55

4.3.1 Implementasi Fungsi int getSymbolLimit() ... 55

4.3.2 Implementasi Fungsi int Get() ... 56

4.3.3 Implementasi Fungsi Set() ... 56

4.3.4 Implementasi Fungsi increment () ... 56

4.4 Implementasi Package Huffman Compress ... 57

4.4.1 Implementasi Fungsi FrequencyTable getFrequencies() ... 57

4.4.2 Implementasi Fungsi WriteCode() ... 58

4.4.3 Implementasi Fungsi Compress() ... 58

4.5 Pengujian Sistem ... 59

4.5.1 Pengujian Encoding dan Kompresi ... 59

4.5.2 Pengujian Decoding dan Dekompresi ... 63

BAB V PENUTUP 5.1 Kesimpulan…….. ... 67

5.2 Saran………. ... 67

(8)

D A F T AR G A M B A R

Gambar 2.1 Siklus Informasi ... 10

Gambar 2.2 Komponen Kualitas Informasi ... 11

Gambar 2.3 Representasi teks ABACCDA ... 16

Gambar 2.4 Pohon Huffman untuk teks ABACCDA ... 17

Gambar 2.14 Notasi Generalization... 32

Gambar 2.15 Notasi Realization ... 33

Gambar 3.1 Diagram Alir Aplikasi encoding dan kompresi ... 41

Gambar 3.2 Kelas Diagram Aplikasi Encode64 dan Kompresi Huffman ... 42

Gambar 3.3 Use Case Diagram Aplikasi Kompresi Data ... 47

Gambar 3.4 Sequence Diagram Compress ... 48

Gambar 3.5 Sequence Diagram Decompress ... 49

Gambar 3.6 Rancangan Form Kompresi ... 51

Gambar 3.7 Rancangan Form Dekompresi ... 52

Gambar 4.1 Pengujian encoding dan kompresi ... 59

Gambar 4.2 Grafik Hasil Uji Coba Kompresi ... 62

Gambar 4.3 Pengujian decoding dan dekompresi ... 63

(9)

DAFTAR TABEL

Tabel 2.1 Kode Huffman untuk “ABACCDA” ... 17

Tabel 2.2 Contoh Encoding dengan Metode Base-64 ... 20

Tabel 2.3 Perbandingan Java dengan Bahasa Lain ... 35

Tabel 4.1 Rangkuman Hasil Percobaan Encoding dan

Kompresi ... 60

Tabel 4.2 Rangkuman Hasil Percobaan Decoding dan

(10)

BAB I

PENDAHULUAN

1.1. Latar Belakang

Kompresi data adalah upaya untuk memperkecil ukuran data tanpa

kehilangan data aslinya. Bisa dikatakan bahwa hasil akhir dari proses kompresi

data adalah terbentuknya data baru yang merupakan modifikasi dari data asli

dengan algoritma tertentu dimana data baru ini memiliki ukuran lebih kecil

daripada data aslinya, Data hasil kompresi tidak bisa dibaca secara langsung

sebagaimana data asli; data hasil kompresi bisa dibaca setelah sebelumnya

di-dekompresi terlebih dahulu.

Sejumlah algoritma telah dikembangkan untuk memperoleh hasil

kompresi sekecil mungkin. Kebanyakan dari algoritma tersebut merupakan

pengembangan maupun perbaikan dari algoritma yang sudah ada, salah satunya

dikembangkan dari algoritma Huffman. Algoritma Huffman merupakan algoritma

kompresi data berbasis statistik. Struktur tree untuk menyusun karakter kompresi

diperoleh melalui perhitungan statistik berdasarkan jumlah kemunculan tiap

karakter. Keunikan dari algoritma ini adalah semakin banyak terdapat karakter

yang sama maka hasil kompresinya akan semakin kecil karena sejumlah karakter

yang sama tersebut akan diwakili oleh satu pola saja. Penelitian ini berupaya agar

data yang akan dikompresi memiliki “nilai kembar” sebanyak mungkin agar saat

dikompresi dengan algoritma Huffman diperoleh hasil kompresi yang semakin

(11)

Peluang untuk memperoleh data kembar ditentukan oleh

panjang-pendeknya interval kode karakter yang digunakan. Secara umum karakter di

komputer dikodifikasi dalam format ASCII (American Standard Code for

Information Interchange) dengan panjang interval 256, yaitu kode 0 sampai 255.

Tiap karakter akan disimpan oleh komputer dalam bentuk biner sebanyak 8 bit.

Dalam format ASCII, setiap karakter akan memiliki nilai biner antara 00000000

sampai dengan 11111111. Dengan panjang interval 256 maka tiap karakter akan

memiliki formasi biner berbeda dibandingkan dengan karakter lainnya. Bila

panjang interval ini diperkecil maka akan ada sejumlah karakter berbeda yang

memiliki nilai biner sama. Upaya yang bisa dilakukan untuk memperkecil interval

ini adalah dengan proses encode data.

Encode merupakan upaya untuk mengubah suatu karakter menjadi

karakter lain yang sudah disediakan. Ini berbeda dengan enkripsi yang

menggunakan persamaan matematika untuk mengubah suatu karakter menjadi

karakter lain. Pada encode, karakter yang akan menjadi karakter pengganti sudah

tersedia, tinggal harus dihitung berdasarkan rumus tertentu untuk mencari karakter

mana dalam pola yang harus digunakan untuk menggantikan karakter tertentu.

Algoritma Base-64 merupakan salah satu algoritma untuk proses encode

data dengan menyediakan karakter pola sebanyak 64 buah, yaitu

ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz,

0123456789, +/. Karakter pola tersebut hanya menggunakan 6 bit data. Karakter

yang di-encode dengan algoritma base 64 adalah karakter dengan lebar 8 bit,

diubah menjadi karakter pola dengan lebar 6 bit. Terbatasnya jumlah karakter pola

(12)

Hasil akhir proses encode adalah berupa dokumen baru yang hanya terdiri dari

susunan karakter pola saja. File ini selanjutnya akan dikompresi dengan algoritma

Huffman.

Oleh karena itu, dalam tugas akhir ini, penulis akan membuat aplikasi

yang mampu melakukan proses kompresi menggunakan algorithma huffman pada

file yang mengalami pengkodean base-64.

1.2. Rumusan Masalah

Berdasarkan latar belakang masalah di atas, permasalahan dalam

penelitian ini adalah : Bagaimana membuat aplikasi yang dapat menggabungkan

konsep encode base 64 dengan algoritma Huffman ?

1.3. Batasan Masalah

Agar tidak menyimpang dari tujuan yang ingin dicapai, penelitian ini

dibatasi pada hal-hal sebagai berikut:

1. Karakter yang ditulis dalam naskah adalah meliputi karakter-karakter yang

terdapat dalam tabel ASCII.

2. Penelitian ini dilaksanakan pada file berekstensi *.txt.

3. Penelitian ini tidak melakukan pembandingan antara hasil kompresi file asli

dengan hasil kompresi file yang telah di-encode sebelumnya.

4. Penelitian ini tidak membahas tentang banyaknya waktu yang dibutuhkan

untuk melakukan proses kompresi / dekompresi. Istilah kompresi di sini sudah

(13)

5. Aplikasi ini dapat berjalan pada sistem operasi Microsoft Windows XP, Vista

dan Seven

1.4. Tujuan

Adapun tujuan dari penelitian ini adalah menghasilkan aplikasi yang

dapat menggabungkan konsep encode data dengan kompresi data serta untuk

pengamanan file.txt setelah proses encoding.

1.5. Manfaat

Adapun manfaat yang ingin diperoleh dari pengerjaan tugas akhir ini

adalah dapat membuat perangkat lunak untuk mempermudah pengguna dalam

proses pengkodean base-64 sekaligus melakukan proses kompresi menggunakan

algorithma huffman.

1.6. Metodologi Penelitian

Metode penelitian merupakan tahapan-tahapan yang dilalui oleh peneliti

dari perumusan masalah sampai kesimpulan, yang membentuk sebuah alur yang

sistematis. Metodologi penelitian in digunakan sebagai pedoman penelitian dalam

pelaksanaan penelitian ini agar hasil yang dicapai tidak menyimpang dari tujuan

yang telah ditetapkan sebelumnya. Adapun metode penelitian yang dipergunakan

dalam pengerjaan tugas akhir ini adalah :

a. Studi Literatur

Mencari referensi dan bahan pustaka tentang teori-teori yang berhubungan

(14)

b. Studi Kasus

Mencari contoh-contoh kasus serupa yang berhubungan dengan permasalahan

dalam tugas akhir ini.

c. Analisis dan Perancangan

Membuat analisa berdasarkan data-data yang sudah dimiliki, membuat model

matematisnya dan merancang alur penyelesaian berdasarkan algoritma

Huffman dan encoding base64. Perancangan aplikasi dimulai dengan

perancangan antar muka aplikasi, kemudian merancang detail kombinasi dari

kedua algoritma tersebut.

d. Implementasi Program

Mengimplementasikan teknik algoritma yang akan digunakan. Detail

mengenai implementasi program dilakukan sesuai hasil analisis dan

perancangan aplikasi pada tahapan sebelumnya.

e. Pengujian Aplikasi

Pengujian dilakukan pada aplikasi yang telah dibuat. Menguji validitas dan

efektifitas algoritma yang diterapkan pada aplikasi.

f. Evaluasi dan Penarikan kesimpulan

Evaluasi dilakukan untuk mengetahui kinerja aplikasi kompresi data teks

sesuai ukuran dan format data teksnua, selanjutnya dilakukan penarikan

(15)

1.7. Sistematika Penulisan

Sistematika penulisan tugas akhir ini disusun untuk memberikan gambaran

umum tentang penelitian yang dijalankan. Sistematika penulisan tugas akhir ini

adalah sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi latar belakang masalah, identifikasi masalah, maksud

dan tujuan yang ingin dicapai, batasan masalah, metodologi

penelitian yang diterapkan dalam memperoleh dan mengumpulkan

data, waktu dan tempat penelitian, serta sistematika penulisan.

BAB II TINJ AUAN PUSTAKA

Membahas berbagai konsep dasar dan teori-teori yang berkaitan

dengan topik masalah yang diambil dan hal-hal yang berguna

dalam proses analisis permasalahan.

BAB III ANALISIS DAN PERANCANGAN

Menganalisis masalah dari model penelitian untuk memperlihatkan

keterkaitan antar variabel yang diteliti serta model matematis untuk

analisisnya.

BAB IV IMPLEMENTASI DAN PENGUJ IAN

Membahas mengenai pengimplementasian aplikasi yang telah

dibuat ke perangkat yang akan digunakan serta melakukan

pengujian terhadap aplikasi yang telah diimplementasikan tersebut.

BAB V PENUTUP

Berisi kesimpulan dan saran yang sudah diperoleh dari hasil

(16)

BAB II

TINJ AUAN PUSTAKA

2.1. Repr esentasi Data

Data disimpan di dalam komputer pada main memory untuk diproses.

Sebuah karakter data disimpan dalam main memory menempati posisi 1 byte.

Komputer generasi pertama, 1 byte terdiri dari 4 bit, komputer generasi kedua, 1

byte terdiri dari 6 bit dan komputer generasi sekarang, 1 byte terdiri dari 8 bit.

Suatu karakter data yang disimpan di main memory diwakili dengan kombinasi

dari digit binary (binary digit atau bit). Suatu kode biner dapat digunakan untuk

mewakili suatu karakter.

Suatu komputer yang berbeda menggunakan kode biner yang berbeda

untuk mewakili suatu karakter. Komputer yang 1 byte terdiri dari 4 bit,

menggunakan kode binary yang berbentuk kombinasi 4 bit, yaitu BCD (Binary

coded decimal). Komputer yang menggunakan 6 bit untuk 1 bytenya,

menggunakan kode biner yang terdiri dari kombinasi 6 bit, yaitu SBCDIC

(Standard Binary Coded Decimal Interchange Code). Komputer yang terdiri dari 8

bit, menggunakan kode biner yang terdiri dari kombinasi 8 bit, yaitu EBCDIC

(extended Binary coded decimal interchange code) atau ASCII (American

standard code of information interchange).

2.1.1. BCD (Binar y Coded Decimal)

BCD merupakan kode biner yang digunakan hanya untuk mewakili nilai

(17)

4 bit, sehingga sebanyak 16 (24 = 16) kemungkinan kombinasi yang dapat

diperoleh dan hanya 10 kombinasi yang dipergunakan.

Kode BCD yang orisinil sudah jarang dipergunakan untuk komputer

generasi sekarang, karena tidak dapat mewakili huruf atau simbol-simbol karakter

khusus.

2.1.2. SBCDIC (Standar d Binar y Coded Decimal)

SBCDIC merupakan kode biner perkembangan dari BCD. BCD dianggap

tanggung, karena masih ada 6 kombinasi yang tidak dipergunakan, tetapi tidak

dapat digunakan untuk mewakili karakter yang lainnya. SBCDIC menggunakan

kombinasi 6 bit , sehingga lebih banyak kombinasi yang bisa dihasilkan, sebanyak

64 kombinasi kode, yaitu 10 kode untuk digit angka, 26 kode untuk huruf

alphabet dan sisanya karakter-karakter khusus yang dipilih [1].

Posisi bit di SBCDIC dibagi menjadi 2 zone, yaitu 2 bit pertama disebut

dengan alphabet position dan 4 bit berikutnya disebut dengan numeric bit

position.

2.1.3. EBCDIC (Extended Binar y Coded Decimal)

EBCDIC terdiri dari kombinasi 8 bit yang memungkinkan untuk

mewakili karakter sebanyak 256 kombinasi karakter. Pada EBCDIC, high-order

bits atau 4 bit pertama disebut dengan zone bits dan low order bits atau 4 bit

kedua disebut dengan numeric bit.

2.1.4. ASCII (Amer ican Standar d Code for Infor mation Inter change)

Kode ASCII yang standard menggunakan kombinasi 7 bit, dengan

(18)

terdiri dari dua bagian, yaitu control characters dan information characters

merupakan karakter-karakter yang mewakili data.

(Sumber : Johnsonbaugh, R, 2005)

2.2. Konsep Dasar Infor masi

Konsep dasar informasi adalah data yang kemudian diolah dengan

kriteria tertentu untuk menghasilkan informasi yang dibutuhkan. Data dapat

diartikan segala sesuatu yang perlu diolah terlebih dahulu untuk

mendapatkan suatu informasi. Definisi Sistem Informasi Informasi merupakan

hal yang sangat penting bagi manajemen dalam mengambil suatu keputusan.

Suatu informasi dapat diperoleh dari sistem informasi atau juga disebut

dengan Processing system atau information Processing system atau

information-generating system. Sistem informasi didefinisikan oleh Robert A.

Leitchdan K. Roscoe Davis adalah “suatu sistem didalam sebuah organisasi

yang mempertemukan kebutuhan pengolahan transaksi harian, mendukung

orperasi, bersifat menejerial dan kegiatan strategi dari suatu organisasi dan

menyediakan pihak luar tertentu dengan laporan-laporan yang diperlukan”.

Penggunaan teknologi komputer sangat diperlukan untuk membantu pengolahan

data yang bersifat rutin dan membutuhkan ketelitian yang tinggi diantaranya :

siklus informasi, kualitas informasi, nilai informasi.

a. Siklus Informasi

Siklus informasi data merupakan bentuk yang masih mentah sehingga perlu diolah

untuk proses lebih lanjut. Data diolah melalui suatu model untuk dihasilkan

(19)

model proses tertentu agar dapat lebih berguna dalam bentuk informasi. Data yang

diolah melalui suatu model menjadi informasi, penerima kemudian menerima

informasi tersebut, membuat suatu keputusan dan melakukan tindakan dan

menghasilkan suatu tindakan yang akan membuat sejumlah data kembali. Data

tersebut akan ditangkap sebagai input, diproses kembali melalui suatu model

sampai membentuk suatu siklus informasi.

Gambar 2.1 Siklus Informasi

b. Kualitas Informasi

Kualitas informasi merupakan bagian dari karakteristik informasi, diukur

berdasarkan Relevansi, Tepat waktu, dan Akurasi hal ini dapat digambarkan pada

gambar 2.2 dibawah ini

Proses

Out put Input

Penerima Dat a

Keputusan Hasil

Tindakan

Dasar

(20)

Gambar 2.2. Komponen Kualitas Informasi

c. Nilai Informasi

Nilai dari informasi ditentukan dari dua hal, yaitu manfaat dan biaya untuk

mendapatkannya. Suatu informasi dikatakan bernilai bila manfaatnya lebih efektif

dibandingkan dengan biaya untuk mendapatkannya. Akan tetapi perlu

diperhatikan bahwa informasi yang digunakan didalam suatu sistem informasi

umumnya digunakan untuk beberapa kegunaan. Sehingga tidak memungkinkan

dan sulit untuk menghubungkan suatu bagian informasi pada suatu masalah

tertentu dengan biaya untuk memperolehnya. Pengukuran nilai informasi biasanya

dihubungkan dengan analisis Cost Effectiveness atau Cost Benefit.

(Sumber : Teguh Wahyono, 2004,)

2.3. Kompr esi Data

Pada akhir tahun 40-an dimana dimulainya tahun teori informasi, ide

pengembangan metode coding yang efesien baru dimulai dan dikembangkan.

Dimulainya penjelajahan ide dari entropy, information content dan redudansi.

Salah satu ide yang popular adalah apabila probabilitas dari simbol dalam suatu

pesan diketahui, maka terdapat cara untuk mengkodekan simbol, sehingga pesan

(21)

Model pertama yang muncul untuk kompresi sinyal digital adalah

Shannon-Fano coding. Shannon dan fano (1948) terus menerus mengembangkan

algoritma ini yang menghasilkan codeord biner untuk setiap symbol (unik) yang

terdapat pada data file.

Huffman coding (1952) memakai hampir semua karakteristik dari

Shannon-fano coding. Huffman coding dapat menghasilkan kompresi data yang

efektif dengan mengurangkan jumlah redudansi dalam mengkodingkan simbol.

Telah dapat dibuktikan, bahwa Huffman coding merupakan metode fixed-length

yang paling efesien.

Pada limabelas tahun terakhir, Huffman coding telah digantikan oleh

Arithmetic coding. Arithmetic coding melewatkan ide untuk menggantikan

sebuah simbol masukan dengan kode yang spesifik. Algoritma ini menggantikan

sebuah aliran simbol masukan dengan sebuah angka keluaran single

floating-point. Lebih banyak bit dibutuhkan dalam angka keluaran, maka semakin rumit

pesan yang diterima.

Algoritma dictionary-based compression menggunakan metode yang

sangat berbeda dalam mengkompres data. Algoritma ini menggantikan string

variable-length dari simbol menjadi sebuah token. Token merupakan sebuah indek

dalam susunan kata di kamus. Apabila token kecil dari susunan kata, maka token

akan menggantikan prase tersebut dan kompresi pun terjadi.

Kompresi data (pemampatan data) merupakan suatu teknik untuk

memperkecil jumlah ukuran data (hasil kompresi) dari data aslinya. Pemampatan

data umumnya diterapkan pada mesin komputer, hal ini dilakukan karena setiap

(22)

pada ASCII setiap simbol yang dimunculkan memiliki panjang 8 bit, misal kode

A pada ASCII mempunyai nilai decimal 65, jika dirubah dalam bilangan biner

menjadi 010000001. Pemampatan data digunakan untuk mengurangkan jumlah

bir-bit yang dihasilkan dari setiap simbol yang muncul. Dengan pemampatan ini

diharapkan dapat mengurangi (memperkecil ukuran data) dalam ruang

penyimpanan.

(Sumber : David Salomon, 2008)

2.4. Metode Kompr esi Data

Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal

(isi file input) menjadi sekumpulan codeword, metode kompresi terbagi menjadi

dua kelompok, yaitu :

a. Metode Statik

Menggunakan peta kode yang selalu sama. Metode ini membutuhkan dua

fase (two-pass) : fase pertama untuk menghitung probabilitas kemunculan tiap

simbol/karakter dan menentukan peta kodenya dan fase kedua untuk mengubah

pesan menjadi kumpulan kode yang akan ditransmisikan. Contohnya pada

Huffman static, arithmetic coding

b. Metode Dinamik (adaptif)

Menggunakan peta kode yang dapat diubah dari waktu ke waktu. Metode

ini disebut adaptif karena peta kode mampu beradaptasi terhadap karakteristik isi

file selama proses kompresi berlangsung. metode ini bersifat onepass, karena isi

file selama dikompres hanya diperlakukan satu kali pembacaan terhadap isi file.

(23)

Berdasarkan teknik pengkodean atau pengubahan simbol yang

digunakan, metode kompresi dapat dibagi ke dalam tiga kategori, yaitu :

a. Metode simbolwise

Menghitung peluang kemunculan dari tiap simbol dalam file input, lalu

mengkodekan satu simbol dalam satu waktu, dimana simbol yang lebih sering

muncul diberi kode lebih pendek dibandinglan simbol yang lebih jarang muncul.

Contohnya pada Huffman coding, arithmetic coding.

b. Metode dictionary

Menggantikan karakter/fragmen dalam file input dengan indeks lokasi

dari karakter/fragmen tersebut dalam sebuah kamus (dictionary). Contohnya pada

algoritma LZW.

c. Metode predictive

Menggunakan model finite-context atau finite-state untuk memprediksi

distribusi probabilitas dari simbol-simbol selanjutnya. Contohnya pada algoritma

DMC

(Sumber : David Salomon, 2008)

2.5. Tek nik Kompr esi Da ta

Teknik kompresi data dapat digolongkan menjadi dua kelompok utama

yaitu : lossy dan lossless. Teknik kompresi secara lossy dimaksudkan dengan

teknik kompresi data dengan menghilangkan ketelitian data utama guna

mendapatkan data sekecil mungkin (kompresi data sebesar mengkin). Teknik

(24)

jumlah data yang terjadi redudansi (memiliki symbol yang sama) sebelum terjadi

kompresi.

a. Lossy Compression

Merupakan teknik kompresi yang menghilangkan beberapa informasi

data yang dianggap tidak penting. Sehingga hasil data yang telah terkompresi

tidak sama dengan data yang sebelum dikompresi. Namun data yang telah

terkompresi tersebut sudah cukup untuk digunakan, walaupun datanya telah

berubah. Keunggulan dari teknik ini adalah file atau data yang telah terkompresi

memiliki ukuran yang lebih kecil dari ukuran data aslinya. Biasanya teknik

kompresi ini banyak diaplikasikan pada data gambar dan data audio.

b. Lossless Compression

Merupakan teknik kompresi yang mempertahankan kebutuhan informasi

yang dikandung oleh data, sehingga informasi yang terkandung pada file yang

telah terkompresi tetap terjaga meskipun ukurannya telah berubah dari ukuran

data aslinya. Keunggulan dari teknik ini adalah data yang telah terkompresi,

apabila didekompresi kembali akan menghasilkan data yang sama persis dengan

data aslinya. Biasanya teknik kompresi ini banyak diaplikasikan pada data teks.

2.6. Algor ithma Huffman

Algoritma Huffman ditemukan oleh David Huffman pada tahun 1952.

Algoritma ini menggunakan pengkodean yang mirip dengan kode Morse [7].

Berdasarkan tipe kode yang digunakan algoritma Huffman termasuk metode

statistic. Sedangkan berdasarkan teknik pengkodeannya menggunakan metode

(25)

untuk mengompres teks. Berikut ini ilustrasi algoritma Huffman dengan

menggunakan file teks yg berisi “ABACCDA :

1. Pilih dua simbol dengan peluang (probability) paling kecil (pada contoh di

atas simbol B dan D). Kedua simbol tadi dikombinasikan sebagai simpul

orangtua dari simbol B dan D sehingga menjadi simbol BD dengan peluang

1/7 + 1/7 = 2/7, yaitu jumlah peluang kedua anaknya.

2. Selanjutnya, pilih dua simbol berikutnya, termasuk simbol baru, yang

mempunyai peluang terkecil.

3. Ulangi langkah 1 dan 2 sampai seluruh simbol habis.

Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA”

membutuhkan representasi 7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai

berikut :

Gambar 2.3. Representasi teks ABACCDA

Untuk mengurangi jumlah bit yang dibutuhkan, panjang kode untuk tiap

karakter dapat dipersingkat, terutama untuk karakter yang frekuensi

kemunculannya besar. Pada string di atas, frekuensi kemunculan A = 3, B = 1, C

= 2, dan D = 1, sehingga dengan menggunakan algoritma di atas diperoleh kode

(26)

Gambar 2.4. Pohon Huffman untuk teks ABACCDA

Tabel 2.1. Kode Huffman untuk “ABACCDA”

Dengan menggunakan kode Huffman ini, string “ABACCDA”

direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 111 0. Jadi, jumlah bit

yang dibutuhkan hanya 13 bit dari yang seharusnya dibutuhkan 56 bit. Untuk

menguraikan kembali data yang sudah dikodekan sebelumnya dengan algoritma

Huffman, dapat digunakan cara sebagai berikut :

(27)

2. Lakukan traversal pada pohon Huffman mulai dari akar sesuai dengan bit

yang dibaca. Jika bit yang dibaca adalah 0 maka baca anak kiri, tetapi jika bit

yang dibaca adalah 1 maka baca anak kanan.

3. Jika anak dari pohon bukan daun (simpul tanpa anak) maka baca bit

berikutnya dari string biner masukan.

4. Hal ini diulang (traversal) hingga ditemukan daun.

5. Pada daun tersebut simbol ditemukan dan proses penguraian kode selesai.

6. Proses penguraian kode ini dilakukan hingga keseluruhan string biner

masukan diproses.

(Sumber : Roy Indra Haryanto, 2009)

2.7. Pengkodean Data

Pengkodean data menggunakan basis bilangan tertentu banyak

dipergunakan untuk menyimpan dan mengirim data, dengan maksud tertentu,

misalnya membatasi hak akses pembacaan terhadap data tersebut. Alasan lainnya

adalah sebagai kemudahan dalam melakukan editing karena cukup menggunakan

teks editor.

Dalam beberapa kondisi tertentu, penggunaan padding (‘=’) dalam basis

pengkodean tidak diperlukan atau digunakan. Tetapi secara umum. Ketika asumsi

panjang data tidak sesuai ketika dalam proses transfer data, karakter padding

diperlukan agar proses penguraian kodenya menjadi benar.

Pengkodean basis menggunakan alfabet untuk mengkodekan data biner.

Sedangkan karakter yang tidak termasuk alfabet bisa saja terdapat dalam data

(28)

Dengan kata lain pengkodean merupakan upaya untuk mengubah suatu

karakter menjadi karakter lain yang sudah disediakan. Ini berbeda dengan enkripsi

yang menggunakan persamaan matematika untuk mengubah suatu karakter

menjadi karakter lain. Pada encode, karakter yang akan menjadi karakter

pengganti sudah tersedia, tinggal harus dihitung berdasarkan rumus tertentu untuk

mencari karakter mana dalam pola yang harus digunakan untuk menggantikan

karakter tertentu.

2.8. Algor itma Pengkodean Base64

Algoritma Base-64 merupakan salah satu algoritma untuk proses encode

data dengan menyediakan karakter pola sebanyak 64 buah, yaitu

ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz,01234

56789, +/. Karakter pola tersebut hanya menggunakan 6 bit data. Karakter yang

di-encode dengan algoritma base 64 adalah karakter dengan lebar 8 bit, diubah

menjadi karakter pola dengan lebar 6 bit. Terbatasnya jumlah karakter pola yang

tersedia akan membuat peluang terjadinya karakter kembar semakin besar. Hasil

akhir proses encode adalah berupa dokumen baru yang hanya terdiri dari susunan

karakter pola saja. File ini selanjutnya akan dikompresi dengan algoritma

Huffman.

Pada umumnya karakter yang dikirim ditulis dalam bentuk ASCII,

dimana setiap karakternya terdiri dari 8 bit. Secara keseluruhan ada 256 karakter

ASCII, meliputi huruf, angka, karakter khusus (seperti %), karakter kontrol

(seperti CR), dan ada jenis lain. Untuk kebutuhan lain, panjang 8 bit ini tidak

(29)

terdiri dari 16 bit. Bagi sistem Base 64, tidak ada perbedaan antara lebar 8 bit dan

16 bit; semuanya akan diproses dengan cara yang sama. Cara yang dilakukan oleh

Base 64 Encoding adalah dengan mengubah karakter data sumber –sistem 8 bit

atau 16 bit—menjadi deretan kelompok 6 bit. Ada kemungkinan kelompok

terakhir akan kekurangan bit supaya lengkap 6 bit.

Solusinya adalah dengan menambahkan sejumlah bit '0' di belakangnya,

lalu sebagai tanda bahwa telah terjadi penambahan bit '0' maka setiap penambahan

2 buah bit '0' akan diganti dengan sebuah karakter '='. Terakhir, deretan karakter

ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz,01234

56789, +/ digunakan sebagai acuan untuk memperoleh nomor index dari setiap

karakter yang akan di-encode. Pada deretan tersebut huruf 'A' terletak pada index

0, huruf 'B' terletak pada index 1, dan seterusnya. Berikut ini diberikan contoh

konversi sebagaimana pada dengan mengambil string yang akan di-encode berupa

teks "Mary had".

Tabel 2.2 Contoh Encoding dengan Metode Base-64

ASCII text Mary had

010011 010110 000101 110010 011110 010010 000001 101000 011000 010110 010000=

Decimal representation of text in groups of 6 bits

19 22 05 50 30 18 01 40 24 22 16=

Base 64 encoded string TWFyeSBoYWQ=

2.8.1 Decoding Base 64 menjadi ASCII

Proses decoding adalah kebalikan dari encoding, yaitu mengembalikan

(30)

Langkah-langkah untuk melakukan decode adalah sebagai berikut :

a. Baca setiap karakter lalu tentukan nomor indeknya berdasarkan lokasi setiap

karakter ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstu

vwxyz, 0123456789, +/.

b. Lakukan konversi dari nomor indeks yang diperoleh ke dalam bentuk 6 bit.

c. Jika dijumpai karakter '=' pada akhir data ter-encode, buanglah 2 bit '0' untuk

setiap karakter '=' yang dijumpai.

d. Setelah seluruh bit diperoleh, bagilah bit-bit tersebut menjadi kelompok 8 bit.

e. Terjemahkan setiap kelompok 8 bit menjadi karakter ASCII yang bersesuaian.

(Sumber : Michael Burrows, 1952)

2.9. Unified Modelling Language

Unified Modelling Language (UML) adalah sebuah "bahasa" yang telah

menjadi standar dalam industri untuk menentukan, visualisasi, merancang dan

mendokumentasikan artifactdari sistem software, untuk memodelkan bisnis dan

sistem non software lainnya. UML merupakan suatu kumpulan teknik terbaik

yang telah terbukti sukses dalam memodelkan sistem yang besar dan kompleks.

Dengan menggunakan UML kita dapat membuat model untuk semua

jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti

keras, sistem operasi dan jaringan apapun, serta ditulis dalam bahasa

pemrograman apapun. Tetapi karena UML juga menggunakan class dan operation

dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam

(31)

demikian, UML tetap dapat digunakan untuk modeling aplikasi prosedural 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).

Sejarah UML sendiri cukup panjang. Sampai era tahun 1990 seperti kita

ketahui puluhan metodologi pemodelan berorientasi objek telah bermunculan di

dunia. Diantaranya adalah: metodologi Booch, metodologi Coad , metodologi

OOSE, metodologi OMT, metodologi Shlaer-Mellor, metodologi Wirfs-Brock,

dan sebagainya. Masa itu terkenal dengan masa perang metodologi (method war)

dalam pendesainan berorientasi objek. Masing-masing metodologi membawa

notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita

bekerja sama dengan group/perusahaan lain yang menggunakan metodologi yang

berlainan.

Dimulai pada bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, yang

merupakan tiga tokoh yang boleh dikatakan metodologinya banyak digunakan

mempelopori usaha untuk penyatuan metodologi pendesainan berorientasi objek.

Pada tahun 1995 direlease draft pertama dari UML (versi 0.8). Sejak tahun 1996

(32)

http://www.omg.org). Tahun 1997 UML versi 1.1 muncul, dan saat ini versi

terbaru adalah versi 1.5 yang dirilis bulan Maret 2003. Booch, Rumbaugh dan

Jacobson menyusun tiga buku serial tentang UML pada tahun 1999. Sejak saat

itulah UML telah menjelma menjadi standar bahasa pemodelan untuk aplikasi

berorientasi objek.

Object Management Group, Inc. (OMG) adalah sebuah organisasi

international yang dibentuk pada 1989, didukung lebih dari 800 anggota, terdiri

dari perusahaan sistem informasi, software developer, dan pada user sistem

komputer. Organisasi ini salah satunya bertugas membuat spesifikasi “manajemen

objek” untuk menetapkan kerangka bersama dalam rekayasa software.

Gambar 2.5. Metodologi dalam UML

Sasaran OMG adalah membantu perkembangan object-oriented

technology dan mengarahkannya dengan mendirikan Object Management

Architecture (OMA). OMA menentukan infrastruktur konseptual yang didasarkan

pada seluruh spesifikasi yang dikeluarkan OMG.

OMG kemudian mengeluarkan UML, dimana dengan adanya UML ini

diharapkan dapat mengurangi kekacauan dalam bahasa pemodelan yang selama

ini terjadi dalam lingkungan industri. UML diharapkan juga dapat menjawab

(33)

Saat ini piranti lunak semakin luas dan besar lingkupnya, sehingga tidak

bisa lagi dibuat asal-asalan. Piranti lunak saat ini seharusnya dirancang dengan

memperhatikan hal-hal seperti scalability, security, dan eksekusi yang robust

walaupun dalam kondisi yang sulit. Selain itu arsitekturnya harus didefinisikan

dengan jelas, agar bug mudah ditemukan dan diperbaiki, bahkan oleh orang lain

selain programmer aslinya. Keuntungan lain dari perencanaan arsitektur yang

matang adalah dimungkinkannya penggunaan kembali modul atau komponen

untuk aplikasi piranti lunak lain yang membutuhkan fungsionalitas yang sama.

Pemodelan (modeling) adalah proses merancang piranti lunak sebelum

melakukan pengkodean (coding). Model piranti lunak dapat dianalogikan seperti

pembuatan blueprint pada pembangunan gedung. Membuat model dari sebuah

sistem yang kompleks sangatlah penting karena kita tidak dapat memahami sistem

semacam itu secara menyeluruh. Semakin komplek sebuah sistem, semakin

penting pula penggunaan teknik pemodelan yang baik.

Dengan menggunakan model, diharapkan pengembangan piranti lunak

dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat, termasuk

faktor-faktor seperti scalability, robustness, security, dan sebagainya. Kesuksesan

suatu pemodelan piranti lunak ditentukan oleh tiga unsur, yang kemudian terkenal

dengan sebutan segitiga sukses (the triangle for success). Ketiga unsur tersebut

adalah metode pemodelan (notation), proses (process) dan tool yang digunakan.

Memahami notasi pemodelan tanpa mengetahui cara pemakaian yang sebenarnya

(proses) akan membuat proyek gagal. Dan pemahaman terhadap metode

(34)

UML menyediakan beberapa notasi dan artifact standar yang bisa

digunakan sebagai alat komunikasi bagi para pelaku dalam proses analisis dan

desain. Artifact didalam UML didefinisikan sebagai informasi dalam bentuk yang

digunakan atau dihasilkan dalam proses pengembangan perangkat. Contohnya

adalah source code yang dihasilkan oleh proses pemrograman.

Yang harus diperhatikan untuk menjaga konsistensi antar artifact selama

proses analisis dan desain adalah bahwa setiap perubahan yang terjadi pada satu

artifact harus juga dilakukan pada atifact sebelumnya.

Untuk membuat suatu model, UML memiliki diagram grafis sebagai

berikut

use case diagram

class diagram

behavior diagram

statechart diagram

activity diagram

interaction diagram

o sequence diagram

o collaboration diagram

implementation diagram

component diagram

deployment diagram

Diagram-diagram tersebut diberi nama berdasarkan sudut pandang yang

berbeda-beda terhadap sistem dalam proses analisis atau rekayasa.

(35)

1. Setiap sistem yang kompleks selalu paling baik jika didekati melalui

himpunan berbagai sudut pandang yang kecil yang satu sama lain hampir

saling bebas (independent). Sudut pandang tunggal senantiasa tidak

mencukupi untuk melihat sistem yang besar dan kompleks.

2. Diagram yang berbeda-beda tersebut dapat menyatakan tingkatan yang

berbeda-beda dalam proses rekayasa.

3. Diagram-diagram tersebut dibuat agar model yang dibuat semakin mendekati

realitas.

2.10. Semantik Dalam UML

OMG telah menetapkan semantik (makna istilah) semua notasi UML

dalam model struktural dan model behavior. Model struktural (model statis),

menekankan stuktur obyek dalam sebuah sistem, menyangkut kelas-kelas,

interface, atribut dan hubungan antar komponen. Model behavioral (model

dinamis), menekankan perilaku obyek dalam sebuah sistem, termasuk metode,

interaksi, kolaborasi dan state history.

Tujuan utama UML diantaranya untuk :

1. Memberikan model yang siap pakai, bahasa pemodelan visual yang ekspresif

untuk mengembangkan dan saling menukar model dengan mudah dan

dimengerti secara umum.

2. Memberikan bahasa pemodelan yang bebas dari berbagai bahasa

pemrograman dan proses rekayasa.

(36)

Pertama, UML menggabungkan konsep Booch, OMT dan OOSE, sehingga UML

merupakan suatu bahasa pemodelan tunggal yang umum dan digunakan secara

luas oleh para user ketiga metode tersebut dan bahkan para user metode lainnya.

Kedua, UML menekankan pada apa yang dapat dikerjakan dengan metode-meode

tersebut.

Ketiga, UML berfokus pada suatu bahasa pemodelan standar, bahkan pada proses

standar. Meskipun UML harus diaplikasikan dalam konteks sebuah proses, dari

pengalaman, bahwa organisasi dan masalah yang berbeda juga memerlukan

proses yang berbeda pula.

UML tidak mencakup :

a. Bahasa Pemrograman

UML adalah bahasa pemodelan visual, bukan dimaksudkan untuk menjadi suatu

bahasa pemrograman visual, tetapi UML memberikan arah untuk bergerak kearah

kode.

b. Tool (software aplikasi) pemodelan

Membuat standar sebuah bahasa diperlukan oleh tool-tool dan proses. UML

mendefinisikan semantik dan notasi, bukan sebuah tool. Contoh tool yang

menggunakan UML sebagai bahasanya adalah Rational Rose dan Enterprise

Architect.

c. Proses rekayasa

UML digunakan sebagai bahasa dalam proyek dengan proses yang berbeda-beda.

UML bebas dari proses dan mendefinisikan sebuah proses standar bukan tujuan

UML atau RFP dari OMG. Dalam pembahasan ini kita akan menggunakan sebuah

(37)

2.11. Notasi Dalam UML

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

berikut ini memakili notasi-notasi standar dalam UML.

2.11.1.Actor

Gambar 2.6. Notasi Actor

Actor menggambarkan segala pengguna software aplikasi (user). Actor

memberikan suatu gambaran jelas tentang apa yang harus dikerjakan software

aplikasi. Sebagai contoh sebuah actor dapat memberikan input kedalam dan

menerima informasi dari software aplikasi, perlu dicatat bahwa sebuah actor

berinteraksi dengan use case, tetapi tidak memiliki kontrol atas use case. Sebuah

actor mungkin seorang manusia, satu device, hardware atau sistem informasi

(38)

2.11.2.Use Ca se

Gambar 2.7. Notasi Use Case

Use case menjelaskan urutan kegiatan yang dilakukan actor dan sistem

untuk mencapai suatu tujuan tertentu. Walaupun menjelaskan kegiatan, namun

use case hanya menjelaskan apa yang dilakukan oleh actor dan sistem bukan

bagaimana actor dan sistem melakukan kegiatan tersebut.

Use-case Konkret adalah use case yang dibuat langsung karena keperluan actor.

Actor dapat melihat dan berinisiatif terhadapnya

Use-case Abstrak adalah use case yang tidak pernah berdiri sendiri. Use case

abstrak senantiasa termasuk didalam (include), diperluas dari (extend) atau

memperumum (generalize) use case lainnya. Untuk menggambarkannya dalam

use case model biasanya digunakan association relationship yang memiliki

stereotype include, extend atau generalization relationship. Hubungan include

menggambarkan bahwa suatu use case seluruhnya meliputi fungsionalitas dari use

case lainnya. Hubungan extend antar use case berarti bahwa satu use case

merupakan tambahan fungsionalitas dari use case yang lain jika kondisi atau

(39)

2.11.3.Class Diagr am

Gambar 2.8. Notasi Class

Class merupakan pembentuk utama dari sistem berorientasi obyek,

karena class menunjukkan kumpulan obyek yang memiliki atribut dan operasi

yang sama. Class digunakan untuk mengimplementasikan interface.

Class digunakan untuk mengabstraksikan elemen-elemen dari sistem yang sedang

dibangun. Class bisa merepresentasikan baik perangkat lunak maupun perangkat

keras, baik konsep maupun benda nyata.

Notasi class berbentuk persegi panjang berisi 3 bagian: persegi panjang

paling atas untuk nama class, persegi panjang paling bawah untuk operasi, dan

persegi panjang ditengah untuk atribut.

Atribut digunakan untuk menyimpan informasi. Nama atribut

menggunakan kata benda yang bisa dengan jelas merepresentasikan informasi

yang tersimpan didalamnya. Operasi menunjukkan sesuatu yang bisa dilakukan

oleh obyek dan menggunakan kata kerja.

2.11.4.Inter fa ce

Gambar 2.9. Notasi Interface

Interface merupakan kumpulan operasi tanpa implementasi dari suatu class.

Implementasi operasi dalam interface dijabarkan oleh operasi didalam class. Oleh

(40)

mengimplementasikan operasinya. Interface ini merupakan salah satu cara

mewujudkan prinsip enkapsulasi dalam obyek.

2.11.5.Inter action

Gambar 2.10. Notasi Interaction

Interaction digunakan untuk menunjukkan baik aliran pesan atau informasi antar

obyek maupun hubungan antar obyek. Biasanya interaction ini dilengkapi juga

dengan teks bernama operation signature yang tersusun dari nama operasi,

parameter yang dikirim dan tipe parameter yang dikembalikan

2.11.6.Note

Gambar 2.11. Notasi Note

Note digunakan untuk memberikan keterangan atau komentar tambahan dari suatu

elemen sehingga bisa langsung terlampir dalam model. Note ini bisa disertakan ke

semua elemen notasi yang lain.

2.11.7.Dependency

Gambar 2.12. Notasi Dependency

Dependency merupakan relasi yang menunjukan bahwa perubahan pada salah satu

elemen memberi pengaruh pada elemen lain. Elemen yang ada di bagian tanda

panah adalah elemen yang tergantung pada elemen yang ada dibagian tanpa tanda

(41)

Terdapat 2 stereotype dari dependency, yaitu include dan extend. Include

menunjukkan bahwa suatu bagian dari elemen (yang ada digaris tanpa panah)

memicu eksekusi bagian dari elemen lain (yang ada di garis dengan panah).

Extend menunjukkan bahwa suatu bagian dari elemen di garis tanpa panah bisa

disisipkan kedalam elemen yang ada di garis dengan panah.

2.11.8.Association

Gambar 2.13. Notasi Association

Association menggambarkan navigasi antar class (navigation), berapa banyak

obyek lain yang bisa berhubungan dengan satu obyek (multiplicity antar class)

dan apakah suatu class menjadi bagian dari class lainnya (aggregation).

Navigation dilambangkan dengan penambahan tanda panah di akhir garis.

Bidirectional navigation menunjukkan bahwa dengan mengetahui salah satu class

bisa didapatkan informasi dari class lainnya. Sementara UniDirectional

navigation hanya dengan mengetahui class diujung garis association tanpa panah

kita bisa mendapatkan informasi dari class di ujung dengan panah, tetapi tidak

sebaliknya. Aggregation mengacu pada hubungan “has-a”, yaitu bahwa suatu

class memiliki class lain, misalnya Rumah memiliki class Kamar.

2.11.9.Gener alization

Gambar 2.14. Notasi Generalization

Generalization menunjukkan hubungan antara elemen yang lebih umum ke

(42)

(subclass) akan menurunkan atribut dan operasi dari class yang lebih umum

(superclass) atau “subclass is superclass”. Dengan menggunakan notasi

generalization ini, konsep inheritance dari prinsip hirarki dapat dimodelkan.

2.11.10. Realization

Gambar 2.15. Notasi Realization

Realization menunjukkan hubungan bahwa elemen yang ada di bagian tanpa

panah akan merealisasikan apa yang dinyatakan oleh elemen yang ada di bagian

dengan panah. Misalnya class merealisasikan package, component merealisasikan

class atau interface.

(Sumber : Fowler, Martin, 2005)

2.12. Bahasa Pemr ograman J ava

Pada 1991, sekelompok insinyur Sun dipimpin oleh Patrick Naughton

dan James Gosling ingin merancang bahasa komputer untuk perangkat konsumer

seperti cable TV Box. Karena perangkat tersebut tidak memiliki banyak memori,

bahasa harus berukuran kecil dan mengandung kode yang liat. Juga karena

manufaktur – manufaktur berbeda memilih processor yang berbeda pula, maka

bahasa harus bebas dari manufaktur manapun. Proyek diberi nama kode ”Green”.

Kebutuhan untuk fleksibilitas, kecil, liat dan kode yang netral terhadap

platform mengantar tim mempelajari implementasi Pascal yang pernah dicoba.

Niklaus Wirth, pencipta bahasa Pascal telah merancang bahasa portabel yang

(43)

dengan mesin maya (virtual machine). Kode ini kemudian dapat digunakan di

sembarang mesin yang memiliki interpreter. Proyek Green menggunakan mesin

maya untuk mengatasi isu utama tentang netral terhadap arsitektur mesin.

Karena orang – orang di proyek Green berbasis C++ dan bukan Pascal

maka kebanyakan sintaks diambil dari C++, serta mengadopsi orientasi objek dan

bukan prosedural. Mulanya bahasa yang diciptakan diberi nama ”Oak” oleh James

Gosling yang mendapat inspirasi dari sebuah pohon yang berada pada seberang

kantornya, namun dikarenakan nama Oak sendiri merupakan nama bahasa

pemrograman yang telah ada sebelumnya, kemudian SUN menggantinya dengan

JAVA. Nama JAVA sendiri terinspirasi pada saat mereka sedang menikmati

secangkir kopi di sebuah kedai kopi yang kemudian dengan tidak sengaja salah

satu dari mereka menyebutkan kata JAVA yang mengandung arti asal bijih kopi.

Akhirnya mereka sepakat untuk memberikan nama bahasa pemrograman tersebut

dengan nama Java.

Produk pertama proyek Green adalah Star 7 (*7), sebuah kendali jarak

jauh yang sangat cerdas. Dikarenakan pasar masih belum tertarik dengan produk

konsumer cerdas maka proyek Green harus menemukan pasar lain dari teknologi

yang diciptakan. Pada saat yang sama, implementasi WWW dan Internet sedang

mengalami perkembangan pesat. Di lain pihak, anggota dari proyek Green juga

menyadari bahwa Java dapat digunakan pada pemrograman internet, sehingga

penerapan selanjutnya mengarah menjadi teknologi yang berperan di web.

Java telah mengakomodasi hampir seluruh fitur penting bahasa – bahasa

(44)

1. Dari SIMULA, bahasa pada tahun 65-an, bahasa yang paling mempengaruhi

Java sekaligus C++. Dari bahasa ini diadopsi bentukan – bentukan dasar dari

pemrograman berorientasi objek.

2. Dari LISP – bahasa tahun 55-an. Diadopsi fasilitas garbage collection, serta

kemampuan untuk meniru generic list processing, meski fasilitas ini jarang

yang memanfaatkannya.

3. Dari Algol – bahasa pada tahun 60-an, diambil struktur kendali yang

dimilikinya.

4. Dari C++, diadopsi sintaks, sebagian semantiks dan exception handling

5. Dari bahasa Ada, diambil strongly type, dan exception handling.

6. Dari Objective C, diambil fasilitas interface.

7. Dari bahasa SmallTalk, diambil pendekatan single-root class hiérarchie,

dimana objek adalah satu kesatuan hirarki pewarisan

8. Dari bahasa Eiffel, fasilitas assertion yang mulai diterapkan di sebagian JDK

1.4

(45)

Sebagai sebuah bahasa pemrograman, Java dapat membuat seluruh

bentuk aplikasi, desktop, web dan lainnya, sebagaimana dibuat dengan

menggunakan bahasa pemrograman konvensional yang lain.

Java adalah bahasa pemrograman yang berorientasi objek (OOP) dan

dapat dijalankan pada berbagai platform sistem operasi. Perkembangan Java tidak

hanya terfokus oada satu sistem operasi, tetapi dikembangkan untuk berbagai

sistem operasi dan bersifat open source. teknologi Java menyediakan banyak

tools, yaitu : compiler, interpreter, penyusun dokumentasi, paket kelas dan

sebagainya.

Aplikasi dengan teknologi Java secara umum adalah aplikasi serba guna

yang dapat dijalankan pada seluruh mesin yang memiliki Java Runtime

Environment (JRE). Terdapat dua komponen utama dari Deployment

Environment. Yang pertama adalah JRE, yang terdapat pada paket J2SDK,

mengandung kelas – kelas untuk semua paket teknologi Java yang meliputi kelas

dasar dari Java, komponen GUI dan sebagainya. Komponen yang lain terdapat

pada Web Browser. Hampir seluruh Web Browser komersial menyediakan

interpreter dan runtime environment dari teknologi Java.

Bahasa pemrograman Java memiliki karakteristik berikut :

1. Sederhana (Simple)

Bahasa pemrograman Java menggunakan Sintaks mirip dengan C++ namun

sintaks pada Java telah banyak diperbaiki terutama menghilangkan

penggunaan pointer yang rumit dan multiple inheritance. Java juga

(46)

2. Berorientasi objek (Object Oriented)

Java mengunakan pemrograman berorientasi objek yang membuat program

dapat dibuat secara modular dan dapat dipergunakan kembali. Pemrograman

berorientasi objek memodelkan dunia nyata kedalam objek dan melakukan

interaksi antar objek-objek tersebut.

3. Terdistribusi (Distributed)

Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya

libraries networking yang terintegrasi pada Java.

4. Interpreted

Program Java dijalankan menggunakan interpreter yaitu Java Virtual Machine

(JVM). Hal ini menyebabkan source code Java yang telah dikompilasi

menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda.

5. Robust

Java mempuyai reliabilitas yang tinggi. Compiler pada Java mempunyai

kemampuan mendeteksi error secara lebih teliti dibandingkan bahasa

pemrograman lain. Java mempunyai runtime-Exception handling untuk

membantu mengatasi error pada pemrograman.

6. Secure

Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java

memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak

digunakan untuk merusak sistem komputer yang menjalankan aplikasi

(47)

7. Architecture Neutral

Program Java merupakan platform independent. Program cukup mempunyai

satu buah versi yang dapat dijalankan pada platform berbeda dengan Java

Virtual Machine.

8. Portable

Source code maupun program Java dapat dengan mudah dibawa ke platform

yang berbeda-beda tanpa harus dikompilasi ulang.

9. Performance

Performance pada Java sering dikatakan kurang tinggi. Namun performance

Java dapat ditingkatkan menggunakan kompilasi Java lain seperti buatan

Inprise, Microsoft ataupun Symantec yang menggunakan Just In Time

Compilers (JIT).

10.Multithreaded

Java mempunyai kemampuan untuk membuat suatu program yang dapat

melakukan beberapa pekerjaan secara sekaligus dan simultan.

11.Dynamic

Java didesain untuk dapat dijalankan pada lingkungan yang dinamis.

Perubahan pada suatu class dengan menambahkan properties ataupun method

dapat dilakukan tanpa menggangu program yang menggunakan class tersebut.

Dalam pemrogaman menggunakan java, terdapat JVM yaitu sebuah

mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah

mesin nyata. JVM menyediakan spesifikasi hardware dan platform dimana

(48)

Java menjadi bebas dari platform manapun karena proses kompilasi diselesaikan

oleh JVM.

Aplikasi program Java diciptakan dengan file teks berekstensi .java.

Program ini dikompilasi menghasilkan satu berkas bytecode berekstensi .class

atau lebih. Bytecode adalah serangkaian instruksi serupa instruksi kode mesin.

Perbedaannya adalah kode mesin harus dijalankan pada sistem komputer dimana

kompilasi ditujukan, sementara bytecode berjalan pada java interpreter yang

(49)

BAB III

ANALISIS KEBUTUHAN DAN PERANCANGAN SISTEM

3.1. Analisis Kebutuhan

Aplikasi dalam tugas akhir ini digunakan untuk melakukan

pengkodean dan kompresi file teks. Sistem akan melakukan pengkodean file

teks yang akan dikompresi menjadi deretan kode semacam ciphertext dan

dapat melakukan proses dekompresi dan pengembalian kode menjadi teks

aslinya.

Dalam membangun aplikasi tugas akhir ini, diperlukan batasan yang

jelas sebagai tujuan utamanya agar tidak keluar dari rencana yang telah

ditetapkan. Beberapa kebutuhan sistem yang akan didefinisikan antara lain :

1. Memiliki kemampuan untuk encoding dan decoding file teks.

2. Memiliki kemampuan untuk kompresi dan dekompresi file teks hasil

pengkodean.

Tidak semua perangkat komputer dapat menjalankan aplikasi tugas

akhir ini. Pada perangkat komputer tersebut sudah harus terinstal Java Runtime

Environment, agar dapat menjalankan aplikasi tugas akhir ini.

3.2. Pemodelan Fungsional

Pemodelan fungsional digunakan untuk mendeskripsikan pemodelan

aliran sistem, notasi kelas diagram dan berbagai package seta kegunaan tiap

package yang dipergunakan dalam tugas akhir ini, sehingga dapat dijadikan

(50)

3.2.1. Diagr am Alir

Pada gambar 3.1 berikut merupakan diagram alir sistem. Pada diagram

alir sistem terdapat langkah-langkah dalam menjalankan aplikasi tugas akhir ini,

sehingga user dapat mengetahui cara kerja sistem secara umum.

Mulai Open file (.b64) Open file (.b64)

(51)

3.2.2. Kelas Diagr am

Berikut ini merupakan gambaran kelas diagram yang dipergunakan

dalam tugas akhir ini. Kelas diagram menunjukkan anggota kelas dan hirarkinya

dapat dilihat pada gambar 3.2 dibawah ini :

(52)

Pada gambar 3.2 diatas menjelaskan bahwa terdapat beberapa package

yang disertakan dalam aplikasi tugas akhir ini. Adapun package standar java yang

dipergunakan dalam tugas akhir ini adalah :

1. Java.lang.object, diperlukan untuk menggunakan beberapa fungsi standar yang

diperlukan seperti untuk operasi perbandingan karakter atau tipe data lainnya,

operasi matematika dasar, casting tipe data, array dan berbagai eksepsi.

2. Javax.swing, diperlukan karena berisi kelas dan antarmuka yang digunakan

oleh komponen JFileChooser.

3. Java.awt, diperlukan karena Berisi semua kelas untuk membuat antarmuka

pengguna dan untuk grafik dan gambar.

Sedangkan package buatan penulis yang dipergunakan dalam tugas akhir

ini adalah :

1. Huffman.BitInputStream, diperlukan untuk menentukan jumlah bit diantara 1

dan 32 bit berdasarkan file sumber yang dibaca.

2. Huffman.BitOuputStream, diperlukan untuk menuliskan bit diantara 1 dan 32

bit kedalam file

3. Huffman.CanonicalCode, diperlukan untuk proses pengkodean dan

penguraian kode yang nantinya akan dipergunakan untuk proses pembentukan

pohon huffman

4. Huffman.CodeTree, diperlukan untuk proses pembentukan pohon huffman

5. Huffman.FrequencyTable, dipergunakan untuk mencata frekuensi setiap

karakter

6. Huffman.Compress, diperlukan untuk fungsi kompresi

(53)

8. Huffman.Node, diperlukan untuk membentuk Node dalam Pohon Huffman

9. Base64, diperlukan untuk proses encoding dan decoding.

3.2.3. Pseudocode Ecoding Base64

writeout(encodingTable[(a1 >>> 2) & 0x3f])

writeout(encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f])

writeout(encodingTable[((a2 << 2) | (a3 >>> 6)) & 0x3f])

writeout(encodingTable[a3 & 0x3f]) i += 3 }

switch (modulus){

case 0: break

case 1: d1 = data[off + dataLength] & 0xff b1 = (d1 >>> 2) & 0x3f

(54)

Fungsi dari pseudocode encoding diatas adalah mengubah data input,

dalam hal ini karakter teks menghasilkan stream basis 64 bit. Dalam proses

tersebut spasi akan diabaikan oleh sistem dan stream tersebut disimpan dalam

bentuk byte array.

3.2.4. Pseudocode Decoding Base64

int outLen = 0

int end = off + length

while (end > off){ if (!ignore((char)data[end - 1])){ break }

(55)

Fungsi dari pseudocode diatas adalah mengubah data terkode menjadi

bentuk asliny. Dalam proses tersebut spasi akan diabaikan oleh sistem. Hasilnya

berupa byte array dari karakter aslinya.

3.2.5. Pseudocode Kompr esi Huffman

Fungsi dari pseudocode diatas adalah melakukan proses kompresi dari

file teks yang telah terkode dan menyimpan hasilnya kedalam bentuk file. Dalam

melakukukan proses kompresi sistem terlebih dahulu akan menghitung frekuensi

simbol. Hasilnya berupa code yang dioptimalkan untuk kode huffman statis dan

disimpan ke bentuk file. Dikarenakan sifatnya yang statis, walaupun nilai dari

simbol tersebut berubah, panjang kode yang dihasilkan akan tetap sama.

3.2.6. Pseudocode Dekompr esi Huffman

Freq = getFrequencies(inputFile) increment(freq,256)

code = buildCodeTree()

code = toCodeTree(canonCode (code, 257)) writeCode(out, canonCode)

(56)

Fungsi dari pseudocode diatas adalah melakukan proses kompresi dari

file terkompresi, langkah diatas menjelaskan langkah penguraian kode kompresi.

Langkah dekompresi dilakukan dengan mengganti code tree dengan code

canonical. Nilai code mungkin berubah tetapi panjangnya tetap sama.

3.3. Use Case Diagr am

Use case diagram digunakan untuk menggambarkan fungsionalitas yang

diharapkan dari sebuah sistem. Sebuah use case merepresentasikan sebuah

interaksi antara aktor dengan sistem. Use case diagram pada Gambar 3.1

menggambarkan bagaimana proses yang terjadi pada aplikasi kompresi data dan

transfer data serta bagaimana pengguna melakukan interaksi terhadap user.

Pada use case dalam gambar 3.1 tersebut terjadi beberapa proses yaitu :

1. User dapat melakukan proses kompresi file

2. User dapat melakukan proses dekompresi file

Syst em

User

Br o wse input file

Ou t pu t f ile

De co m pr ess Br ow se _in put f ile < < include> >

< < include> > < < include> > Co m pr e ss

(57)

3.4. Sequence Diagr am

Data Sequence diagram menggambarkan interaksi antar objek di dalam

dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa

message yang digambarkan terhadap waktu. Sequence diagram terdiri atar

dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait)

Sequence diagram biasa digunakan untuk menggambarkan skenario atau

rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event

untuk menghasilkan output tertentu. Diawali sesuatu yang men-trigger aktivitas

tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa

yang dihasilkan.

Sequence Diagram yang digambarkan dalam perancangan sistem adalah

sebagai berikut :

3.4.1. Sequence Diagr a m Compr ess

Sequence diagram menu compress dapat dilihat pada gambar :

(58)

Pada sequence diagram di atas terjadi beberapa proses yaitu :

1. User masuk ke page compress

2. Mengambil file yang akan di kompres

3. Membuat file hasil kompresi

4. Melakukan proses kompresi dan sistem menampilkan informasi file yang telah

dikompres

3.4.2. Sequence Diagr a m Decompr ess

Pada sequence diagram decompress di bawah ini terjadi beberapa proses yaitu :

1. User masuk ke page decompress

2. Menyimpan file hasil dekompresi

3. Melakukan proses dekompresi dan sistem menampilkan informasi file yang telah

didekompres.

Sequence diagram menu decompress dapat dilihat pada gambar 3.3 dibawah ini :

(59)

3.5. Per ancangan Sistem

Perancangan sistem adalah suatu proses yang menggambarkan

bagaimana suatu sistem dibangun untuk memenuhi kebutuhan pada fase analisis.

Adapun tahapan yang dilakukan dalam perancangan sistem ini membahas

mengenai tujuan perancangan sistem, dan perancangan antar muka

Perancangan sistem merupakan tindak lanjut dari tahap analisa.

Perancangan sistem bertujuan untuk memberikan gambaran sistem yang akan

dibuat. Dengan kata lain perancangan sistem didefinisikan sebagai penggambaran

atau pembuatan sketsa dari beberapa elemen yang terpisah kedalam satu kesatuan

yang utuh dan berfungsi. Selain itu juga perancangan bertujuan untuk lebih

mengarahkan sistem yang terinci, yaitu pembuatan perancangan yang jelas dan

lengkap yang nantinya akan digunakan untuk pembuatan simulasi. Aplikasi

kompresi ini dibuat dengan sederhana, sehingga diharapkan user dapat dengan

mudah menggunakan aplikasi kompresi ini.

Manfaat lain yang didapat dari perancangan sistem adalah apabila dalam

proses implementasi terjadi hambatan, dapat dilakukan perancangan ulang sistem

secara lebih mudah dengan demikian pengembang dapat menghemat waktu dan

mereview kembali kelemahan dari desain sistem yang lama. Maka dari uraian

tersebut dapat disimpulkan bahwa perancangan sistem memegang peranan cukup

penting selama proses pembuatan perangkat lunak dalam tugas akhir ini.

3.6. Per ancangan Antar Muka

Perancangan antarmuka adalah proses membuat perancangan

Gambar

Gambar 2.1 Siklus Informasi
Gambar 2.2. Komponen Kualitas Informasi
Gambar 2.3. Representasi teks ABACCDA
Tabel 2.1. Kode Huffman untuk “ABACCDA”
+7

Referensi

Dokumen terkait

Untuk melakukan analisa perbandingan terhadap hasil kompresi file video digital form at FLV dan MPEG dengan algoritma Huffman ini, penulis menggunakan data yang diperoleh

Hasil percobaan yang terdapat pada pembahasan menunjukan bahwa waktu iterasi yang diperlukan oleh algoritma Huffman Stahl untuk melakukan kompresi dan dekompersi adalah cenderung

Berdasarkan hasil pengujian dari ketiga algoritma tersebut, Huffman Modifikasi jauh lebih baik untuk waktu yang diperlukan dalam sekali melakukan kompresi. Selain itu

Percobaan ketiga single file adalah menggunakan info.doc, yang memiliki ukuran sebesar 59 KB, langkah selanjutnya adalah menekan tombol kompresi, sehingga akan

Bagian yang dikompresi dan didekompresi pada file Wave adalah bagian chunk data selain itu file output hasil kompresi akan diberi nilai “88” pada sub chunk audio form at

Pada penelitian ini penulis menggunakan algoritma Huffman dan Run Length Encoding yang merupakan salah satu teknik kompresi yang bersifat lossless.. Algoritma Huffman

Di dalam tugas akhir ini dibahas penggunaan metode Huffman Code untuk kompresi dengan jumlah data yang besar, yaitu pada sebuah Frame Video dengan menggunakan nilai intensitas

Kombinasi Algoritma Sequitur Dan Adaptive Huffman Coding Untuk Kompresi File Teks Mega Wati Harahap Fakultas Ilmu Komputer dan Teknologi Informasi, Program Studi Teknik Informatika,