BAB III ANALISIS DAN PERANCANGAN SISTEM 3.1 Analisis Sistem Analisis
sistem
bertujuan
untuk
mengidentifikasi
permasalahan
permasalahan yang ada pada sistem di mana aplikasi dibangun yang meliputi perangkat lunak (software), pengguna (user) serta hasil analisis terhadap sistem dan elemen-elemen yang terkait. Analisis ini diperlukan sebagai dasar bagi tahapan perancangan sistem. Analisis sistem Desain dan implementasi ini meliputi desain data, deskripsi sistem, desain proses dan implementasi desain dan semua yang diperlukan dalam aplikasi kompresi file.
3.1.1
Analisis Data Dalam sistem pengkompresian file ini sekumpulan file-file yang
mempunyai berbagai jenis ekstensi yang digunakan sebagai objek penelitian. Umumnya pengenal tipe file tertera pada nama file tersebut, yaitu tiga huruf paling kanan setelah titik. Fungsinya adalah untuk mengetahui atau membedakan jenis file. Untuk memperoleh hasil yang maksimal dalam kompresi file dan mempermudah dalam pengujian kebenaran dan keakuratan aplikasi, maka data yang digunakan diambil dari beberapa file yang ada dalam media penyimpanan berdasarkan format dan besar kapasitas file. Sehingga dalam aplikasi kompresi file ini terdapat 50 file yaitu masing-masing sepuluh file teks yang mempunyai tipe *.txt, *.html, *.rtf, dan *.doc dan file citra yang mempunyai tipe *.bmp.
32
3.1.2
Spesifikasi Aplikasi Aplikasi yang akan dibangun memiliki kemampuan sebagai berikut:
a. Melakukan kompresi file terhadap sekumpulan atau sebuah file yang sudah diketahui ekstensi dan besar kapasitas file. b. Pengkompresian file ini dapat memampatkan ukuran file aslinya menjadi lebih kecil. c. Aplikasi kompresi ini dapat di gunakan untuk 50 file yaitu masing-masing sepuluh file teks yang mempunyai tipe *.txt, *.html, *.rtf, dan *.doc dan file citra yang mempunyai tipe *.bmp. d. Melakukan dekompresi file terhadap file yang telah terkompresi, agar kembali ke ukuran dan bentuk file aslinya dan file tersebut dapat digunakan sebagaimana mestinya.
3.1.3
Spesifikasi Pengguna Aplikasi ini ditujukan untuk digunakan oleh semua pihak yang
membutuhkan aplikasi kompresi file khususnya para orang-orang dibidang teknologi informasi yang selalu berhubungan dengan komputer dan data.
3.1.4
Spesifikasi Operasi Untuk membangun aplikasi kompresi file sesuai dengan spesifikasi
kebutuhan, dibutuhkan lingkungan operasi sebagai berikut : a. Sistem Operasi Windows 7 ultimate Sistem operasi ini dipilih karena sudah banyak dikenal sehingga mudah dalam pengoperasiannya.
33
b. Java 2 SDK 1.6 (Java Standard Development Kit) J2SDK digunakan untuk membuat program java karena kita memerlukan compiler, class libraries, virtual machine supaya suatu program java dapat dikompilasi dan dijalankan. Secara garis besar Java 2 SDK 1.6 terdiri dari: a. Java Compiler (Javac) b. Java
Virtual
Machine
(sering
juga
disebut
Java
Runtime
Environment/JRE). c. Java Class Libraries (koleksi class yang dapat digunakan untuk menghasilkan program Java). d. Java
AppletViewer
(program
untuk
menjalankan
apllet
tanpa
menggunakan browser). e. Java Debugger dan tool lain. c. Netbeans IDE7.01 NetBeans merupakan versi visual dari editor pemrograman bahasa Java. Berbagai kemudahan ditawarkan oleh NetBeans, mulai dari perancangan aplikasi berbasis form, kemudahan pemberian komponen visual, manipulasi property dan event yang terintegrasi menjadi satu. d. Interpreter Java Java digunakan karena java merupakan suatu teknologi yang unik dan revolusioner dan merupakan teknologi pertama di dunia software yang memiliki semboyan “write once, run anywhere”. Semboyan tersebut telah terbukti karena banyak program Java dapat dijalankan di berbagai platform Sistem Operasi, seperti Linux, Windows, Macintos maupun Unix.(Isak Riyanto, 2003).
34
3.1.5
Deskripsi Sistem Dalam pembahasan ini akan membahas mengenai deskripsi sistem yang
dikerjakan pada skripsi ini. Tujuan pembuatan sistem ini adalah untuk membuat aplikasi pengkompresian file. Sistem ini dapat memampatkan ukuran file dengan maksimal sesuai dengan jenis file telah diketahui. Metode yang digunakan pada sistem ini adalah dengan metode dictionary. Sedangkan tahapan dalam pengkompresian file ada 2 tahapan. Tahap pertama yaitu proses pengkompresian atau pemampatan terhadap beberapa file dan tahap kedua yaitu proses dekompresi terhadap file-file yang telah terkompresi. Pada tahap kompresi, proses-proses yang dilakukan adalah : a. User akan menginputkan file uncompress (yaitu file yang bukan merupakan file terkompresi). b. Sistem akan menginisialisasi input stream yang mengandung karakterkarakter dasar. c. Kemudian membaca karakter dari input stream, jika string yang terbentuk telah mempunyai indek di dalam dictionary maka menuju ke langkah ke 6. d. Gabungkan karakter awal dengan karakter yang dibaca selanjutnya menjadi sebuah string. e. Jika string baru ini tidak ada dalam dictionary maka buat indek baru untuk string baru tersebut, menuju langkah 3. f. Jika string yang terbentuk telah mempunyai indek di dalam dictionary maka gabungkan karakter sebelumnya dengan karakter yang dibaca atau string yang telah terbentuk menjadi sebuah string baru, menuju langkah 3.
35
g. Tulis output kode, hasil output dari proses kompresi adalah file dengan ekstensi *.lzw, dan akan disimpan dengan nama dan direktori sesuai dengan yang telah ditentukan oleh user. Sedangkan pada tahap dekompresi file, proses-proses yang dilakukan adalah : a. User akan menginputkan file compress yang berekstensi *.lzw pada sistem. b. Sistem akan menginisialisasi seluruh dictionary yang mengandung karakter karakter ASCII. c. Baca kode (huruf atau code word) pertama dari hasil kompresi LZW kemudian outputkan karakter yang dibaca kemudian simpan kode ke variabel w. d. Baca kode selanjutnya. e. Copy kode yang dibaca ke variabel entry f. Outputkan kode (karakter) g. Gabungkan value dari variabel w dengan karakter pertama dari entry kemudian simpan sebagai dictionary. h. Isi variabel w dengan value dari variabel entry. i. Kembali ke langkah 4, sampai hasil akhir pembacaan kode (karakter) j. Hasil output dari proses dekompresi adalah file dengan ekstensi sesuai dengan file aslinya, dan akan disimpan dengan nama dan direktori sesuai dengan yang telah ditentukan oleh user.
3.1.6
Analisis Use Case Diagram use case akan menggambarkan bagaimana seseorang akan
menggunakan atau memanfaatkan sistem pengkompresian file ini, Berikut ini merupakan gambaran sistem dari sisi pengguna :
36
Gambar 3.1 Diagram Use Case Diagram use case yang ditunjukkan pada gambar 3.1 terdapat satu aktor yaitu user. Pertama, user melakukan pengkompresian file dengan menginputkan file yang belum terkompresi berupa file teks murni yang mempunyai tipe *.txt, *.html, *.rtf, *.doc dan file citra yang mempunyai tipe *.bmp. Kedua, user dapat melakukan dekompresi file dengan menginputkan file yang telah terkompresi, yaitu file yang mempunyai tipe *.lzw, agar kembali ke jenis file aslinya.
37
3.1.7
Activity Diagram
Gambar 3.2 Diagram Activity Sistem Kompresi Activity Diagram yang ditunjukkan pada gambar 3.2 adalah diagram aktivitas dari sistem kompresi, pada aktivitas ini user atau pengguna memasukkan file yang belum terkompresi, yaitu file teks murni yang mempunyai tipe *.txt, *.html,*.rtf, *.doc dan file citra yang mempunyai tipe *.bmp. Kemudian dilakukan proses kompresi pada file teks dan file citra tersebut, dan tahap terakhir file hasil kompresi akan tersimpan di dalam directory yang telah tentukan yang menghasilkan file terkompresi dengan tipe *.lzw.
38
Gambar 3.3 Diagram Activity Sistem Dekompresi Activity Diagram yang ditunjukkan pada gambar 3.3 adalah diagram aktivitas dari sistem dekompresi, pada aktivitas ini user atau pengguna memasukkan file terkompresi, yaitu file yang mempunyai format *.lzw. Kemudian dilakukan proses dekompresi pada file terkompresi tersebut, dan tahap terakhir file hasil dekompresi akan tersimpan di dalam directory yang telah tentukan yang menghasilkan file teks murni yang mempunyai tipe *.txt, *.html,*.rtf, *.doc atau file citra yang mempunyai tipe *.bmp.
39
3.1.8
Analisis Squence Diagram
Gambar 3.4 Squence Diagram Proses Kompresi Pada gambar 3.4 menggambarkan aliran pesan dari use case kompresi file. Masing-masing pesan menggambarkan suatu objek yang membuat pemanggilan objek yang lain yang saling keterkaitan dalam suatu proses kompresi file. Proses dimulai dari user menjalankan aplikasi kompresi, kemudian user memasukkan file ke tabel input, user menentukan tempat penyimpanan hasil kompresi, selanjutnya melakukan proses kompresi, pada proses kompresi dilakukan desimalisasi dan binerisasi pada setiap karakter, proses kompresi berhenti dengan ditandai proses PrograssBar. Setelah proses berakhir hasil kompresi dapat dilihat di tabel output. Pada hasil kompresi dapat dilihat ukuran file setelah terkompresi, dan rasio kompresi.
40
Gambar 3.5 Squence Diagram Proses Dekompresi Pada gambar 3.5 menggambarkan aliran pesan dari use case dekompresi file. Masing-masing pesan juga menggambarkan suatu objek yang membuat pemanggilan objek yang lain. Proses dimulai dari user menjalankan aplikasi dekompresi, kemudian user memasukkan file ke tabel input, user menentukan tempat penyimpanan hasil dekompresi, selanjutnya melakukan proses dekompresi, pada proses dekompresi dilakukan binerisasi dan desimalisasi pada setiap karakter, proses dekompresi berhenti dengan ditandai proses PrograssBar. Setelah proses berakhir hasil dekompresi dapat dilihat di tabel output. Pada hasil dekompresi dapat dilihat ukuran file setelah dekompresi.
3.1.9
Analisis Kelas Kelas-kelas yang diperlukan dalam pembuatan perangkat lunak kompresi
file ini adalah sebagai berikut :
41
a. Kelas Index Kelas ini berfungsi sebagai kelas utama yaitu terdapat komponen berupa menu untuk menjalankan aplikasi, seperti menu yang berisi kompresi yang di dalamnya terdapat aplikasi kompresi, menu dekompresi yang di dalamnya terdapat aplikasi dekompresi dan menu bantuan yang di dalamnya terdapat informasi tentang aplikasi. b. Kelas Kompresi Kelas ini digunakan untuk memproses pemampatan berbagai tipe file, agar diperoleh ukuran file yang lebih kecil. c. Kelas Dekompresi Kelas ini berfungsi untuk memproses pengembalian file yang terkompresi menjadi file dan ukuran aslinya, agar file tersebut dapat digunakan kembali sesuai fungsinya. d. Kelas Bantuan Kelas ini digunakan untuk menampilkan informasi terkait program. Berdasarkan penjelasan anilisis kelas diatas dapat digambarkan kelas diagram pada gambar 3.6.
42
Gambar 3.6 Kelas Diagram Aplikasi Kompresi File
3.2
Perancangan Aplikasi Pada perancangan aplikasi pengkompresian file ini ini akan dijelaskan
mengenai rancangan aplikasi yang akan dikerjakan serta fitur-fitur yang akan dipakai pada aplikasi tersebut. Objek dari penelitian ini yaitu 50 file yaitu masing masing sepuluh file teks yang mempunyai tipe *.txt, *.html, *.rtf, dan *.doc dan file citra yang mempunyai tipe *.bmp di mana dilakukan terhadap file dengan berbagai ukuran. Hal ini bertujuan untuk mengetahui bagaimanakah pengaruh ukuran file terhadap hasil kompresi yang dilakukan.
43
3.2.1 Pseudo Code Algoritma LZW untuk Kompresi Metode LZW yang diterapkan dalam aplikasi ini bertipe dinamik, di mana hanya dilakukan satu kali pembacaan (one-pass) terhadap file yang akan dikompresi. Pengkodean data dilakukan secara on the fly, bersamaan dengan proses penambahan string baru ke dalam dictionary. Pada algoritma ini, setiap byte hasil proses kompresi LZW dianggap sebagai 12 bit. Sehingga dictionary yang dipakai adalah sebesar 4096 (212) dan dikurangi dengan 256 karakter ASCII. Karena indeks dimulai dari nol, kisaran indeks dictionary-nya dimulai dari 256 sampai dengan 4095. Berikut ini Pseudo Code dari proses kompresi. Initialize table with single character strings P = first input character WHILE not end of input stream C = next input character IF P + C is in the string table P=P+C ELSE output the code for P add P + C to the string table P=C END WHILE output code for P
3.2.2 Flowchart Algoritma LZW untuk Kompresi Algoritma LZW ini dimulai dengan input Byte pertama dari file, disimpan ke dalam variabel newstring. Kemudian input Byte berikutnya dan disimpan ke dalam variabel newchar. Newstring dan newchar dimasukkan ke dalam sebuah variabel dengan nama UCode. UCode kemudian dicocokkan di tabel dictionary yang telah disiapkan, dengan indeks awal 256 dan indeks akhir 4095. Apabila
44
UCode berada dalam tabel, maka newstring baru diisi dengan newstring lama ditambah newchar. Apabila UCode tidak berada dalam tabel, maka output variabel newstring. Kemudian UCode ditambahkan ke dalam tabel dan newstring diisi dengan newchar. Hal tersebut dilakukan sampai dengan akhir file. Flowchart penerapan algoritma kompresi LZW dalam program aplikasi dapat dilihat pada gambar 3.7.
45
Gambar 3.7 Flowchart Program Kompresi LZW
46
3.2.3 Pseudo Code dan Flowchart Algoritma LZW untuk Dekompresi Algoritma dekompresi LZW ini dimulai dengan menyimpan kode pertama hasil kompresi dan disimpan ke dalam variabel Ocode dan output-kan variabel Ocode. Kemudian input kode berikutnya dan disimpan ke dalam variabel Ncode. Variabel Ncode dicocokkan dalam dictionary. Jika ada dalam dictionary, berarti newstring diisi dengan Ncode. Jika tidak ada dalam dictionary, maka newstring diisi dengan Ocode dan newstring baru diisi dengan newstring lama ditambah dengan newchar. Kemudian output-kan newstring. Dilakukan juga proses newchar diisi dengan karakter pertama dari newstring. Variabel Ocode ditambah dengan variabel newchar dimasukkan dalam dictionary dan variabel Ocode diisi dengan variabel Ncode. Hal tersebut dilakukan seterusnya sampai akhir file. Berikut ini Pseudo Code dari proses dekompresi. Initialize table with single character strings OLD = first input code output translation of OLD WHILE not end of input stream NEW = next input code IF NEW is not in the string table S = translation of OLD S=S+C ELSE S = translation of NEW output S C = first character of S OLD + C to the string table OLD = NEW END WHILE
47
Gambar 3.8 Flowchart Program Dekompresi LZW
48
3.2.4 Contoh Algoritma LZW Berikut
ini
contoh
aplikasi
kompresi
dan
dekompresi
dengan
menggunakan algoritma LZW. Contoh berikut ini hanya akan menjelaskan pengkompresian
dan
dekompresi
terhadap
beberapa
karakter
dengan
mengkodekan menurut kode ASCII.
3.2.4.1 Kompresi dengan LZW Sebagai contoh, string “MAMA MASAK SAGU” akan dikompresi dengan LZW. Isi dictionary pada awal proses diset dengan tujuh karakter dasar yang ada: “M”, “A”, “_”, “S”, “K”, “G”, “U”. bit dictionary yang dipakai adalah 8 bit. tahapan proses kompresi ditunjukkan pada tabel 3.1. Diketahui : Input String: MAMA_MASAK_SAGU bit dictionary: 8 bit Tabel 3.1 Tahapan Proses Kompresi
49
Total awal bit disimpan tanpa kompresi = Total input * bit dictionary = 15 x 8 = 120 bit Besar file setelah dikompresi = Total output * bit dictionary = 11 x 8 = 88 bit Hasil kompresi dari string MAMA_MASAK_SAGU yaitu: Decimal
77-65-256-32-256-83-65-75-32-261-71-85
Heksa
4D-41-100-20-100-53-41-4B-20-105-47-55
Biner
1001101-1000001-100000000-100000-100000000-1010011-
1000001-1001011-100000-100000101-1000111-1010101 (M-A-MA-_-MA-S-A-K-_-SA-G-U) Hasil Rasio Kompresi ukuran file terkompresi –––––––––––––––––––– X 100% ukuran file asli
Rasio =
=
88 –––––– X 100% 120
=
73,33 %
3.2.4.2 Dekompresi dengan LZW Sebagai contoh, output kode decimal “77-65-256-32-256-83-65-75-32261-71-85” didekompresi dengan algoritma LZW. bit dictionary yang dipakai adalah 8 bit. tahapan proses dekompresi ditunjukkan pada tabel 3.2.
50
Diketahui : Input kode: 77-65-256-32-256-83-65-75-32-261-71-85 Tabel 3.2 Tahapan Proses Dekompresi
Hasil dekompresi dari kode 77-65-256-32-256-83-65-75-32-261-71-85 yaitu: MAMA_MASAK_SAGU
3.2.5 Perancangan User Interface Aplikasi ini dibangun dengan desain User interface form atau antar muka yang memiliki dua form inti, yang terdiri dari interface kompresi dan interfacedekompresi. Berikut merupakan gambar dari interface kompresi dan dekompresi, dapat dilihat pada gambar 3.9.
51
Gambar 3.9 Rancangan Form Aplikasi Kompresi Adapun keterangan bagian-bagian yang ada dalam gambar 3.9 adalah: a. Main menu yang berisi menu kompresi/dekompresi, dan bantuan. Menu kompresi/dekompresi adalah untuk melakukan proses kompresi dan dekompresi. Sedangkan menu bantuan berisi petunjuk atau keterangan tentang aplikasi. b. Komponen TextField dan tombol ambil file untuk memasukkan file yang akan diproses baik kompresi maupun dekompresi, yaitu berupa nama file yang disertai direktori penyimpanannya, dan ukuran file tersebut. c. Komponen TextField dan tombol simpan file tempat menentukan direktori penyimpanan dari hasil proses kompresi atau proses dekompresi. d. Menu prosedur adalah menu untuk memilih proses kompres atau dekompres. e. Tombol kompres atau dekompres berfungsi untuk menjalankan proses
52
kompres atau dekompres. f. Komponen Textfield berisi keterangan hasil kompres atau dekompres yaitu berupa nama file, ukuran file dan rasio kompresi. g. Tombol bersihkan layar yang berfungsi menghapus semua hasil proses kompresi atau dekompres.
3.2.6 Perancangan Uji Coba dan Evaluasi Hasil Uji coba sistem kompresi terhadap file akan digunakan untuk melakukan evaluasi terhadap hasil kompresi dan dekompresi yang dihasilkan oleh sistem. Tujuannya yaitu untuk mengetahui apakah penerapan algoritma LZW ini dapat mengkompresi suatu file dengan efektif.
3.2.6.1 Rancangan Uji Coba Pengujian yang akan dilakukan terhadap sistem adalah dengan menginputkan 50 file yaitu masing-masing sepuluh file teks yang mempunyai tipe *.txt, *.html, *.rtf, dan *.doc dan file citra yang mempunyai tipe *.bmp. uji coba dilakukan terhadap file dengan berbagai ukuran. Hal ini bertujuan untuk mengetahui bagaimanakah pengaruh ukuran file terhadap kompresi yang dilakukan.
3.2.6.2 Analisa dan evaluasi hasil Output yang dihasilkan dari proses kompresi akan dievaluasi dengan memperhatikan ukuran file hasil kompresi, serta rasio kompresi yang dicapai. Sedangkan output yang dihasilkan dari proses dekompresi akan dievaluasi dengan
53
memperhatikan ukuran file hasil dekompresi, serta ketersesuaian antar file hasil dekompresi dengan file asli sebelum dilakukan proses kompresi. Rancangan tabel untuk hasil dari uji coba yang dilakukan pada penelitian ini akan ditampilkan pada tabel 3.3 dan tabel 3.4. Tabel 3.3 Rancangan tabel hasil uji coba untuk proses kompresi
Tabel 3.4 Rancangan tabel hasil uji coba untuk proses dekompresi
54