• Tidak ada hasil yang ditemukan

Gambar 3.1: Arsitektur perangkat lunak

N/A
N/A
Protected

Academic year: 2021

Membagikan "Gambar 3.1: Arsitektur perangkat lunak"

Copied!
39
0
0

Teks penuh

(1)

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

(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.

(3)

,,,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.

(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

(5)

,,,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

(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

(7)

,,,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

(8)

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)

,,,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

(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.

(11)

,,,11

(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

(13)

,,,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.

(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

(15)

,,,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

(16)

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)

,,,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

(18)

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)

,,,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.

(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.

(21)

,,,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 :

(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.

(23)

,,,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

(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

(25)

,,,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.

(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 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)

,,,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.

(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 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)

,,,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

(30)

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)

,,,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.

(32)

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)

,,,33

(34)

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)

,,,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.

(36)

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)

,,,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.

(38)

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)

,,,39 Nama Atribut Visibility

(private,protected,public)

Keterangan TxtConferenceName Private Berisi teks nama dari ruang

conference.

Gambar

Gambar 3.1: Arsitektur perangkat lunak
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.3: Gambar dialog ANR [DOC08]
Gambar tersebut menunjukkan paket TCP yang berisikan paket Yahoo! Messenger  yang dikirimkan oleh client ke server
+7

Referensi

Dokumen terkait

Pelaksanaan kegiatan ini merupakan kegiatan yang penting dalam pelaksanaan PPL. Saat praktik mengajar mahasiswa akan dituntut untuk mengajar langsung di dalam

Pemilihan lokasi dilakukan secara purposive yaitu Desa Tebaban dan Bagek Payung untuk Kecamatan Suralaga,dan Desa Suela dan Ketangga untuk Kecamatan Suela, dengan pertimbangan

Terdapat lima kompetensi yang harus dimiliki oleh seorang kepala sekolah yaitu: kompetensi kepribadian, kompetensi manajerial, kompetensi kewirausahaan, kompetensi

Kemudian, sambungkan alat pengukur tingkat kematangan buah dengan komputer menggunakan kabel USB melalui USB Port.Perhatikan lampu indicator.Jika lampu indicator menyala berarti

pemikiran di atas dapat disimpulkan bahwa peran Agama dalam Antropologi sebagai panduan untuk membimbing manusia untuk memiliki moral dan perilaku sesuai dengan

Pertumbuhan dan hasil kacang tanah budidaya sistem tanam alur menghasilkan nilai interaksi dengan perlakuan ketiga jenis pupuk lebih baik dibandingkan sistem tanam

Dengan demikian, teks-teks bacaan yang ada dalam buku ajar Bahasa Madura tersebut yang mempunyai kepadatan leksikal lebih dari 60% dapat dikategorikan sebagai teks bacaan yang

Kompetensi absolut PTUN adalah Sengketa Tata Usaha Negara yang timbul dalam bidang Tata Usaha Negara antara orang atau badan hukum perdata dengan badan atau pejabat Tata