• Tidak ada hasil yang ditemukan

BAB III PERANCANGAN SIMULASI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PERANCANGAN SIMULASI"

Copied!
17
0
0

Teks penuh

(1)

BAB III

PERANCANGAN SIMULASI

3.1. Batasan dan Karakteristik Modifikasi LZW

Dalam pembuatan simulasi dengan menggunakan tehnik modifikasi LZW (Lempel, Ziv, and Welch) ini, penulis menggunakan beberapa class java yang nantinya akan diaplikasikan pada simulator J2ME (Java 2 Micro Edition). Simulasi yang digunakan pada tugas akhir ini mempunyai beberapa kriteria di bawah ini :

1. Simulasi ini dibuat dengan menggunakan J2ME WTK (Wireless Tool Kit) versi 2.2

2. Simulasi ini hanya dapat berjalan jika emulator mempunyai konfigurasi minimal CLDC versi 1.0 dan MIDP 2.0 yang keduanya didefinisikan oleh SunMicrosystem

3. Simulasi ini hanya akan berjalan apabila pada emulator sudah terdapat program penerimaan dan pengiriman SMS serta beberapa class java yang diperlukan.

4. Besarnya kompresi dari tehnik ini tidak selalu tetap tergantung pada banyaknya huruf pada suatu kata yang akan dikirimkan.

5. Simulasi ini menggunakan dictionary static, maka dari itu dictionary harus selalu diperbaharui supaya perbendaharaan objek yang dapat dipakai pada tehnik ini juga semakin banyak.

6. Kapasitas dari dictionary static tersebut sebanyak 65.536, maka dari itu pengguna tidak perlu merasa khawatir akan kehabisan memori untuk menyimpan objek yang baru.

Dengan kriteria diatas maka proses perancangan simulasi modifikasi LZW dapat dilakukan. Pembahasan mengenai definisi objek pada dictionary akan dilakukan pada bab selanjutnya.

(2)

3.1.1. Pemilihan Dictionary Technique LZW

LZW sebenarnya bukan merupakan merupakan satu-satunya algoritma dalam dictionary techniques yang dapat digunakan untuk kompresi data. Tetapi setelah melalui beberapa pertimbangan maka diputuskan untuk mencoba performansi dari Dictionary Techniques LZW untuk kompresi SMS (Short Message Services). Pertimbangan-pertimbangan itu adalah sebagai berikut :

1. LZW merupakan tehnik dictionary yang terbaru, dan merupakan pengembangan dari tehnik-tehnik sebelumnya sehingga lebih mudah untuk diaplikasikan dalam bahasa pemrograman khususnya Java.

2. Dictionary Techniques LZW merupakan tehnik dictionary yang sangat bagus digunakan untuk kompresi terutama untuk kompresi data yang sangat besar, maka dari itu penulis ingin menguji performansinya jika digunakan untuk mengompresi data yang kecil seperti SMS.

3.1.2. Pemilihan J2ME

J2ME dipilih sebagai platform untuk mengimplementasikan tehnik ini dengan beberapa pertimbangan sebagai berikut :

1. J2ME adalah sebuah teknologi yang telah banyak digunakan dalam pengembangan aplikasi pada ponsel dewasa ini, mulai dari aplikasi permainan sampai pada aplikasi pendukung yang lebih besar.

2. Tool yang digunakan untuk mengembangkan aplikasi yang berbasis pada J2ME bersifat gratis dan mudah didapatkan, yaitu J2ME WTK versi 2.2 3. Adanya dukungan komunitas J2ME yang cukup besar dan adanya

dokumentasi J2ME yang cukup lengkap sehingga memudahkan pembangunan aplikasi yang berbasis pada J2ME.

3.2. Sistem Modifikasi LZW

Simulasi LZW ini dibangun secara langsung dengan menggunakan J2ME WTK versi 2.2. Toolkit ini digunakan oleh penulis sebagai platform Java 2 Micro Edition untuk proses pengembangan simulasi dari awal sampai akhir..

(3)

Sistem modifikasi dictionary techniques LZW akan digambarkan secara menyeluruh dengan menggunakan UML (Unified Modelling Language) yang akan dibagi menjadi dua bagian yaitu UML untuk SendSMS dan UML untuk TerimaSMS.

3.2.1 UML untuk SendSMS

Sistem secara keseluruhan dari SendSMS secara sederhana akan digambarkan dalam suatu use case diagram dimana bagian detail dari proses dapat dilihat dalam sequence diagram dan dalam activity diagram. Untuk class java, method, serta atribut yang akan dipakai dapat dilihat dari class diagram dalam UML ini.

