Analisis Sistem ANALISIS DAN PERANCANGAN SISTEM

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