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
,,,1
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.
,,,3
3.2 Analisis Implementasi Library pada Android
Pada bagian ini akan dijelaskan bagaimana implementasi library yang akan dibangun pada platform Android.
3.2.1 Service
Pada 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.
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
,,,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
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
,,,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! Messenger
Pada 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
3.3.1 Struktur Paket Yahoo! Messenger
Seperti 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 8
Packet ID YMSG Version 0x0000
Length Service Status
,,,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! Messenger
Beberapa 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 pada jaringan
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.
,,,11
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
,,,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.
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
,,,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
3.4 Analisis Kebutuhan Perangkat Lunak
Dalam 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 Fungsional
Fungsi 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-Fungsional
Selain 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).
,,,17
Tabel 3.1: Spesifikasi fungsional dari 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 dari ruangan conference
Menerima pesan yang dikirimkan user lain ke ruang
3.5 Diagram Use Case
Pada 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:
,,,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 narasi 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.
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.
,,,21
3.6 Perancangan Kelas
Pada 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 :
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.
,,,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 AYmsg
Diagram 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 Kelas
Pada bagian ini akan dijelaskan perancangan kelas-kelas yang akan dibuat
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
,,,25
3.7.2 Deskripsi Perancangan Kelas Bagian Service Library
Pada 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 daftar atribut pada kelas AYmsglib
Nama Atribut Visibility (private,protected,public)
Keterangan
Socket Private Digunakan untuk membuat
socket 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 daftar operasi pa da kelas AYmsglib
Nama Operasi Visibility (private,protected,public)
Keterangan Aymsglib(AYmsgService) Public Konstuktor kelas Aymsglib.
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 pasade-ngan 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 daftar atribut pada kelas AYmsgService
Nama Atribut Visibility (private,protected,public)
Keterangan
Aymsg Private Instans kelas AYmsglib untuk
memanggil fungsi-fungsi untuk berkomunikasi dengan server Yahoo! Messenger.
Mcallback private Berisi instans kelas callback untuk memanggil fungsi
call-back apabila ada event yang
,,,27
3.7.2.2.2 Operasi Kelas AymsgService
Tabel 3.6: Tabel daftar 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 yang berusaha 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 Android
sebagai 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 daftar atribut pada kelas AYmsg
Nama Atribut Visibility (private,protected,public)
Keterangan
mService Private Kelas yang digunakan sebagai
interface untuk berkomunikasi
dengan kelas IAYmsgService.
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 pada 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.
,,,29
3.7.2.4.1 Operasi Kelas IAYmsgServiceCallback
Tabel 3.9: Tabel daftar atribut pada 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 oleh
server.
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 atribut pada 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 ada paket 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
3.7.2.6.1 Operasi Kelas IAYmsgService
Tabel 3.11: Tabel daftar atribut pada 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 Library
Pada 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.
,,,31
3.7.4.1.1 Atribut Kelas ClientAYmsg
Tabel 3.12: Tabel daftar atribut pa da kelas ClientAYmsg
Nama Atribut Visibility
(private,protected,public) Keterangan
aymsg Private Instans dari kelas AYmsg yang digunakan untuk memanggil fungsi-fungsi untuk berkomu-nikasi dengan
Service.
clientCallback Private Berisi instans dari kelas
clientCallback yang digunakan
sebagai fungsi callback
3.7.4.1.2 Operasi Kelas ClientAYmsg
Tabel 3.13: Tabel daftar operasi pada kelas ClientAYmsg
Nama Operasi Visibility (private,protected,public)
Keterangan OnCreate (Bundle) Public Fungsi bawaan dari Android
yang akan dipanggil setiap kali kelas 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.
3.7.4.2.1 Operasi Kelas ClientCallback
Tabel 3.14: Tabel daftar atribut pa da kelas ClientCallback
Nama Operasi Visibility
(private,protected,public) Keterangan
rawPacketHandler( Strin g[] 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.8 Diagram Kelas Perancangan Lengkap Library AYmsg
Bagian ini akan memberikan diagram kelas baik yang termasuk ke dalam Client
library dan yang termasuk ke dalam Service Library dan keterhubungan antara
,,,33
3.9 Perancangan Antarmuka
Tujuan 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 Login
Activity 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 terdapat pada activity login
Nama Operasi Visibility (private,protected,public)
Keterangan
Login Public Untuk melakukan proses
login ke server Yahoo!
Messenger.
,,,35
Tabel 3.16: Daftar atribut yang terdapat pada 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.
Tabel 3.17: Daftar operasi yang terdapat pada activity uta 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 user ketikan.
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 ruang
conference.
Tabel 3.18: Daftar atribut yang terdapat pada activity uta 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.
,,,37
3.9.3 Activity Chat
Form ini digunakan untuk mengirimkan pesan ke user lain.
Tabel 3.19: Daftar operasi yang terdapat pada 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 atribut yang terdapat pada 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.
3.9.4 Activity Conference
Activity ini digunakan untuk mengirimkan dan menerima pesan dari conference.
Tabel 3.21: Daftar operasi yang terdapat pada 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 atribut yang terdapat pada 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.
,,,39 Nama Atribut Visibility
(private,protected,public)
Keterangan TxtConferenceName Private Berisi teks nama dari ruang
conference.