3.2.1.1. Use Case Diagram SendSMS

Pars ingHuruf DictTable Us er SendSMS Pars ingKata Kirim SMS PhoneInput

Gambar III - 1 Use Case SendSMS

Dari use case diagram diatas terlihat bahwa terdapat beberapa class yang diperlukan sebelum SMS dikirim ke penerima. Class-class tersebut antara lain :

1. SendSMS, digunakan untuk mengirim pesan ke suatu nomor tujuan dengan menggunakan port yang telah ditentukan sebelumnya.

(4)

2. PhoneInput, adalah suatu class yang berfungsi untuk menyediakan method TextField yang dapat kita gunakan untuk menuliskan pesan dalam simulator yang nantinya akan dipakai sebagai masukan untuk program ParsingKata.

3. ParsingKata, merupakan class utama dalam program kompresi. Class ini mengambil input dari kalimat yang kita ketikkan pada TextField di program PhoneInput kemudian mengubahnya menjadi kata-kata dimana setiap kata tersebut disimpan dalam suatu array sebagai masukan untuk program ParsingHuruf.

4. ParsingHuruf, adalah suatu class dimana kalimat yang telah diparsing menjadi kata akan diparsing lagi menjadi huruf. Pada class ini juga terdapat method untuk membandingkan setiap huruf yang didapat dengan kombinasi huruf yang terdapat pada class DictTable. Jika kombinasi huruf yang dibandingkan ada pada class DictTable, maka method huruf yang terdapat dalam class ini akan mengembalikan nilai berupa indeks dari kata tersebut. Jika kombinasi huruf yang dibandingkan tidak ada, maka indeks yang dikembalikan akan bernilai 0.

5. DictTable, adalah suatu class yang menyimpan objek yang telah disimpan sebelumnya dan digunakan sebagai pembandingkan dalam class ParsingHuruf.

Keterangan bagaimana proses yang terjadi pada class-class diatas dapat dilihat dalam diagram-diagram UML selanjutnya.

(5)

3.2.1.2. Sequence Diagram SendSMS

: Dict Table : ParsingKata

: ParsingHuruf : PhoneInput : SendSMS

input dari emulator

kata yang telah diparsing

has il pembandingan dengan dict

deretan angka

String dari deretan angka tersebut huruf yang telah diparsing

bandingkan dengan dict

return 0 jika kata tidak ada angka hasil perbandingan

Gambar III - 2 Sequence Diagram SendSMS

Pada diagram ini dijelaskan tentang perpindahan data, serta input dan output dari masing-masing class dalam SendSMS.

(6)

3.2.1.3. Collaboration Diagram SendSMS

: Dict

Table : ParsingKata

: ParsingHuruf

: PhoneInput : SendSMS

5: hasil pembandingan dengan dict

6: return 0 jika kata tidak ada 7: angka hasil perbandingan

2: kata yang telah diparsing 3: huruf yang telah diparsing

4: bandingkan dengan dict

1: input dari emulator

8: deretan angka

9: String dari deretan angka tersebut

Gambar III - 3 Collaboration Diagram SendSMS

Collaboration diagram merupakan pengembangan dari sequence diagram. Pada diagram ini, selain diperlihatkan input dan output dari class-class pada SendSMS, juga diperlihatkan bagaimana urutan pengerjaan dari mulai input awal yang kita masukkan lewat simulator sampai output akhir yang nantinya akan dikirimkan melalui class SendSMS ke penerima.

3.2.1.4. Activity Diagram SendSMS

Activity diagram adalah suatu diagram yang menjelaskan tentang proses dari suatu bagian dari awal sampai akhir. Pada diagram ini akan dibahas secara detail tentang bagaimana program tersebut dapat berjalan. Activity diagram untuk SendSMS akan dibagi menjadi dua yaitu Compressi dan SendSMS. Dibawah ini activity diagram untuk SendSMS.

(7)

Input dari emulator

compressi

output compressi simpan dalam short

Ubah ke string

kirim

Gambar III - 4 Activity Diagram SendSMS

Diagram ini menjelaskan langkah-langkah yang terjadi dalam proses SendSMS. Penjelasannya sebagai berikut :

1. Menjalankan emulator (diwakilkan dengan tombol start)

2. Memasukkan input text yang kita inginkan lewat simulator tersebut

3. Input yang telah kita masukkan tadi akan mengalami proses kompresi yang proses detailnya akan dijelaskan dalam activity diagram Compess 4. Hasil dari proses kompresi, yaitu deretan angka, disimpan dalam suatu

variabel short. Hal ini karena variabel keluaran dari program ParsingKata adalah short, sehingga variabel penampung dalam program PhoneInput juga harus short.

