BAB 3 ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Analisis sistem merupakan proses mengidentifikasi dan mendefinisikan masalah pada sebuah sistem untuk mengetahui kebutuhan apa saja yang diperlukan sistem untuk
berjalan sesuai dengan tujuannya. Dalam menganalisis sistem terdapat beberapa langkah yang harus dilakukan sebagai berikut:
3.1.1. Identifikasi Masalah
Tahap identifikasi masalah dilakukan untuk mengetahui apa yang menjadi alasan dibangunnya suatu sistem sehingga sistem tersebut dapat berjalan sesuai dengan
tujuannya. Dalam penelitian ini yang akan dibahas adalah bagaimana perbandingan algoritma FLBE dan algoritma Sequitur dalam mengkompresi file teks dengan
menggunakan analisis kompresi. File teks yang akan digunakan dalam penelitian ini adalah file .txt dan file .doc. Identifikasi masalah pada penelitian ini adalah sebagai
berikut: 1.
People Manusia suka mengumpulkan data dalam jumlah besar. Salomon, 2004
2. Metode
Menurut Cormen 2009, ada banyak algoritma yang dikembangkan untuk mengkompresi data, namun belum ada satupun algoritma yang baik untuk
mengkompresi berbagai tipe file. Dalam penelitian ini algoritma yang akan dibandingkan adalah algoritma FLBE dan algoritma Sequitur.
3. Material
Kecenderungan mengumpulkan data mengakibatkan penggunaan memori yang boros. File teks yang cenderung memiliki redundancy membuat penggunaan
memori kurang maksimal. 4.
Machine Terdapat banyak software untuk mengkompresi data, namun belum ada yang
optimal dalam melakukan kompresi berbagai tipe data.
Identifikasi masalah pada sistem yang dirancang dapat digambarkan dalam Diagram Ishikawa seperti pada Gambar 3.1.
Ukuran File Teks besar dan Pemborosan dalam menggunakan Media
Penyimpanan
Banyak algoritma untuk ko mp resi data
Suka mengumpulkan data Software untuk ko mp resi
data belum optimal
Gambar 3.1: Diagram Ishikawa untuk identifikasi masalah
3.1.2. Analisis Kebutuhan Sistem
Setelah masalah diperoleh melalui tahap identifikasi masalah, maka perlu dilakukan analisis kebutuhan sistem untuk memahami apa saja yang diperlukan untuk
membangun sistem tersebut. Pada tahap ini terdapat kebutuhan sistem terdiri dari 2 jenis kebutuhan yaitu kebutuhan fungsional dan kebutuhan non-fungsional.
1. Kebutuhan fungsional
Kebutuhan fungsional adalah kebutuhan yang berisi proses-proses apa saja yang akan terdapat dalam sistem. Adapun kebutuhan fungsional tersebut
adalah : a.
Sistem dapat membaca string yang berada dalam file teks.
b. Sistem dapat mengkompresi data file teks .txt dan .doc dengan
algoritma FLBE.
c. Sistem dapat mengkompresi data file teks .txt dan .doc dengan
algoritma Sequitur.
d. Sistem dapat mendekompresi data terhadap hasil kompresi dengan
algoritma FLBE.
e. Sistem dapat mendekompresi data terhadap hasil kompresi dengan
algoritma Sequitur.
2. Kebutuhan non-fungsional
Kebutuhan non-fungsional adalah kebutuhan yang berisi properti prilaku yang dimiliki oleh sistem. Beberapa kebutuhan non fungsional yang dimaksud
adalah: a.
Data penelitian yang akan digunakan dalam sistem. b.
Desain dan waktu pengerjaan. c.
Sistem operasi Microsoft Windows 7 dan Netbeans 7.4. d.
Kemudahan dalam penggunaan dan tampilan interface yang sederhana.
3.1.3. Analisis Proses
Terdapat 2 proses utama dalam penelitian ini, yaitu proses kompresi dan proses dekompresi. Kedua proses tersebut dilakukan dengan menggunakan algoritma FLBE
dan algoritma Sequitur. Pada proses kompresi, sistem pertama-tama akan membaca string yang terdapat pada file teks dan kemudian melaksanakan proses dari masing-
masing algoritma. Misalkan ada file teks berisi string “KUTILANG KUTIL KAKAKKU”. Untuk mengetahui ukuran string tersebut, dapat dilihat pada Tabel 3.1.
Tabel 3.1. Ukuran String Sebelum Dikompresi
Character Frequency
ASCII Decimal
ASCII Binary
Bit Bit x
Frequency K
6 75
01001011 8
48
U 3
85 01010101
8 24
T 2
84 01010100
8 16
I 2
73 01001001
8 16
L 2
76 01001100
8 16
A 3
65 01000001
8 24
N 1
78 01001110
8 8
G 1
71 01000111
8 8
sp 2
32 00100000
8 16
Jumlah Bit x Frequency 176 bit
1. Proses Kompresi
Setelah file teks berhasil dibaca menjadi string, maka tahap selanjutnya adalah proses kompresi menggunakan algoritma FLBE dan algoritma Sequitur.
a. Proses algoritma FLBE
Pada algoritma FLBE, string yang telah dibaca kemudian diambil karakter yang terdapat pada string tersebut dan disusun ke dalam tabel sesuai dengan urutan
kemunculan karakter pada string. Perhatikan gambar 3.2.
Tabel 3.2. Total Bit Setelah Dikompresi Menggunakan Algoritma FLBE
Character Frequency
FLBE Code
Bit Bit x
Frequency K
6 0000
4 24
U 3
0001 4
12
T 2
0010 4
8 I
2 0011
4 8
L 2
0100 4
8 A
3 0101
4 12
N 1
0110 4
4 G
1 0111
4 4
sp 2
1000 4
8 Jumlah Bit x Frequency
88 bit
Pada tabel 3.2, setelah masing-masing karakakter tersusun, pada masing-masing karakter kemudian diberi nilai biner mulai dari 0 hingga biner ke 8 disesuaikan
dengan posisi karakter terakhir. Karakter terakhir diberi nilai biner 1000 biner ke 7 yang berukuran 4 bit sehingga biner dengan nilai bit kurang dari 4,
ditambahkan angka 0 di depannya hingga mencapai 4 bit. Penambahan ini disebut juga padding.
Tahap selanjutnya adalah menyusun kembali kode-kode yang telah dibuat dalam tabel sesuai dengan posisi karakter pada string. String yang telah dibaca
adalah KUTILANG KUTIL KAKAKKU, K
U T
I L
A N
G Sp
0000 0001 0010 0011 0100 0101 0110 0111 1000
K U
T I
L Sp
0000 0001 0010 0011 0100 1000
K A
K A
K K
U 0000 0101 0000 0101 0000 0000 0001
sehingga diperoleh String Bit sebagai berikut:
00000001001000110100010101100111100000000001001000110100100000000 10100000101000000000001
Sebelum hasil kompresi dituliskan ke dalam file, terlebih dahulu dilakukan penambahan bit-bit padding dan flagging. Penambahan bit-bit padding dan
flagging dilakukan dengan mengacu pada sisa jumlah bit dibagi 8. Jumlah bit hasil kompresi adalah 88 di mana jika bilangan tersebut dibagi 8, maka akan
menghasilkan sisa bagi sebanyak nol. Maka diperoleh padding 00000000.
00000001001000110100010101100111100000000001001000110100100000000 1010000010100000000000100000000
Dengan penambahan padding sebanyak 8 bit, maka diperoleh flagging 00001000. Maka diperoleh String Bit baru sebagai berikut.
00000001001000110100010101100111100000000001001000110100100000000 101000001010000000000010000000000001000
Sehingga total bit yang diperoleh adalah 104 bit. b.
Proses algoritma Sequitur Pada algoritma Sequitur, string yang telah dibaca tersebut diproses untuk
mendapatkan digram yang nantinya akan diubah menjadi simbol nonterminal. Pertama-tama semua karakter string akan diubah strukturnya menjadi huruf kecil.
Kemudian memeriksa dari pasangan karakter pertama apakah pasangan tersebut muncul lebih dari satu kali. Jika pasangan tersebut muncul lebih dari satu kali,
maka pasangan tersebut diubah menjadi simbol nonterminal. String
: KUTILANG KUTIL KAKAKKU String to lowercase : kutilang kutil kakakku
Dari kata “kutilang kutil kakakku” pasangan karakter pertama adalah “ku”, kemudian dilakukan pemeriksaan apakah jumlah pasangan “ku” muncul
lebih dari satu kali. Dalam string “kutilang kutil kakakku” pasangan “ku” muncul
sebanyak tiga kali, maka “ku” diubah menjadi “A” di mana “A” merupakan simbol nonterminal.
New string : Atilang Atil kakakA
Kemudian dilakukan lagi pemeriksaan apakah masih terdapat pasangan karakter yang muncul lebih dari satu kali. Pasangan yang ditemukan muncul lebih dari
satu kali adalah “At”, sehingga “At” diubah menjadi simbol nonterminal “B”. New String
: Bilang Bil kakakA Proses secara keseluruhan dapat dilihat pada tabel 3.3.
Tabel 3.3. Proses pada Algoritma Sequitur
Process String
Digram nonterminal
Rule New string
delete rule
1 kutilang kutil
kakakku Ku
A A = ku
Atilang Atil kakakA
2 Atilang Atil kakakA
At A
A = ku, B = At
Bilang Bil kakakA
3 Bilang Bil kakakA
Bi A, B
A = ku, B = At,
C = Bi Clang Cl
kakakA C
4 Blang Bl kakakA
Bl A, B
A = ku, B = Ati,
C = Bl Cang C
kakakA C
5 Bang B kakakA
Ka A, B
A = ku, B = Atil
C = ka Bang B
CCkA
6 Bang B CCkA
Null A, B, C
A = ku, B = Atil,
C = ka
Pada tabel 3.3, pada proses yang ketiga terdapat simbol nonterminal C yang dihapus. Sesuai dengan production rule yang menyebutkan bahwa setiap
rule harus digunakan lebih dari satu kali, maka simbol B yang memiliki nilai “At” yang hanya digunakan satu kali harus diabaikan atau ditiadakan. Sesuai dengan
contoh yang terdapat pada gambar 2.2 pada bab 2, maka simbol B dibangkitkan kembali dan diberikan nilai simbol C, sehingga nilai simbol B adalah “Ati”.
Begitu pula pada proses yang ke empat nilai simbol C diberikan kepada B sehingga B memiliki nilai “Atil”. Sehingga memperoleh string baru “Bang B
CCkA”. Total String Bit yang diperoleh dari proses kompresi dapat dilihat pada
tabel 3.4.
Tabel 3.4. Total Bit Setelah Dikompersi Menggunakan Algoritma Sequitur
Character Frequency
ASCII Decimal
ASCII Binary
Bit Bit x
Frequency B
2 66
01000010 8
16 a
1 97
01100001 8
8 n
1 110
01101110 8
8 g
1 103
01100111 8
8 Sp
2 32
00100000 8
16 c
2 67
01000011 8
16 k
1 107
01101011 8
8 A
1 65
01000001 8
8 Jumlah Bit x Frequency
88 bit
Dari hasil kompresi tersebut dapat diukur kinerja kedua algoritma sebagai berikut:
a. Ratio of Compression R
C
= = 1,69
= = 2
b. Compression Ratio C
R
= × 100 = 59,09
× 100 = 50
c. Space Savings S
S
= 100
−
59,09 = 100
−
50 = 50
2. Proses Dekompresi
Setelah file dikompresi, maka akan terbentuk sebuah file baru yang nantinya akan digunakan untuk melakukan proses dekompresi.
a. Proses dekompresi dengan algoritma FLBE
File baru yang dibuat dalam algoritma FLBE berisi informasi tentang tabel karakter dan tabel kode FLBE yang digunakan saat melakukan kompresi. Proses
dekompresi dilakukan dengan terlebih dahulu menentukan panjang String Bit yang harus dibaca dengan menghitung padding dan flagging. Pada tabel 3.2
String Bit yang dihasilkan adalah
00000001001000110100010101100111100000000001001000110100100000000 101000001010000000000010000000000001000
Flagging pada String Bit tersebut adalah 00001000 8 bit terakhir pada String Bit yang bila dikonfersi ke dalam decimal akan bernilai 8, sehingga
padding 00000000. Sehingga panjang String Bit yang harus dibaca adalah
panjang String Bit 104 bit terkompresi dikurang total jumlah panjang padding dan flagging 8+8. Maka diperoleh nilai panjang String Bit yang harus dibaca
adalah 88 bit. Pembacaan String Bit dilakukan dari indeks terkecil sampai indeks terakhir dengan terus menambahkan nilai pada indeks sebelumnya yang tidak
terdapat dalam tabel. Indeks ke 0 adalah 0, tidak terdapat di dalam tabel, indeks ke 1 adalah 00, tidak terdapat di dalam tabel, indeks ke 2 adalah 000, juga tidak
terdapat di dalam tabel. Indeks ke 3 adalah 0000, terdapat di dalam tabel bahwa 0000 bernilai K, maka K dituliskan ke dalam file, begitu seterusnya sehingga
String hasil dekompresi menjadi “KUTILANG KUTIL KAKAKKU”. b.
Proses dekompresi dengan algoritma Sequitur Pada Sequitur, file baru yang dibuat berisi informasi tentang rule digram dan
nilai nonterminal yang digunakan saat proses kompresi. Rule yang diperoleh dari String Bang B CCkA adalah A = ku, B = Atil, C = ka, maka String hasil
kompresi dibaca dari indeks ke 0 sampai indeks terakhir satu persatu karakter. Indeks ke 0 adalah B, B terdapat dalam rule sehingga diubah menjadi “Atil”,
maka diperoleh string “Atilang Atil CCkA”. Setelah dilakukan penukaran dilakukan pemeriksaan pada string apakah masih memiliki simbol nonterminal di
dalamnya. Jika masih terdapat simbol nonterminal, maka pembacaan indeks diulang dari awal yaitu indeks ke 0. Indeks ke 0 adalah A, A terdapat dalam rule
maka A diubah menjadi “ku”, begitu seterusnya sehingga String hasil dekompresi menjadi “kutilang kutil kakakku”.
3.2. Pemodelan Sistem