KOMPRESI FILE.TXT DENGAN ALGORITMA HUFFMAN PADA FILE DENGAN MENGGUNAKAN PENGKODEAN.
KOMPRESI FILE.TXT DENGAN ALGORITMA HUFFMAN
PADA FILE DENGAN MENGGUNAKAN PENGKODEAN
BASE-64
SKRIPSI
Oleh :
LINGGA ADI FIRMANTO
( 0734010127 )
``
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNANNASIONAL “VETERAN” J ATIM
SURABAYA
2012
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Judul
: KOMPRESI FILE.TXT DENGAN ALGORITMA HUFFMAN PADA FILE DENGAN
MENGGUNAKAN PENGODEAN BASE-64
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.
Kata kunci : kompresi, dekompresi, encoding base64, huffman, Java
i
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
xKATA PENGANTAR
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.
3. Ibu Dian Puspita Hapsari,S.Kom,M.Kom, dan Bapak Achmad Junaidi,S.Kom selaku
Dosen Pembimbing Teknik Informatika Universitas Pembangunan Nasional ”Veteran”
Jawa Timur.
ii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4. Kedua orang tua saya dan keluarga tercinta yang telah memberikan semangat dan do’a
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
Penulis
iii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
DAF TAR ISI
ABSTRAK........................................................................................................
i
KATA PENGANTAR ..................................................................................
ii
DAFTAR ISI ..............................................................................................
iv
DAFTAR GAMBAR........................................................................................
vii
DAFTAR TABEL............................................................................................
viii
BAB I PENDAHULUAN
1.1 Latar Belakang Masalah ...............................................................
1
1.2 Rumusan Masalah ........................................................................
3
1.3 Batasan Masalah ...........................................................................
3
1.4 Tujuan ..........................................................................................
4
1.5 Manfaat ........................................................................................
4
1.6 Metodologi Penelitian...................................................................
4
1.7 Sistematika penulisan ...................................................................
6
BAB II TINJAUAN PUSTAKA
2.1 Representasi Data .........................................................................
7
2.1.1 BCD (Binary Coded Decimal) ..............................................
7
2.1.2 SBCDIC (Standard Binary Coded Decimal) ..........................
8
2.1.3 EBCDIC (Extended Binary Coded Decimal).........................
8
2.1.4 ASCII (American Standard Code for Information
Interchange) ...........................................................................
8
2.2 Konsep Dasar Informasi ...............................................................
9
2.3 Kompresi Data .............................................................................
11
2.4 Metode Kompresi Data .................................................................
13
2.5 Teknik Kompresi Data..................................................................
14
2.6 Algoritma Huffman ......................................................................
15
2.7 Pengkodean Data ..........................................................................
18
2.8 Algoritma Pengkodean Base64 .....................................................
19
2.8.1 Decoding Base 64 menjadi ASCII .........................................
20
iv
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
2.9 Unified Modelling Language ........................................................
21
2.10 Semantik Dalam UML..................................................................
26
2.11 Notasi dalam UML .......................................................................
28
2.11.1 Actor...................................................................................
28
2.11.2 Use Case .............................................................................
29
2.11.3 Class Diagram.....................................................................
30
2.11.4 Interface ..............................................................................
30
2.11.5 Interaction...........................................................................
31
2.11.6 Note ....................................................................................
31
2.11.7 Dependency ........................................................................
31
2.11.8 Association .........................................................................
32
2.11.9 Generalization .....................................................................
32
2.11.10 Realization ..........................................................................
33
2.12 Bahasa Pemrograman Java ...........................................................
33
BAB III Analisis Kebutuhan Dan Perancangan Sistem
3.1 Analisa Kebutuhan .......................................................................
40
3.2 Pemodelan Fungsional ..................................................................
40
3.2.1 Diagram Alir.........................................................................
41
3.2.2 Kelas Diagram ......................................................................
42
3.2.3 Pseudocode Ecoding Base64 .................................................
44
3.2.4 Pseudocode Decoding Base64 ...............................................
45
3.2.5 Pseudocode Kompresi Huffman ............................................
46
3.2.6 Pseudocode Dekompresi Huffman ........................................
46
3.3 Use Case Diagram ........................................................................
47
3.4 Sequence Diagram ........................................................................
48
3.4.1 Sequence Diagram Compress................................................
48
3.4.2 Sequence Diagram Decompress ............................................
49
3.5 Perancangan Sistem ......................................................................
50
3.6 Perancangan Antar Muka..............................................................
50
3.6.1 Perancangan Form Untuk Encoding Dan Kompresi ..............
51
3.6.2 Perancangan Form Untuk Decoding Dan
Dekompresi ..........................................................................
v
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
51
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
DAFTAR PUSTAKA
vi
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
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.5
Metodologi dalam UML ........................................................
23
Gambar 2.6
Notasi Actor ..........................................................................
28
Gambar 2.7
Notasi Use Case .....................................................................
29
Gambar 2.8
Notasi Class ...........................................................................
30
Gambar 2.9
Notasi Interface .....................................................................
30
Gambar 2.10 Notasi Interaction ..................................................................
31
Gambar 2.11 Notasi Note............................................................................
31
Gambar 2.12 Notasi Dependency ................................................................
31
Gambar 2.13 Notasi Association .................................................................
32
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
Gambar 4.4
Grafik Hasil Uji Coba Dekompresi ........................................
65
vii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
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 ...............................................................................
Tabel 4.2
60
Rangkuman Hasil Percobaan Decoding dan
Decompress ...........................................................................
viii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
63
1
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 didekompresi 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
kecil.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
2
Peluang untuk memperoleh data kembar ditentukan oleh panjangpendeknya 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
ABCDEFGHIJKLMNOPQRSTUVWXYZ,
pola
sebanyak
64
buah,
yaitu
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
yang tersedia akan membuat peluang terjadinya karakter kembar semakin besar.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
3
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
meliputi kegiatan encode sebagai pendahuluan.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4
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
dengan permasalahan yang akan dikerjakan dalam tugas akhir ini.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
5
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
kesimpulan.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
6
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
penulisan tugas akhir.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
7
BAB II
TINJ AUAN PUSTAKA
2.1.
Representasi 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
desimal saja, yaitu angka 0 sampai dengan 9. BCD menggunakan kombinasi dari
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
8
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 Binary 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 Standard Code for Infor mation Inter change)
Kode ASCII yang standard menggunakan kombinasi 7 bit, dengan
kombinasi sebanyak 127 dari 128 kemungkinan kombinasi. Kode ASCII 7 bit ini
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
9
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
informasi.Data yang diolah untuk menghasilkan informasi menggunakan suatu
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
10
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.
Proses
Input
Dat a
Out put
Dasar
Penerima
Dat a
Hasil
Tindakan
Keputusan
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
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
AKURASI
TEPAT WAKTU
R E L EV A N S I
11
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.
Kompresi 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
memakan tempat yang lebih kecil. Ide inilah yang menjadi cikal bakal dalam
terciptanya kompresi data.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
12
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 floatingpoint. 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
simbol yang muncul pada komputer memiliki nilai bit-bit yang berbeda. Misal
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
13
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.
Contohnya pada algoritma LZW dan DMC.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
14
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.
Teknik Kompresi Data
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
kompresi data secara lossless yaitu teknik kompresi data dengan mengurangkan
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
15
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.
Algorithma 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
symbolwise. Algoritma Huffman merupakan salah satu algoritma yang digunakan
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
16
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
Huffman seperti pada Tabel 2.1
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
17
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 :
1. Baca bit pertama dari string biner masukan
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
18
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
yang telah terkodekan.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
19
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.
Algoritma 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
mencukupi, sehingga digunakan karakter UNICODE yang setiap karakternya
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
20
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
Hex representation of text
Bit representation of text
grouped by bytes
Bit representation of text in
groups of 6 bits
Mary had
4D 61 72 79 20 68 61 64
01001101 01100001 01110010 01111001
00100000 01101000 01100001 01100100
010011 010110 000101 110010 011110
010010 000001 101000 011000 010110
010000=
Decimal representation of text 19 22 05 50 30 18 01 40 24 22 16=
in groups of 6 bits
Base 64 encoded string
TWFyeSBoYWQ=
2.8.1 Decoding Base 64 menjadi ASCII
Proses decoding adalah kebalikan dari encoding, yaitu mengembalikan
data hasil encode menjadi data dalam bentuk asli.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
21
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 artifact dari 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
bahasa-bahasa berorientasi objek seperti C++, Java, VB.NET. Walaupun
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
22
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
pengembangan tersebut dikoordinasikan oleh Object Management Group (OMG –
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
23
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
masalah penotasian dan mekanisme tukar menukar model yang terjadi selama ini.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
24
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 seb
PADA FILE DENGAN MENGGUNAKAN PENGKODEAN
BASE-64
SKRIPSI
Oleh :
LINGGA ADI FIRMANTO
( 0734010127 )
``
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNANNASIONAL “VETERAN” J ATIM
SURABAYA
2012
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Judul
: KOMPRESI FILE.TXT DENGAN ALGORITMA HUFFMAN PADA FILE DENGAN
MENGGUNAKAN PENGODEAN BASE-64
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.
Kata kunci : kompresi, dekompresi, encoding base64, huffman, Java
i
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
xKATA PENGANTAR
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.
3. Ibu Dian Puspita Hapsari,S.Kom,M.Kom, dan Bapak Achmad Junaidi,S.Kom selaku
Dosen Pembimbing Teknik Informatika Universitas Pembangunan Nasional ”Veteran”
Jawa Timur.
ii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4. Kedua orang tua saya dan keluarga tercinta yang telah memberikan semangat dan do’a
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
Penulis
iii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
DAF TAR ISI
ABSTRAK........................................................................................................
i
KATA PENGANTAR ..................................................................................
ii
DAFTAR ISI ..............................................................................................
iv
DAFTAR GAMBAR........................................................................................
vii
DAFTAR TABEL............................................................................................
viii
BAB I PENDAHULUAN
1.1 Latar Belakang Masalah ...............................................................
1
1.2 Rumusan Masalah ........................................................................
3
1.3 Batasan Masalah ...........................................................................
3
1.4 Tujuan ..........................................................................................
4
1.5 Manfaat ........................................................................................
4
1.6 Metodologi Penelitian...................................................................
4
1.7 Sistematika penulisan ...................................................................
6
BAB II TINJAUAN PUSTAKA
2.1 Representasi Data .........................................................................
7
2.1.1 BCD (Binary Coded Decimal) ..............................................
7
2.1.2 SBCDIC (Standard Binary Coded Decimal) ..........................
8
2.1.3 EBCDIC (Extended Binary Coded Decimal).........................
8
2.1.4 ASCII (American Standard Code for Information
Interchange) ...........................................................................
8
2.2 Konsep Dasar Informasi ...............................................................
9
2.3 Kompresi Data .............................................................................
11
2.4 Metode Kompresi Data .................................................................
13
2.5 Teknik Kompresi Data..................................................................
14
2.6 Algoritma Huffman ......................................................................
15
2.7 Pengkodean Data ..........................................................................
18
2.8 Algoritma Pengkodean Base64 .....................................................
19
2.8.1 Decoding Base 64 menjadi ASCII .........................................
20
iv
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
2.9 Unified Modelling Language ........................................................
21
2.10 Semantik Dalam UML..................................................................
26
2.11 Notasi dalam UML .......................................................................
28
2.11.1 Actor...................................................................................
28
2.11.2 Use Case .............................................................................
29
2.11.3 Class Diagram.....................................................................
30
2.11.4 Interface ..............................................................................
30
2.11.5 Interaction...........................................................................
31
2.11.6 Note ....................................................................................
31
2.11.7 Dependency ........................................................................
31
2.11.8 Association .........................................................................
32
2.11.9 Generalization .....................................................................
32
2.11.10 Realization ..........................................................................
33
2.12 Bahasa Pemrograman Java ...........................................................
33
BAB III Analisis Kebutuhan Dan Perancangan Sistem
3.1 Analisa Kebutuhan .......................................................................
40
3.2 Pemodelan Fungsional ..................................................................
40
3.2.1 Diagram Alir.........................................................................
41
3.2.2 Kelas Diagram ......................................................................
42
3.2.3 Pseudocode Ecoding Base64 .................................................
44
3.2.4 Pseudocode Decoding Base64 ...............................................
45
3.2.5 Pseudocode Kompresi Huffman ............................................
46
3.2.6 Pseudocode Dekompresi Huffman ........................................
46
3.3 Use Case Diagram ........................................................................
47
3.4 Sequence Diagram ........................................................................
48
3.4.1 Sequence Diagram Compress................................................
48
3.4.2 Sequence Diagram Decompress ............................................
49
3.5 Perancangan Sistem ......................................................................
50
3.6 Perancangan Antar Muka..............................................................
50
3.6.1 Perancangan Form Untuk Encoding Dan Kompresi ..............
51
3.6.2 Perancangan Form Untuk Decoding Dan
Dekompresi ..........................................................................
v
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
51
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
DAFTAR PUSTAKA
vi
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
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.5
Metodologi dalam UML ........................................................
23
Gambar 2.6
Notasi Actor ..........................................................................
28
Gambar 2.7
Notasi Use Case .....................................................................
29
Gambar 2.8
Notasi Class ...........................................................................
30
Gambar 2.9
Notasi Interface .....................................................................
30
Gambar 2.10 Notasi Interaction ..................................................................
31
Gambar 2.11 Notasi Note............................................................................
31
Gambar 2.12 Notasi Dependency ................................................................
31
Gambar 2.13 Notasi Association .................................................................
32
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
Gambar 4.4
Grafik Hasil Uji Coba Dekompresi ........................................
65
vii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
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 ...............................................................................
Tabel 4.2
60
Rangkuman Hasil Percobaan Decoding dan
Decompress ...........................................................................
viii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
63
1
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 didekompresi 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
kecil.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
2
Peluang untuk memperoleh data kembar ditentukan oleh panjangpendeknya 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
ABCDEFGHIJKLMNOPQRSTUVWXYZ,
pola
sebanyak
64
buah,
yaitu
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
yang tersedia akan membuat peluang terjadinya karakter kembar semakin besar.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
3
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
meliputi kegiatan encode sebagai pendahuluan.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4
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
dengan permasalahan yang akan dikerjakan dalam tugas akhir ini.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
5
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
kesimpulan.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
6
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
penulisan tugas akhir.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
7
BAB II
TINJ AUAN PUSTAKA
2.1.
Representasi 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
desimal saja, yaitu angka 0 sampai dengan 9. BCD menggunakan kombinasi dari
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
8
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 Binary 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 Standard Code for Infor mation Inter change)
Kode ASCII yang standard menggunakan kombinasi 7 bit, dengan
kombinasi sebanyak 127 dari 128 kemungkinan kombinasi. Kode ASCII 7 bit ini
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
9
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
informasi.Data yang diolah untuk menghasilkan informasi menggunakan suatu
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
10
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.
Proses
Input
Dat a
Out put
Dasar
Penerima
Dat a
Hasil
Tindakan
Keputusan
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
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
AKURASI
TEPAT WAKTU
R E L EV A N S I
11
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.
Kompresi 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
memakan tempat yang lebih kecil. Ide inilah yang menjadi cikal bakal dalam
terciptanya kompresi data.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
12
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 floatingpoint. 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
simbol yang muncul pada komputer memiliki nilai bit-bit yang berbeda. Misal
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
13
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.
Contohnya pada algoritma LZW dan DMC.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
14
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.
Teknik Kompresi Data
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
kompresi data secara lossless yaitu teknik kompresi data dengan mengurangkan
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
15
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.
Algorithma 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
symbolwise. Algoritma Huffman merupakan salah satu algoritma yang digunakan
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
16
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
Huffman seperti pada Tabel 2.1
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
17
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 :
1. Baca bit pertama dari string biner masukan
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
18
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
yang telah terkodekan.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
19
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.
Algoritma 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
mencukupi, sehingga digunakan karakter UNICODE yang setiap karakternya
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
20
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
Hex representation of text
Bit representation of text
grouped by bytes
Bit representation of text in
groups of 6 bits
Mary had
4D 61 72 79 20 68 61 64
01001101 01100001 01110010 01111001
00100000 01101000 01100001 01100100
010011 010110 000101 110010 011110
010010 000001 101000 011000 010110
010000=
Decimal representation of text 19 22 05 50 30 18 01 40 24 22 16=
in groups of 6 bits
Base 64 encoded string
TWFyeSBoYWQ=
2.8.1 Decoding Base 64 menjadi ASCII
Proses decoding adalah kebalikan dari encoding, yaitu mengembalikan
data hasil encode menjadi data dalam bentuk asli.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
21
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 artifact dari 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
bahasa-bahasa berorientasi objek seperti C++, Java, VB.NET. Walaupun
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
22
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
pengembangan tersebut dikoordinasikan oleh Object Management Group (OMG –
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
23
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
masalah penotasian dan mekanisme tukar menukar model yang terjadi selama ini.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
24
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 seb