5. Variabel short tadi harus diubah kedalam bentuk string. Alasannya karena metode value of yang digunakan untuk mengambil nilai dari variabel penampung tersebut hanya bisa menerima atribut string. Jika yang

Start

(8)

dikirimkan bukan string, maka penerima akan menerima hash code dan bukan input yang kita inginkan.

6. Mengirimkan deretan angka yang sudah diubah bentuknya ke dalam string.

7. Aktifitas dalam blok SendSMS telah selesai (diwakilkan dengan tanda End)

Sekarang kita akan bahas aktifitas apa saja yang terjadi di dalam blok Compressi. input kalimat dari TextBox Lakukan Parsing kata Lakukan parsing huruf

Cocokkan tiap huruf yang didapat dengan dictionary

Return 0 Keluarkan angka hasil perbandingan dengan dictionary dalam file penampung short

Ubah angka tersebut kedalam bentuk bit

Untuk bit yang genap : geser byte ke kanan sebanyak 8

Untuk bit yang ganjil : kurangi byte dengan byte pertama yang digeser ke kiri sebanyak 8

Masukan ke SendSMS

Gambar III - 5 Activity Diagram Compressi

(9)

Aktifitas yang terjadi di dalam blok Compressi adalah sebagai berikut : 1. Menjalankan emulator (diwakilkan dengan tombol Start)

2. Mengambil input kalimat dari TextField

3. Kalimat tadi kemudian mengalami proses parsing kata ketika dimasukkan ke program ParsingKata kemudian disimpan dalam suatu array.

4. Program Parsinghuruf yang dipanggil dalam program ParsingKata bertugas untuk memarsing kata yang ada dalam array menjadi huruf.

5. Kemudian kombinasi huruf tersebut dibandingkan dengan dictionary yang ada dalam program DictTable yang dipanggil dalam program ParsingHuruf.

6. Setelah itu terdapat dua buah kemungkinan. Yang pertama adalah kata tersebut tidak ada dalam dictionary sehingga program akan mengeluarkan nilai 0.

7. Kemungkinan kedua adalah kata tersebut ada dalam dictionary, maka program akan mengeluarkan indeks nilai sesuai dengan nilai yang ada dalam dictionary.

8. Karena nilai tersebut masih dalam bentuk integer, maka kita harus mengubahnya dalam bentuk bit sehingga kita bisa melakukan operator right-shift (>>>) dan left-shift (<<).

9. Kemudian dibuat sebuah bit yang disebut bit kedua (metode ini juga dipakai pada bit-bit genap) yang nilainya didapat dari nilai bit asli yang mengalami pergeseran ke kanan sebanyak 8 bit.

10. Untuk nilai bit yang pertama (metode ini juga dipakai pada bit-bit ganjil) didapat dari nilai bit asli yang dikurangi dengan nilai bit pertama yang digeser ke kanan sebanyak 8 bit.

11. Kemudian nilai tersebut akan menjadi input untuk program PhoneInput yang aktifitasnya telah dijelaskan pada activity diagram diatas.

(10)

3.2.1.5. Class Diagram SendSMS ParsingHuruf sisa : StringBuffer ketemu : boolean i, j : int dict : Vector temp, temp2 : String hasil : String

public static int huruf()

Dict Table dict : Vector

public static Vector getDict() SendSMS

display : Display cmExit, cmOk : Command form : PhoneInput tbClip : TextBox

public SendSMS() public void startApp() public void pauseApp() public void destroyApp() public void commandAction() public void exitMIDlet()

ParsingKata kata : String[ ] katabaru : String[ ] j, l, i, m : int kalimat : String b : short [ ] temp : String z : byte [ ] baru : short [ ]

public static short [ ] parser()

exception e PhoneInput display : Display

cmSend, cmCancel, cmExit : Command tfPhone : TextField

midlet : SendSMS msg : String

itemCancel, itemSend, itemExit : StringItem al : Alert adr : String smsPort : String m : short[ ] s : String public PhoneInput() public void itemStateChange() public void commandAction() public void run()

MIDlet

Gambar III - 6 Diagram Class SendSMS

Diagram class diatas menunjukkan class-class yang digunakan dalam SendSMS beserta dengan class-class, method, serta atribut-atribut dalam Java.

: menunjukkan class Java, attribut dan operation yang dimiliki oleh class Java. Kolom pertama menunjukkan nama class Java, kolom kedua menunjukkan attribut, dan kolom ketiga menunjukkan method dari class Java. Kolom attribut dan method dari class Java yang dikosongkan tidak menunjukkan tidak adanya attribut dan operation dari class Java.

(11)

