Upload
dinhnhu
View
214
Download
0
Embed Size (px)
Citation preview
3
BAB III ANALISIS DAN PERANCANGAN
Pada bab ini akan dijelaskan mengenai analisis dan perancangan library Yahoo!
Messenger pada platform Android. Analisis ini meliputi deskripsi umum dari sistem,
arsitektur perangkat lunak.
3.1 Arsitektur Perangkat lunak
Perangkat lunak yang akan dibangun merupakan suatu library yang berisi berbagai
macam fungsi yang diperlukan untuk berkomunikasi dengan server Yahoo!
Messenger. Library ini akan diberi nama AYmsg. Library ini akan dikumpulkan
dalam bentuk package sehingga programmer dapat dengan mudah memanfaatkan
library ini untuk membuat suatu Yahoo! Messenger client pada platform Android.
Library ini akan menggunakan protokol TCP/IP untuk mengirimkan paket data ke
server Yahoo! dengan alamat scs.msg.yahoo.com port 5050. Perangkat lunak ini
terhubung ke internet melalui fasilitas komunikasi data yang telah disediakan oleh
perangkat keras. Fasilitas tersebut dapat berupa GPRS, 3G, Ethernet, WiFi dan
sebagainya. Perangkat lunak yang akan dibangun akan memanfaatkan library yang
III-1
Gambar 3.1: Arsitektur perangkat lunak
III-2
telah disediakan oleh platform untuk mengirimkan paket-paket TCP/IP. Sehingga
tidak peduli jenis komunikasi yang digunakan, aplikasi ini tetap menggunakan cara
yang sama untuk mengirimkan data ke server. Library tersebut nantinya akan
meminta user untuk memilih jenis koneksi yang ingin digunakan. Secara umum,
arsitektur perangkat lunak yang akan dibangun dapat dilihat pada Gambar 3.1.
Secara lebih mendetail arsitektur library yang akan dibuat dipisahkan menjadi dua
bagian. Seperti yang dapat dilihat pada Gambar 3.2. Bagian tersebut terdiri dari:
� Client Side Library. Merupakan bagian library yang langsung digunakan oleh
pengembang. Bagian library ini berisi fungsi-fungsi untuk berkomunikasi
dengan Service yang merupakan layer di bawahnya.
� Service Side Library. Service side library merupakan bagian background dari
library ini yang bertindak sebagai inti library yang membuka koneksi dan
berkomunikasi dengan server Yahoo! Messenger. Nama service dipilih karena
kelas utama dari library merupakan jenis building-block tipe Service.
Gambar 3.2 Menunjukkan layer dari library yang akan di bangun. Layer paling bawah
adalah service, layer ini berkomunikasi dengan sistem dan paling atas adalah client
library yang secara langsung digunakan oleh user.
Gambar 3.2 : Arsitektur layer library AYMsg
III-3
3.2 Analisis Implementasi Library pada AndroidPada bagian ini akan dijelaskan bagaimana implementasi library yang akan dibangun
pada platform Android.
3.2.1 ServicePada sub bab 2.1.2 telah dijelaskan bagaimana Building Block aplikasi terbagi menjadi
4 bagian. Activity, Intent Receiver, Service dan Content Provider. Masing-masing blok
tersebut memiliki karakteristik dan life-cycle yang berbeda-beda. Untuk keperluan
Tugas Akhir ini, library akan memanfaatkan building block Service. Service dipilih
karena memiliki life-span yang paling lama. Proses Service akan berjalan terus pada
background meskipun aplikasi yang menghidupkan atau memanggilnya berada di
background.
Kehidupan service yang terus-menerus diperlukan untuk menjaga koneksi ke server
Yahoo!. Apabila library memanfaatkan Activity sebagai komponen untuk membentuk
koneksi ke server Yahoo!, maka pada saat aplikasi berada di background koneksi akan
terputus. Service pada Android memang dibuat untuk mengakomodasi fungsi-fungsi
yang terus berjalan tetapi wujudnya tidak perlu selalu dilihat oleh user aplikasi.
Komponen Service yang digunakan hanya semata-mata untuk melayani koneksi ke
server saja. Service tidak bisa memiliki tampilan ke user. Untuk membuat tampilan
yang berinteraksi dengan server maka dibutuhkan kelas Activity. Kelas Activity
merupakan interface dimana user dapat berinteraksi dengan sistem. Aplikasi yang
memanfaatkan library ini nantinya akan mengimplementasi Activity sebagai interface
dan library AYmsg yang nantinya akan mengurus komunikasi dengan kelas Service
sebagai penyedia koneksi.
Namun terdapat kekurangan dalam menggunakan kelas Service. Tidak seperti
III-4
pemrograman Java pada umumnya, biasanya suatu aplikasi berjalan dalam satu proses
saja kecuali program tersebut memang menciptakan proses baru. Service pada
Android dapat berjalan pada proses yang berbeda sehingga pemanggilan method dari
kelas lain yang biasanya dapat langsung dilakukan, sekarang harus melalui IPC (Inter
Process Communication). Pemrograman IPC memiliki tingkat kesulitan yang lebih
tinggi dibanding dengan pemrograman biasa. Untuk menyederhanakan pemrograman
IPC tersebut, Android memiliki metode yang disebut dengan AIDL (Android
Interface Definition Language). Dengan metode ini kita membuat kelas seperti
layaknya kelas seperti biasa lalu SDK Android akan menerjemahkan kelas tersebut
menjadi kelas yang menggunakan IPC.
Meskipun pemrograman IPC pada Android telah dimudahkan oleh AIDL, tetapi
metode ini masih memiliki beberapa kekurangan. Parameter fungsi yang dibuat dalam
AIDL masih terbatas pada :
� Tipe primitif java seperti int, boolean dll.
� Kelas-kelas berikut:
� String.
� List. Elemen pada list harus berupa tipe dalam daftar ini.
� Map. Saat ini hanya didukung map dengan tipe generik saja.
� CharSequence. Kelas yang digunakan pada TextView di Android.
� Interface AIDL lain yang telah dihasilkan oleh SDK.
� Kelas kostumisasi yang di kembangkan oleh pengembang tetapi harus
melakukan implement Parcelable protocol. Kelas ini nantinya akan di passing
by value bukan by reference.
III-5
3.2.2 Penggunaan Callback Dalam pemisahan antara Service dengan Activity, perlu adanya suatu metode untuk
memberitahukan user tentang event yang terjadi. Semua pesan dari server pertama
kali selalu diterima oleh bagian Service. Pesan itu lalu di parsing dan dikirimkan
kembali ke sisi user library melalui fungsi yang telah dibuat menggunakan AIDL.
Pesan yang di parsing akan menghasilkan pasang key dan value. Informasi key dan
value tersebut lalu dikirimkan ke sisi client untuk diolah. Alasan bahwa pasangan key
dan value tersebut tidak diolah di sisi Service adalah keterbatasan parameter yang
dapat dikirimkan melalui AIDL. Oleh karena itu, informasi key dan value tersebut
diolah di sisi library bagian client.
Setelah diolah, library harus memberitahukan user tentang event yang terjadi dan
memanggil fungsi yang sesuai untuk menangani fungsi tersebut. Fungsi-fungsi
tersebut adalah fungsi callback. Fungsi callback ini dapat diimplementasi oleh user
library dan akan dieksekusi oleh library pada event tertentu.
3.2.2.1 Fungsi Synchronous dan Asynchronous.
Semua fungsi yang tidak membutuhkan respon dari server Yahoo! Messenger bersifat
synchronous atau blocking. Contoh fungsi ini antara lain adalah fungsi untuk
mengirimkan pesan dan fungsi untuk mengubah status. Fungsi tersebut akan bersifat
blocking sampai paket berisi pesan tersebut berhasil dikirimkan. Tidak bersifat
blocking sampai pesan tersebut diterima oleh user tujuan. Hal ini karena dalam
protokol Yahoo! Messenger sendiri tidak ada mekanisme paket Acknowledgment
bahwa paket pesan tersebut sudah diterima oleh pengirim.
Fungsi-fungsi lain kebanyakan bersifat Asynchronous atau tidak bersifat blocking.
Salah satu contoh adalah fungsi untuk login. Dari sisi client side library. Fungsi
III-6
tersebut akan meminta server untuk melakukan proses otentikasi, tetapi fungsi
tersebut tidak mengembalikan nilai apakah proses otentikasi tersebut telah berhasil
atau tidak. Yang dilakukan oleh sisi service adalah melanjutkan proses otentikasi dan
memanggil fungsi callback secara asynchronous yang bersesuaian dengan hasil proses
otentikasi. Misalkan proses otentikasi berhasil library akan memanggil fungsi
callback onLoginSucceded() dan bila gagal, library akan memanggil fungsi callback
onLoginFailed().
Method Asynchronous dipilih karena beberapa alasan:
� Keterbatasan platform Android. Android diciptakan sebagai platform yang
sangat responsif. Setiap aplikasi dimonitor oleh Activiy Manager dan Window
Manager System Services. Android akan memunculkan pesan ANR
(Application Not Responding) Gambar 3.3, apabila terjadi kondisi sebagai
berikut:
� Aplikasi tidak merespon input selama 5 detik
� IntentReceiver tidak selesai dalam waktu 10 detik
Gambar 3.3: Gambar dialog ANR [DOC08]
III-7
� Merupakan rancangan yang cocok untuk pengembangan aplikasi pada
Android. Karena keterbatasan di atas, seringkali programmer harus membuat
suatu method call menjadi asynchronous yaitu dengan cara memasukkan
fungsi tersebut ke dalam thread. Dari sisi pengembangan, library ini lebih
mudah apabila diimplementasi dengan metode asynchronous. Apabila fungsi
tersebut dibuat synchronous maka programmer harus membuatnya menjadi
asynchronous kembali. Oleh karena itu dengan dipilihnya bentuk fungsi
asynchronous maka akan memudahkan user untuk melakukan perancangan
pada aplikasi sehingga menghindari pesan ANR tersebut.
3.3 Analisis Implementasi Protokol Yahoo! MessengerPada bagian ini akan dijelaskan bagaimana sistematika penelitian yang telah
dilakukan dalam mempelajari protokol Yahoo! Messenger. Subab awal akan
menjelaskan struktur umum dari paket Yahoo! Messenger dan memperlihatkan
beberapa perubahan dari protokol sebelumnya (Protokol versi 12) yang telah
dijelaskan pada bagian dasar teori. Proses analisa protokol Yahoo! Messenger didapat
melalui proses pembacaan dokumentasi yang tersedia, packet capturing dan
mempelajari dari source code program yang menggunakan protokol Yahoo!
Messenger.
Proses packet capturing diperlukan dalam pembuatan Tugas Akhir ini adalah karena
dokumentasi lengkap yang tersedia saat ini adalah versi 12 (YMSG12), sedangkan
versi protokol yang digunakan dalam Tugas Akhir ini adalah versi 15 (YMSG15).
Untuk itu, perlu dipelajari perubahan-perubahan yang terdapat dalam protokol ini.
Selain itu, dengan proses packet capturing dapat melengkapi dokumentasi untuk jenis
service yang tidak dituliskan dalam dokumentasi.
III-8
3.3.1 Struktur Paket Yahoo! MessengerSeperti yang telah dijelaskan pada dasar teori, Yahoo! Membuat protokol sendiri
untuk layanan messenger miliknya. Protokol tersebut berjalan di atas protokol TCP/IP
yang telah ada. Untuk implementasi protokol tersebut, Yahoo! membuat spesifikasi
struktur paket yang dapat dilihat pada Gambar 2.2. Untuk membuat implementasi
pada Android, maka dibuat suatu socket yang digunakan untuk berkomunikasi dengan
server Yahoo!. Melalui socket ini, library akan mengirimkan dan menerima paket
dengan struktur tersebut.
Sampai saat ini, protokol Yahoo! Messenger sudah mencapai versi 15 (YMSG15).
Secara umum bentuk paket dari versi ini masih sama, hanya nilai versi pada bagian
version diisi oleh nilai 15 (0x000F). Struktur paket ini dapat dilihat pada Gambar 3.4.
Paket Yahoo! Messenger ini berdiri di atas paket-paket TCP/IP. Dalam
implementasinya, struktur paket Yahoo! Messenger ini terletak pada bagian TCP Data.
Dalam penelitian Tugas Akhir ini, beberapa kakas digunakan untuk menganalisa
paket-paket yang dikirim dan diterima melalui jaringan. Salah satu kakas yang
digunakan adalah Wireshark. Wireshark adalah kakas jaringan yang dapat
melakukan perekaman dan penganalisaan trafik data dalam jaringan. Wireshark dalam
sistem operasi windows mirip dengan kakas bernama ethereal.
Struktur paket ini merupakan hasil temuan dalam Tugas Akhir ini. Header tetap
memiliki panjang 20 byte. Perbedaan dari dokumentasi adalah versi protokol kini
menjadi 15 dan terdapat 2 byte berisi 0x0000 setelah field version.
Gambar 3.4: Struktur paket Yahoo! Messenger 15 (YMSG15)
1 2 3 4 5 6 7 8Packet ID YMSG Version 0x0000
Length Service StatusSession ID Data
III-9
Kakas ini sangat membantu dalam menganalisis paket-paket TCP yang dikirimkan
atau yang diterima dari jaringan. Dalam kakas ini juga terdapat filter yang dapat
melakukan seleksi terhadap paket-paket Yahoo! Messenger. Contoh paket Yahoo!
Messenger dalam suatu paket TCP dapat dilihat pada Gambar 3.6.
Gambar tersebut menunjukkan paket TCP yang berisikan paket Yahoo! Messenger
yang dikirimkan oleh client ke server. Paket Yahoo! Messenger tersebut merupakan
paket Yahoo_Auth yang digunakan untuk memulai proses otentikasi dengan meminta
challenge string. Keterangan lebih lanjut dapat dilihat pada Lampiran C.
3.3.2 Pemrosesan Paket Yahoo! MessengerBeberapa paket Yahoo! Messenger dapat terletak dalam satu paket TCP atau
sebaliknya, satu paket Yahoo! Messenger dapat terletak dalam beberapa paket TCP.
Gambar 3.5: Wireshark. Kakas analisis paket pa da jaringan
Gambar 3.6: Dum p Paket TCP berisi paket Yahoo! Messenger
III-10
Seperti yang telah dijelaskan pada sub bab 2.3 bahwa TCP/IP terbagi menjadi
beberapa layer. Pada layer Application, programmer membaca data dari layer
dibawahnya (Transport layer) seperti membaca pada stream biasa. Layer ini
menyembunyikan kerumitan yang terjadi melalui abstraksi layer tersebut.
Meskipun struktur paket telah tersedia dan telah disedikan metode untuk membaca
data pada TCP, perlu dibuat mekanisme parsing khusus untuk paket-paket Yahoo!
Messenger. Hal ini bertujuan untuk memudahkan pembacaan field pada paket dan
penanganan khusus bila terdapat kesalahan pemrosesn paket. Selain itu, bagian data
pada paket Yahoo! Messenger terdiri dari pasangan key dan value yang dipisahkan
oleh karakter tertentu. Tidak terdapat informasi berapa panjang masing – masing field
key dan value. Oleh karena itu, mekanisme ini juga dapat membantu dalam membuat
algoritma membaca paket Yahoo! Messenger tersebut. Mekanisme tersebut dapat
digambarkan dalam state machine pada Gambar 3.7 yang dibuat menggunakan notasi
Statechart diagram milik Unified Markup Language (UML).
Untuk pemisahan antara bagian key dan value, terdapat karakter pemisah 0xC0 dan
0x80. Maka setiap kali bertemu dengan karakter pemisah tersebut, kita harus
menyimpan informasi data sebelumnya sebagai key atau value. Terdapat beberapa
kemungkinan error seperti kondisi dimana saat akan membaca key, mesin malah
menemukan karakter pemisah lagi, sehingga 2 karakter pemisah ditemukan. Hal ini
menjadi tidak benar karena nilai key untuk data tersebut adalah kosong. Tetapi untuk
kasus serupa bagi value, hal tersebut diperbolehkan. Dalam beberapa kasus ditemukan
bahwa terdapat field yang memiliki key tetapi memiliki value yang kosong.
III-11
Gambar 3.7: State Machine u n t uk m e m proses paket Yahoo! Messenger
III-12
State awal dalam state machine ini adalah koneksi antara client dengan server Yahoo!
Messenger telah terbentuk dan siap membaca paket yang datang. State dalam mesin
ini dijelaskan sebagai berikut :
1. Reading YMSG. Pada state ini, mesin membaca 4 byte data dan
membandingkan dengan string “YMSG”. Apabila data yang dibaca cocok
dengan string tersebut maka mesin berpindah state menjadi Reading Header.
Apablia string yang dibandingkan tidak cocok, 4 byte berikutnya akan dibaca
untuk dibandingkan kembali. Hal ini berjalan terus selama masih ada data.
2. Reading Header. Pada state ini mesin akan membaca dan menyimpan 2 byte
berisi versi protokol Yahoo! Messenger yang digunakan. Setelah menyimpan
data tersebut, mesin akan men-skip 2 byte berisi informasi tidak penting. Lalu
mesin akan membaca 2 byte berisi panjang data yang dikirimkan dalam paket
Yahoo! Messenger ini. Setelah menyimpan informasi tersebut maka mesin
akan membaca 2 byte dan menyimpan informasi tersebut sebagai Service Id
dan melanjutkan ke state Reading Status. Selanjutnya, pada state ini 2 byte
akan disimpan sebagai nilai Status lalu mesin akan membaca 4 byte berisi
Session Id. Session Id merupakan id unik yang dihasilkan oleh server Yahoo!
Messenger dan nilainya dapat berubah-ubah selama proses komunikasi.
Setelah menyimpan Session Id ini, mesin berpindah ke state berikutnya yaitu
Prepare Reading key.
3. Prepare Reading Key. Pada tahap ini, mesin siap menerima data. Bersiap
terhadap kemungkinan error yaitu menerima karekter 0xc0 lalu 0x80. Hal ini
menimbulkan error karena setelah Session Id seharusnya nilai Key bukan
karakter pemisah. Mesin membaca byte berikutnya lalu apabila data yang
III-13
dibaca adalah 0xc0 maka mesin akan berpindah state menjadi Readed 0xc0
err key possible dan apabila menerima karakter lain selain 0xc0 maka mesin
berpindah state menjadi Reading Key.
4. Readed 0xC0 err Key Possible. Adalah state dimana pada tahap sebelumnya
data yang dibaca adalah 0xc0, berpotensi karakter pemisah yang seharusnya
tidak ada setelah informasi Session Id. Mesin membaca byte berikutnya dan
membandingkan apakah karakter berikutnya adalah 0x80 atau bukan. Bila
karakter yang diterima adalah 0x80 maka terjadi error dan mesin berpindah
state menjadi Error. Apabila mesin menerima karakter selain 0x80 maka byte
sekarang dan sebelumnya merupakan bagian dari kunci dan mesin berpindah
state menjadi Reading Key.
5. Reading Key. State ini adalah state dimana mesin membaca kunci yang
diakhiri oleh karakter pemisah 0xc0 dan 0x80. Apabila menemukan karakter
selain 0xc0 maka mesin akan menandai bahwa posisi ini dalam bufer
merupakan posisi mula kunci dan terus membaca karakter berikutnya. Apabila
mesin mendapakan karakter 0xc0 maka mesin berpindah state menjadi
Readed 0xc0 for key.
6. Readed 0xc0 for key. Pada state ini, mesin sebelumnya mendapatkan 0xc0.
Kondisi dimana berpotensi karakter berikutnya adalah karakter 0x80 atau
pemisah antara key dan value. Oleh karena itu, apabila karakter 0x80 maka
mesin berpindah state menjadi Prepare Reading Value. Apabila mesin
menerima karakter selain 0x80 maka byte yang dibaca merupakan bagian dari
informasi key maka state berpindah kembali pada state Reading Key.
7. Prepare Reading Value. Pada state ini, mesin telah berhasil membaca satu
III-14
key maka mesin menyimpan data key dari posisi yang ditandai pada state
Reading Key lalu membaca satu byte lagi. Sama seperti state Prepare Reading
Key, pada state ini terjadi kemungkinan error dimana mesin mungkin
menemukan karakter 0xC0 dan 0x80. Apabila mesin menerima karakter 0xC0
maka mesin akan berpindah state menjadi Readed 0xC0 Err Val Possible. Dan
apabila mesin membaca selain karakter 0xC0 maka mesin akan berpindah
state menjadi Reading Value.
8. Readed 0xc0 Err Val Possible. Sama seperti pada state Readed 0xC0 Err Key
Possible, apabila mesin membaca byte berisi 0x80 maka mesin akan berpindah
state menjadi Reading Key dimana ditemukan kembali 0xC0 dan 0x80. Karena
dalam penelitian, nilai value boleh kosong Apabila mesin menemukan data
selain 0x80 maka data tersebut merupakan bagian dari value dan berpindah
state menjadi Reading Value.
9. Reading Value. State ini serupa dengan state Reading Key, apabila mesin
menemukan karakter selain 0xC0 maka data tersebut akan menandai posisi
saat ini sebagai posisi awal Value yang nantinya akan digunakan untuk
menandai posisi awal string Value. Apabila karater yang di baca adalah 0xC0
maka mesin akan berpindah state menjadi Readed 0xC0 for Value.
10. Readed 0xc0 for Value. State ini juga sama dengan state Readed 0xC0 for
Key dimana mesin mendapat karakter 0xC0 sebelumnya dan memiliki potensi
untuk menerima 0x80 sebagai kombinasi karakter pemisah antara value dan
key. Apabila mesin menerima karakter selain 0x80 maka informasi tersebut
bukan merupakan karakter pemisah melainkan bagian dari key dan mesin akan
kembali ke state Reading value. Apablia mesin menerima karakter 0x80 maka
III-15
data tersebut merupakan karakter pemisah dan mesin akan berpindah state
menjadi End Key Value Pair.
11. End Key Value Pair. Pada state ini mesin mengetahui bahwa sebelumnya ia
telah menemukan karakter pemisah dan informasi sebelum pemisah tersebut
merupakan informasi value. Mesin akan menyimpan string dari posisi yang
disimpan pada state Reading Value minus karakter pemisah sebagai informasi
value. Pada state ini mesin akan membandingkan apakah jumlah data yang
dibaca masih ditambah dua karakter adalah lebih kecil dari panjang data (data
+ 2 < length). Data yang dibaca ditambahkan 2 karena berdasarkan hasil
penelitian di byte-byte akhir sering terdapat karakter kosong yang tidak
menyimpan informasi apa-apa. Oleh karena kemungkinan potensi berikutnya
adalah ditemukannya karakter pemisah, maka nilai 2 diambil dari jumlah
karakter pemisah (0xC0 0x80). Apabila jumlah masih lebih kecil, maka mesin
berpindah ke state Prepare Reading key untuk membaca pasangan key-value
berikutnya. Apabila jumlah data yang dibaca lebih besar atau sama dengan
informasi panjang paket maka proses pembacaan paket tersebut selesai dan
mesin berpindah ke state Reading YMSG untuk membaca paket berikutnya.
Apabila terjadi kesalahan dalam komunikasi jaringan atau koneksi terputus,
maka external event ini akan membuat mesin berpindah state menjadi final
state dan keluar dari loop.
12. Error, adalah state dimana terjadi kesalahan dalam pembacaan paket. Mesin
akan melakukan permbersihan buffer lalu mengembalikan ke state awal
Reading YMSG dan memberi notifikasi error.
III-16
3.4 Analisis Kebutuhan Perangkat LunakDalam pembahasan analisis kebutuhan perangkat lunak ini akan dibahas beberapa
kebutuhan fungsional dan kebutuhan non-fungsional dari library yang akan dibangun
sesuai dengan hasil dari proses analisis terhadap kebutuhan yang telah dilakukan.
Kebutuhan fungsional merupakan kebutuhan yang berhubungan langsung dengan
fungsi dari library ini. Sedangkan kebutuhan non-fungsional adalah kebutuhan yang
tidak secara langsung berhubungan dengan fungsi utama dari library yang akan
dibuat.
3.4.1 Spesifikasi FungsionalFungsi utama dari library yang akan dibangun adalah menyediakan fungsi dan
prosedur yang digunakan untuk berinteraksi dengan server Yahoo! Messenger. Selain
itu library ini menyediakan fungsi call-back yang akan dieksekusi ketika suatu event
terjadi. User dapat memanfaatkan fungsi call-back tersebut untuk membuat suatu
aplikasi client. Sebagai contoh apabila terdapat pesan baru yang masuk, maka library
ini akan melakukan eksekusi suatu fungsi call-back penerima pesan. User dapat
mengisi fungsi call-back tersebut dengan kode- kode untuk menampilkan pesan
tersebut. Spesifikasi fungsional library AYmsg dapat dilihat pada Tabel 3.1.
3.4.2 Spesifikasi Non-FungsionalSelain kebutuhan fungsional, library ini juga memiliki aspek non-fungsional yang
mendukung spesifikasi fungsional. Antara lain
� User dapat menggunakan library dengan mudah.
� Library harus dapat mendukung segala jenis koneksi internet yang didukung
oleh hardware (3G, Wifi, GPRS, Edge dll).
III-17
Tabel 3.1 : Spesifikasi fungsional da ri library AYmsg
No. Fungsi Keterangan
1 Login Melakukan proses otentikasi ke server Yahoo! dengan menggu-nakan username dan password dari akun yang terintegrasi de-ngan layanan Yahoo! lainnya. Fungsi ini merupakan fungsi uta-ma yang harus terlebih dahulu dieksekusi sebelum fungsi-fung-si lain dapat digunakan.
2 Mengirim pesan Melakukan pengiriman pesan teks ke user lain.
3 Menerima pesan Melakukan penerimaan pesan teks yang dikirimkan oleh user lain.
4 Mengubah status Melakukan perubahan status user baik menggunakan status yang telah ditentukan maupun status yang diketikkan oleh user.
5 Mendapatkan daftar teman (buddy list)
Mendapatkan daftar teman yang dikirim dari server Yahoo!yang akan digunakan untuk mengirimkan pesan.
6 Menambahkan teman Menambahkan user lain ke dalam daftar teman yang disimpan di server.
7 Menghapus teman Menghapus user lain dari daftar teman.
8 Menambahkan grup Menambahkan grup baru yang berisi daftar teman-teman yang memiliki kesamaan.
9 Menghapus grup Menghapus suatu grup yang telah ada sebelumnya.
10 Menambahkan teman ke dalam grup
Menambahkan user yang telah menjadi teman ke dalam grupyang telah tersedia.
11 Menghapus teman da-lam suatu grup
Menghapus keanggotaan teman dalam suatu grup tertentu.
12 Bergabung ke dalam conference
Bergabung ke dalam conference dimana dalam suatu ruang conference terdapat beberapa user yang dapat saling bertukar pesan secara bersamaan.
13 Meninggalkan conference
Keluar dari ruang conference.
14 Mengirim pesan ke ru-ang conference
Mengirimkan pesan ke dalam suatu ruang conference dimana user telah tergabung di dalamnya.
15 Menerima pesan dariruangan conference
Menerima pesan yang dikirimkan user lain ke ruangconference.
III-18
3.5 Diagram Use CasePada bagian ini akan dijelaskan tentang rancangan library yang akan digunakan.
Bagian analisis akan menggunakan bantuan notasi-notasi Unified Markup Language
(UML). Perancangan library ini tidak akan mengikuti sepenuhnya Unified Process,
tetapi menggunakan kakas-kakas pada UML untuk menggambarkan bagaimana
library yang akan dibangun.
3.5.1 Use Case utama
Library secara umum tidak bisa berjalan tanpa ada aplikasi yang menggunakannya.
Oleh karena itu Use case di atas adalah suatu kasus dimana sebuah aplikasi
menggunakan library AYmsg. Dalam kenyataannya, Tugas Akhir ini lebih berfokus
pada pembuatan library AYmsg tersebut dan aplikasi yang dibuat hanya bertujuan
untuk melakukan pengujian semua fungsi pada library ini.
3.5.1.1 Definisi Aktor
Aktor dalam use case ini hanya dua yaitu:
Gambar 3.8: Use case u ta ma library AYmsg
III-19
� User. User adalah pengguna aplikasi yang memanfaatkan library AYmsg
untuk melakukan pengujian. Secara tidak langsung, melalui aplikasi tersebut
user akan memanggil fungsi-fungsi yang terdapat pada library AYmsg.
� Yahoo! Messenger server. Merupakan server Yahoo! Messenger dimana
library akan mengirimkan dan menerima informasi ke server ini.
Apabila terdapat kalimat “user lain” dalam bagian analisis ini, kalimat tersebut bukan
secara khusus bermaksud user lain yang menggunakan aplikasi atau library ini,
melainkan user Yahoo! Messenger lain yang bisa mengakses sever melalui aplikasi ini
atau aplikasi messaging client lainnya.
3.5.2 Narasi Use Case
Tabel 3.2 : Tabel na rasi Use case
No. Elemen Keterangan
1 Nama Login & Logout
Deskripsi Melakukan proses login dan logout ke sisi server.
Prekondisi -
Proses User memasukkan Yahoo! Id dan Password.
Kondisi Akhir Apabila User Id dan Password dapat diotentikasi oleh server maka user dapat masuk ke dalam sistem. Apabila User dan password tidak cocok, user akan mendapatkan notifikasi dari sis-tem. Setelah berhasil melakukan proses otentikasi, user dapat mengakhiri sesi dengan melakukan logout.
2 Nama Manajemen Daftar Teman
Deskripsi Mendapatkan, Menambahkan dan menghapus daftar teman.
Prekondisi User telah berhasil login.
Proses Menambahkan atau menghapus suatu user ke dalam atau dari daftar teman.
Kondisi Akhir User masuk atau terhapus dari daftar teman.
III-20
No. Elemen Keterangan
5 Nama Bertukar Pesan
Deskripsi Mengirimkan pesan ke user lain, dan mendapatkan pesan yang dikirimkan oleh user lain, baik dalam conference maupun dalam chat biasa.
Prekondisi User telah berhasil login.
Proses Mengirimkan pesan ke user lain melalui server Yahoo! Mes-senger.
Kondisi Akhir User mengirimkan pesan ke user lain melalui server Yahoo!Messenger.
6 Nama Mengubah Status
Deskripsi Mengubah status user, baik memakai status yang telah didefini-sikan oleh protokol maupun status yang user ketikkan.
Prekondisi User telah berhasil login.
Proses Mengirimkan informasi status baru ke server.
Kondisi Akhir Status user telah ter-update.
7 Nama Manajemen Grup
Deskripsi Memasukkan user ke dalam grup tertentu atau menghapus ke-anggotaan user pada grup tertentu.
Prekondisi User telah berhasil login, user yang ingin ditambahkan atau di-hapus telah termasuk dalam daftar teman.
Proses Memasukkan atau menghapus user dari atau ke dalam grup ter-tentu.
Kondisi Akhir User lain memiliki keanggotaan dalam suatu grup atau keanggo-taan user lain yang telah ada menjadi terhapus.
8 Nama Manajemen Conference
Deskripsi Membuat, bergabung, keluar dan mengirimkan invitasi terhadap suatu ruangan conference yang terdiri oleh satu atau banyak user lain.
Prekondisi User telah berhasil login.
Proses User mengirimkan perintah ke server untuk bergabung ke dalam ruangan conference.
Kondisi Akhir User tergabung dalam ruangan conference.
III-21
3.6 Perancangan KelasPada bagian ini akan dijelaskan tentang perancangan kelas secara umum yang akan
dipakai dalam pembuatan library AYmsg ini. Fokus utama dalam pembuatan Tugas
Akhir ini adalah pengembangan library Yahoo! Messenger pada platform Android.
Tetapi dalam pengerjaan Tugas Akhir ini akan dibuat suatu aplikasi sederhana yang
tujuan utamanya adalah untuk menguji fungsionalitas library tersebut. Oleh karena itu
bagian analisis dan perancangan kelas akan dibagi menjadi dua bagian agar terlihat
bagaimana pembagian struktur library dan aplikasi yang akan dibangun.
3.6.1 Diagram Kelas Analisis Bagian Service Library
Pada bagian ini akan dijelaskan kelas-kelas yang termasuk dalam kategori Service
library, yaitu library yang berisi fungsi untuk berkomunikasi dengan server Yahoo!
Messenger. Secara umum hubungan kelas-kelas pada Service Library dapat dilihat
pada Gambar 3.9.
3.6.1.1 Penjelasan Kelas Tahap Analisis Bagian Service Library
Kelas-kelas yang akan dibangun pada aplikasi dan library ini adalah sebagai berikut :
Gambar 3.9: Diagra m kelas analis Service Library
III-22
1. Client library. Kelas ini berisi fungsi-fungsi yang digunakan untuk
berinteraksi dengan service.
2. Service library. Kelas ini berisi fungsi-fungsi yang digunakan untuk
berinteraksi dengan server Yahoo! Messenger.
3. Service. Kelas ini merupakan kelas yang berinteraksi dengan server dengan
memanfaatkan kelas Service Library.
4. Callback Client. Merupakan kelas yang akan dipanggil apabila terjadi event
tertentu pada service.
5. Interface Callback. Merupakan interface fungsi callback yang digunakan
untuk berkomunikasi dengan kelas client library.
6. Interface Service. Merupakan interface yang digunakan untuk berkomunikasi
dengan kelas AYmsgService.
3.6.2 Diagram Kelas Analisis Bagian Client Library
Pada bagian ini akan dijelaskan kelas-kelas yang termasuk dalam kategori Client
Library, yaitu kelas yang langsung berhubungan dengan aplikasi yang memanfaatkan
library ini. Secara umum, hubungan kelas-kelas pada Client Library dapat dilihat
pada Gambar 3.10.
Gambar 3.10: Diagra m kelas analis Client Library
III-23
3.6.2.1 Penjelasan Kelas Tahap Analis Bagian Client Library
1. Interface callback. Merupakan interface yang digunakan service untuk
berkomunikasi dengan kelas client library.
2. GUI Client. Merupakan kelas yang digunakan memberikan tampilan dimana
user dapat berinteraksi langsung dengan aplikasi atau library ini
3.6.3 Diagram Kelas Analisis Lengkap Library AYmsgDiagram kelas analisis ini akan menunjukkan bagaimana kedua bagian Service
library dan Client library saling berinteraksi. Diagram kelas ini dapat dilihat pada
Gambar 3.11.
Kelas Callback client akan dipanggil oleh bagian Service melalui kelas Interface
Callback dan kelas Client library digunakan untuk berkomunikasi dengan bagian
Service dari library ini.
3.7 Perancangan KelasPada bagian ini akan dijelaskan perancangan kelas-kelas yang akan dibuat
Gambar 3.11: Interaksi kelas-kelas pada Service da n Client library
III-24
berdasarkan analisis kebutuhan library. Seperti pada bagian kelas analisis, bagian
perancangan ini akan dibagi menjadi dua bagian. Bagian pertama akan dijelaskan
perancangan kelas-kelas yang termasuk ke dalam kategori Sevice library dan pada
bagian kedua akan dijelaskan perancangan kelas-kelas bagian Client library.
3.7.1 Diagram Perancangan Kelas Bagian Service Library
Gambar 3.12: Diagra m perancangan kelas Bagian Service Library
III-25
3.7.2 Deskripsi Perancangan Kelas Bagian Service LibraryPada bagian ini akan dijelaskan deskripsi kelas yang akan dibangun beserta atribut
dan operasinya.
3.7.2.1 Kelas AYmsglib
Kelas ini berisi fungsi-fungsi yang digunakan untuk berkomunikasi dengan server
Yahoo! Messenger.
3.7.2.1.1 Atribut Kelas Aymsglib
Tabel 3.3: Tabel daf tar a t ribu t pa da kelas AYmsglib
Nama Atribut Visibility (private,protected,public)
Keterangan
Socket Private Digunakan untuk membuatsocket TCP/IP ke server Yahoo! Messenger.
Dos Private Digunakan sebagai output stream untuk menulis data dari socket.
Bis Private Digunakan sebagai input stream untuk membaca data dari socket.
Parent Private Digunakan untuk memanggil method pada kelas AymsgService yang mengisntansiasi kelas ini.
3.7.2.1.2 Operasi Kelas Aymsglib
Tabel 3.4: Tabel daf tar operasi pa da kelas AYmsglib
Nama Operasi Visibility (private,protected,public)
Keterangan
Aymsglib(AYmsgService) Public Konstuktor kelas Aymsglib.
III-26
Nama Operasi Visibility (private,protected,public)
Keterangan
Connect() Public Membuka koneksi ke server.
Init() Public Melakukan proses inisialisasi koneksi.
Run() Public Operasi main thread.
SendYahooPacket( String[] key, String[] value, int Service, int status, int SessionId)
Public Mengirimkan paket Yahoo! de-ngan pasangan key dan value, status dan service Id.
3.7.2.2 Kelas AYmsgService
Kelas ini adalah kelas service yang akan diimplementasi sebagai building-block
service pada platform Android.
3.7.2.2.1 Atribut Kelas AymsgService
Tabel 3.5: Tabel daf tar a t ribu t pa da kelas AYmsgService
Nama Atribut Visibility (private,protected,public)
Keterangan
Aymsg Private Instans kelas AYmsglib untuk memanggil fungsi-fungsi untukberkomunikasi dengan server Yahoo! Messenger.
Mcallback private Berisi instans kelas callback untuk memanggil fungsi call-back apabila ada event yang terjadi.
III-27
3.7.2.2.2 Operasi Kelas AymsgService
Tabel 3.6: Tabel daf tar operasi pa da kelas AYmsgService
Nama Operasi Visibility (private,protected,public)
Keterangan
OnCreate() Protected Fungsi bawaan kelas Service. Fungsi ini akan dipanggil apa-bila kelas ini baru di instansiasi.
OnBind() Public Fungsi bawaan dari kelas Service yang akan dipanggil bila ada kelas Activity yangberusaha menjalankan Service.
SendCallback( String[] key, String[] value, int Service, int status, int SessionId)
Public Memanggil fungsi pada sisi client atau dikenal dengan fungsi-fungsi callback
Mbinder() Public Fungsi bawaan dari Androidsebagai interface kelas
3.7.2.3 Kelas AYmsg
Kelas ini berisi fungsi-fungsi yang akan digunakan oleh client untuk berkomunikasi
dengan Service.
3.7.2.3.1 Atribut Kelas AYmsg
Tabel 3.7: Tabel daf tar a t ribu t pa da kelas AYmsg
Nama Atribut Visibility (private,protected,public)
Keterangan
mService Private Kelas yang digunakan sebagai interface untuk berkomunikasidengan kelas IAYmsgService.
III-28
Nama Atribut Visibility (private,protected,public)
Keterangan
clientCallback Private Kelas yang digunakan untuk berkomunikasi dengan kelas IAYmsgCallBack. Fungsi yang dipanggil dari sisi client.
SessionID Private Identifier SessionId yang di ha-silkan oleh server Yahoo! Mes-senger.
Username Private Username yang digunakan un-tuk melakukan otentikasi.
Password private Password yang digunakan un-tuk melakukan otentikasi ke server.
3.7.2.3.2 Operasi Kelas AYmsg
Tabel 3.8: Tabel daftar operasi pa da kelas AYmsg
Nama Operasi Visibility (private,protected,public)
Keterangan
Aymsg(Activity activity) Public Konstuktor.
RegisterClientCallback( IAYmsgCallback callback)
Public Fungsi ini digunakan untuk mendaftarkan fungsi callback.
unRegisterClientCallback( IAYmsgCallback callback)
Public Fungsi ini digunakan untuk menghapus fungsi callback yang telah didaftarkan.
rawPacketHandler( String[] key, String[] value, int Service, int status, int SessionId)
Public Fungsi ini dipanggil ketika ada paket yang dikirimkan oleh server.
OnDisconnect() Public Fungsi ini dipanggil ketika ko-neksi terputus.
3.7.2.4 Kelas IAYmsgServiceCallback
Kelas ini digunakan sebagai interface untuk berkomunikasi dengan service.
Merupakan implementasi dari AIDL.
III-29
3.7.2.4.1 Operasi Kelas IAYmsgServiceCallback
Tabel 3.9: Tabel daf tar a t ribu t pa da kelas IAYmsgServiceCallback
Nama Operasi Visibility (private,protected,public)
Keterangan
rawPacketHandler( String[] key, String[] value, int Ser-vice, int status, int Sessio-nId)
Public Fungsi ini dipanggil ketika ada paket yang dikirimkan olehserver.
OnDisconnect() Public Fungsi ini dipanggil ketika ko-neksi terputus
3.7.2.5 Kelas IAYmsgCallback
Kelas ini digunakan sebagai interface berisi fungsi yang akan dipanggil di sisi client
sebagai fungsi callback.
3.7.2.5.1 Operasi Kelas IAYmsgCallback
Tabel 3.10: Tabel daftar a t ribu t pa da kelas IAYmsgCallback
Nama Operasi Visibility (private,protected,public)
Keterangan
rawPacketHandler( String[] key, String[] va-lue, int Service, int sta-tus, int SessionId)
Public Fungsi ini dipanggil ketika adapaket yang dikirimkan oleh server.
OnDisconnect() Public Fungsi ini dipanggil ketika ko-neksi terputus
3.7.2.6 Kelas IAYmsgService
Kelas ini digunakan sebagai interface untuk mendaftarkan fungsi callback ke sisi
Service.
III-30
3.7.2.6.1 Operasi Kelas IAYmsgService
Tabel 3.11 : Tabel daf tar a t ribu t pa da kelas IAYmsgService
Nama Operasi Visibility (private,protected,public)
Keterangan
registerCallBack(IAYms-gServiceCallback cb)
Public Fungsi ini digunakan untuk me-register fungsi callback ke sisi Service.
UnRegisterCallBack(IAYmsgServiceCallback cb)
Public Fungsi ini digunakan untuk menghapus fungsi callback di sisi Service yang telah di tam-bahkan sebelumnya.
3.7.3 Diagram Kelas Perancangan Bagian Client Library
3.7.4 Deskripsi Kelas Perancangan Bagian Client LibraryPada bagian ini akan dijelaskan deskripsi kelas-kelas bagian Client Library yang akan
dibangun beserta atribut dan operasinya.
3.7.4.1 Kelas ClientAYmsg
Kelas ini berisi kelas Interface atau GUI yang digunakan untuk membangun tampilan
ke Client dimana melalui kelas ini user dapat berinteraksi dengan aplikasi.
Gambar 3.13: Diagra m perancangan kelas bagian Client Library
III-31
3.7.4.1.1 Atribut Kelas ClientAYmsg
Tabel 3.12: Tabel daf tar a t ribu t pa da kelas Clien tAYmsg
Nama Atribut Visibility (private,protected,public)
Keterangan
aymsg Private Instans dari kelas AYmsg yang digunakan untuk memanggilfungsi-fungsi untuk berkomu-nikasi dengan Service.
clientCallback Private Berisi instans dari kelasclientCallback yang digunakan sebagai fungsi callback
3.7.4.1.2 Operasi Kelas ClientAYmsg
Tabel 3.13: Tabel daftar operasi pa da kelas ClientAYmsg
Nama Operasi Visibility (private,protected,public)
Keterangan
OnCreate (Bundle) Public Fungsi bawaan dari Android yang akan dipanggil setiap kalikelas ini di Instansiasi.
OnDestroy Protected Destruktor bawaan dari Andro-id yang akan dipanggil apabila objek ini dihapus dari memori.
3.7.4.2 Kelas ClientCallback
Kelas ini adalah kelas callback sebagai implementasi dari interface IAYmsgCallback.
Berisi fungsi-fungsi yang harus di implementasi oleh user sebagai fungsi callback
yang akan dipanggil ketika ada event yang terjadi pada sisi Service.
III-32
3.7.4.2.1 Operasi Kelas ClientCallback
Tabel 3.14: Tabel daf tar a t ribu t pa da kelas Clien tCallback
Nama Operasi Visibility (private,protected,public)
Keterangan
rawPacketHandler( String[] key, String[] value,int Service, int status, int SessionId)
Public Fungsi ini dipanggil ketika ada paket yang dikirimkan olehserver.
OnDisconnect() Public Fungsi ini dipanggil ketika ko-neksi terputus .
3.8 Diagram Kelas Perancangan Lengkap Library AYmsgBagian ini akan memberikan diagram kelas baik yang termasuk ke dalam Client
library dan yang termasuk ke dalam Service Library dan keterhubungan antara kelas-
kelas tersebut. Gambar diagram kelas lengkap dapat dilihat pada Gambar 3.14.
III-33
Gambar 3.14: Diagra m kelas pe rancangan lengka p
III-34
3.9 Perancangan AntarmukaTujuan akhir tugas ini adalah untuk membuat suatu kumpulan fungsi atau library yang
mengimplementasi protokol Yahoo! Messenger. Dalam Tugas Akhir ini juga akan
dibuat suatu aplikasi sederhana yang tujuannya adalah untuk menguji fungsi-fungsi
dalam library ini.
Tampilan dari aplikasi ini akan dibuat sesederhana mungkin dengan tujuan agar
programmer lain dapat melihat gambaran bagaimana untuk mengembangkan aplikasi
messenger menggunakan library ini.
3.9.1 Activity LoginActivity ini akan digunakan user untuk memasukkan Yahoo! ID dan password serta
melakukan proses login ke server Yahoo! Messenger. Tampilan activity ini dapat
dilihat pada Gambar 3.15.
Tabel 3.15: Daftar operasi yang ter da pa t pa da activity login
Nama Operasi Visibility (private,protected,public)
Keterangan
Login Public Untuk melakukan proses login ke server Yahoo! Messenger.
Gambar 3.15: Tam pilan activity login
III-35
Tabel 3.16: Daftar a t ribu t yang ter da pa t pa da activity login
Nama Atribut Visibility (private,protected,public)
Keterangan
txtUsername Private Teks berisi keterangan username.
txtPassword Private Teks berisi keterangan Password.
3.9.2 Activity Utama
Activity ini digunakan user untuk dapat melihat daftar teman, mengirim pesan ke
teman, merubah status, menambah dan menghapus teman, menambah dan menghapus
grup baru, memasukkan dan menghapus keanggotaan user dalam suatu grup.
Gambar 3.16: Ta m pilan activity u ta ma
III-36
Tabel 3.17: Daftar operasi yang ter da pa t pa da activity u ta ma
Nama Operasi Visibility (private,protected,public)
Keterangan
sendMessage Public Untuk mengirimkan pesan ke user tertentu.
changeStatus Public Untuk mengubah status user saat ini. Status dapat berupa status yang didefinisikan oleh protokol atau status yang userketikan.
addNewBuddy Public Menambahkan user baru ke dalam daftar teman.
removeBuddy Public Menghapus suatu user lain dari daftar teman.
addNewGroup Public Menambahkan group baru.
removeGroup Public Menghapus suatu group yang telah ada.
AddFriendToGroup Public Menambahkan suatu user ke dalam group tertentu.
RemoveFriendFromGroup Public Menghapus keanggotaan suatu user dari suatu group.
JoinConference Public Bergabung ke dalam ruangconference.
Tabel 3.18: Daftar a t ribu t yang ter da pa t pa da activity u ta ma
Nama Atribut Visibility (private,protected,public)
Keterangan
TxtBuddyList Private Teks berisi keterangan tulisan “Buddy List”.
LstBuddyList Private ListBox berisi daftar teman be-serta statusnya.
III-37
3.9.3 Activity Chat
Form ini digunakan untuk mengirimkan pesan ke user lain.
Tabel 3.19: Daftar operasi yang ter da pa t pa da activity chat
Nama Operasi Visibility (private,protected,public)
Keterangan
SendMessange Public Mengirimkan pesan dari txtMessage ke user tertentu.
Clear Public Menghapus isi dari txtMessage.
Tabel 3.20: Daftar a t ribu t yang ter da pa t pa da activity chat
Nama Atribut Visibility (private,protected,public)
Keterangan
TxtConversation Private Percakapan antara user dengan user lain.
TxtMessage Private Pesan yang akan dikirimkan ke user lain.
Gambar 3.17: Ta m pilan activity chat
III-38
3.9.4 Activity Conference
Activity ini digunakan untuk mengirimkan dan menerima pesan dari conference.
Tabel 3.21: Daftar operasi yang ter da pa t pa da activity conference
Nama Operasi Visibility (private,protected,public)
Keterangan
SendMessange Public Mengirimkan pesan dari txt-Message ke user tertentu.
Clear Public Menghapus isi dari txtMessa-ge.
Tabel 3.22: Daftar a t ribu t yang ter da pa t pa da activity conference
Nama Atribut Visibility (private,protected,public)
Keterangan
TxtConversation Private Percakapan antara user dengan user lain.
TxtMessage Private Pesan yang akan dikirimkan ke user lain.
TxtConferenceList Private Daftar teman yang tergabung ke dalam ruang conference. tersebut.
Gambar 3.18: Tam pilan activity Conference
III-39
Nama Atribut Visibility (private,protected,public)
Keterangan
TxtConferenceName Private Berisi teks nama dari ruang conference.
TxtFriendList Private Berisi teks “Friend List”.