Penjelasan dari attribut dan operation dari class Java tersebut di atas dapat dilihat dibagian lampiran. Class Java yang disebutkan di atas juga menggunakan beberapa package dan mewariskan beberapa class yang sudah didefinisikan di dalam J2ME.

3.2.2. UML untuk TerimaSMS

Seperti UML untuk SendSMS, UML untuk TerimaSMS juga mempunyai beberapa diagram seperti diagram pada SendSMS. Diagram-diagram itu adalah sebagai dijelaskan di bawah ini.

3.2.2.1. Use Case Diagram TerimaSMS

DictTable (from Use Cases)

Decompres s (from Use Cases)

us er TerimaSMS

(from Use Cases) Output Com pres s i

(from Use Cases)

Gambar III - 7 Use Case TerimaSMS

Dari use case diagram diatas terlihat bahwa terdapat beberapa class yang diperlukan pada saat penerima menerima SMS . Class-class tersebut antara lain :

1. Decompress, merupakan class yang mengubah deretan huruf yang diterima pada class TerimaSMS menjadi kalimat asal. Pada class ini pula dipanggil class DictTable yang menyimpan objek yang akan digunakan sebagai pembanding. Untuk proses detail yang terjadi pada class ini akan ditunjukkan pada activity diagram.

(12)

2. TerimaSMS, merupakan class utama pada penerimaan SMS. Pada class ini output dari SendSMS akan diterima dan output dari program dekompresi akan ditampilkan kepada penerima.

3. DictTable, adalah suatu class yang menyimpan objek yang telah disimpan sebelumnya dan digunakan sebagai pembanding.

Keterangan bagaimana proses yang terjadi pada class-class diatas dapat dilihat dalam diagram-diagram UML selanjutnya.

3.2.2.2. Sequence Diagram TerimaSMS

: Decompress : DictTable : TerimaSMS

input dari TerimaSMS

bandingkan dengan dict

kata has il perbandingan

kalim at as li

Gambar III - 8 Sequence Diagram TerimaSMS

Pada diagram ini dijelaskan tentang perpindahan data, serta input dan output dari masing-masing class dalam TerimaSMS.

(13)

3.2.2.3. Collaboration Diagram TerimaSMS

: Decompres s : DictTable

: TerimaSMS

2: bandingkan dengan dict

3: kata has il perbandingan

1: input dari Terim aSMS 4: kalim at as li

Gambar III - 9 Collaboration Diagram TerimaSMS

Collaboration diagram merupakan pengembangan dari sequence diagram. Pada diagram ini, selain diperlihatkan input dan output dari class-class pada TerimaSMS, juga diperlihatkan bagaimana urutan pengerjaan dari mulai input dari pengirim sampai dengan pengembalian pesan ke bentuk aslinya.

3.2.2.4. Activity Diagram TerimaSMS

Activity diagram untuk TerimaSMS dibagi menjadi blok Decompress dan TerimaSMS. Berikut ini akan dibahas terlebih dahulu aktifitas yang terdapat pada TerimaSMS.

(14)

output dari program decompress

menampilkan kalimat hasil penggabungan kata dari program decompress

input dari emulator

decompress

Gambar III - 10 Activity Diagram TerimaSMS

Langkah-langkah yang terjadi pada TerimaSMS adalah sebagai berikut : 1. Menjalankan program (diwakilkan dengan tanda Start).

2. Mengambil input dari emulator yang merupakan output dari SendSMS. 3. Input tadi dimasukkan dalam program decompress untuk diproses

sehingga didapat kalimat yang sama dengan kalimat asalnya.

4. Pada tugas akhir ini, kalimat aslinya tidak dapat langsung ditampilkan dalam emulator, sehingga output yang didapat (output ini yang tampil pada layar simulator) akan dimasukkan ke dalam salah satu JAVA Builder yaitu NetBeans untuk menampilkan kalimat aslinya.

5. Deretan angka tadi dimasukkan ke dalam NetBeans untuk mendapat kalimat yang tadi kita masukkan melalui simulator J2ME WTK 2.2

6. Mengakhiri simulasi (diwakilkan dengan tanda End).

Sekarang kita akan bahas aktifitas apa saja yang terdaji pada blok Decompressi .

Start

(15)

input dari TerimaSMS

ubah input dari string ke byte

Byte genap diges er ke kiri s ebanyak 8

Byte ganjil dibiarkan saja

gabungkan kedua byte dengan operasi logical OR

Sim pan hasil penggabungan dalam bentuk short

Bandingkan has il penggabungan dengan dictionary

input untuk TerimaSMS

Gambar III - 21 Activity Diagram Decompress

Langkah-langkah yang terjadi pada blok Decompressi sebagai berikut : 1. Menjalankan simulasi (diwakilkan dengan tanda Start)

2. Mengambil input dari SendSMS.

3. Input yang diambil tadi masih dalam bentuk string karena pada waktu mengirim, SendSMS mengirim outputnya dalam bentuk string, maka dari itu harus diubah terlebih dahulu menjadi bit.

4. Bit kelipatan genap yang didapat digeser ke kiri sebanyak 8 bit.

5. Bit kelipatan ganjil diambil begitu saja nilainya tanpa harus diubah-ubah terlebih dahulu.

6. Kemudian masing-masing pasangan bit (satu bit ganjil dan satu bit genap) digabungkan dengan menggunakan operasi logika OR (║).

7. Nilai yang didapat disimpan dalam suatu variabel short sehingga semua deretan angka 0 dan 1 pada bilangan bit tersebut dapat terakomodasi.

(16)

Misal : bit pertama : 11111111 dan bit kedua 00000000. Maka setelah kedua bit mengalami langkah 6, maka hasil yang didapat dalm bentuk short adalah 1111111100000000.

8. Kemudian hasil yang didapat dalam bentuk short tadi oleh program dengan sendirinya akan diubah menjadi nilai integer dan dalam program Decompress akan dibandingkan dengan dictionary dan ditampilkan hasilnya. Untuk hal ini, proses pemasukan input harus dilakukan secara manual ke dalam JAVA Builder NetBeans jika ingin mengetahui kalimat yang didapat cocok atau tidak dengan kalimat aslinya.

9. Output keluaran dari blok ini merupan input dari blok TerimaSMS yang langkah-langkahnya telah dijelaskan diatas.

3.2.2.5. Class Diagram TerimaSMS

DictTable dict : Vector

public static vector getDict()

Decompress dict : Vector str : String ketemu : boolean temp : int hasil_decode : short[ ] data : byte [ ]

public static String decompress()

MIDLET TerimaSMS display : Display alert : Alert tfPesan : TextBox thread : Thread conn : MessageConnection pesan : Message daftarKoneksi : String[ ] port : String karakter : String[ ] hilangkoma : String[ ] jumlahdata : int temp : int cmdKeluar : Command public TerimaSMS() public void startApp() public void pauseApp() public void destroyApp() public void commandAction() public void run()

public void notifyIncomingMessage() public void startNewThread()

Exception e

Gambar III - 32 Diagram class TerimaSMS

Diagram class diatas menunjukkan class-class yang digunakan dalam TerimaSMS beserta dengan class-class, method, serta atribut-atribut dalam Java.

(17)

Penjelasan dari attribut dan operation dari class Java tersebut di atas dapat dilihat dibagian lampiran. Class Java yang disebutkan di atas juga menggunakan beberapa package dan mewariskan beberapa class yang sudah didefinisikan di dalam J2ME.

Gambar

Gambar III - 1 Use Case SendSMS
Gambar III - 2 Sequence Diagram SendSMS
Table  : ParsingKata
Gambar III - 4 Activity Diagram SendSMS
+7

Referensi

Dokumen terkait

ini adalah data kualitatif yang berupa kata-kata yang diperoleh dari sumber. data secara langsung.Sumber data terdapat dua jenis yaitu sumber

Data dalam penelitian ini berupa kata, kalimat dan dialog yang mengandung nilai pendidikan yang terdapat dalam teks novel Luruh Kuncup Sebelum Berbunga.. Menurut jenisnya data

Input berupa gerakan pada joint dengan nilai input yang sama seperti pada sketch servo. Input berupa grafik input ideal pada

Dalam pembuatan desain logo Sinar Harapan Florist penulis menggunakan jenis huruf Georgia dan Branboll Fet pada kata SHF untuk menegaskan dan kata Sinar Harapan Florist

Sesuai dengan tabel di atas diperoleh untuk jarak stub (dStub) = 17,3 mm, nilai frekuensi terendah yang ditunjukan adalah 2,37 GHz, maka dilakukan penyesuaian

Dari hasil kombinasi yang dilakukan terhadap prinsip solusi yang terdapat pada tabel 3.4 dapat dihasilkan beberapa alternative varian, kemudian alternative-alternatif varian

Rangkaian huruf dalam sebuah kata atau kalimat bukan saja bisa berarti suatu makna yang mengacu kepada sebuah objek atau gagasan, tetapi juga memiliki

Pertanyaan yang tentu muncul adalah bagaimana memroses kata-kata dalam SMS sehingga dari setiap kata dapat dibentuk instans yang memiliki nilai atribut yang sesuai dengan format