11
Gambar 14 Use-case yang dimiliki perangkat lunak IOSS.
1.2 Kebutuhan Non-Fungsional
Kebutuhan non-fungsional
perangkat lunak IOSS dijelaskan oleh Tabel 2.
Tabel 2 Kebutuhan non-fungsional No.
Parameter Kebutuhan
1 Real-time
Menerima jumlah
frame gambar sesuai
dengan nilai frame rate telah ditentukan.
2 Reliability
Menampilkan gambar video dengan baik,
dengan atau tanpa kompresi, dan dalam
urutan yang sesuai.
3 Bahasa
Menggunakan standar bahasa inggris.
4 Availability
24 jam sehari, 7 hari seminggu.
1.3 Kebutuhan Antarmuka Eksternal
1.3.1 Antarmuka Pengguna
Antarmuka pengguna perangkat lunak IOSS ditampilkan pada modus grafik. Dimana
masukan diterima melalui masukan mouse dan keyboard
. Selain itu masukan juga diterima melalui port IO yang diterima melaui jaringan
komputer dari host yang terhubungkan.
1.3.2 Antarmuka
perangkat keras
minimum
Kebutuhan antarmuka perangkat keras yang dibutuhkan oleh perangkat lunak ini
adalah : -
Pc -
Keyboard -
Mouse -
Monitor -
Network interface card, dapat berupa Ethernet ataupun wireless LAN.
1.3.3 Antarmuka perangkat lunak
Untuk dapat berjalan dengan baik, perangkat lunak ini membutuhkan Java
running environment JRE v 1.6.0_22-b04.
Versi ini merupakan versi perangkat lunak IOSS ini dikembangkan dan dijalankan
dengan baik.
2 Rancangan
2.1 Rancangan Sistem
Rancangan sistem dilakukan dengan mengacu pada kebutuhan fungsional yang ada
pada digram use-case. Perangkat lunak IOSS dibagi menjadi dua subsistem, yaitu :
1. Server
Subsistem server berfungsi untuk melayani seluruh fungsi yang dibutuhkan
untuk melakukan penyediaan layanan screen capture
. Fungsi yang disediakan mencakup menginisiasi proses screen
capture , mengelola permintaan layanan
oleh client, langkah komunikasi yang harus
dilakukan hingga
bagaimana mengakhiri sesi layanan screen sharing.
2. Client
Fungsi yang disediakan oleh subsistem client
mencakup inisiasi proses sebelum melakukan
permintaan layanan
pengamatan presentasi
ke server
, mengolah data gambar hingga bagaimana
cara mengakhiri
sesi pengamatan
presentasi.
2.2 Rancangan Antarmuka Pengguna
Perangkat lunak IOSS dibuat sesederhana dan
sesedikit mungkin
penggunanya melakukan pengaturan sistem. Salah satunya
adalah menggunakan antarmuka pengguna berbasiskan GUI Graphical User Interface
12
daripada menggunakan berbasiskan CLI Commad Line Inteface. Tampilan perangkat
lunak IOSS terdiri atas sebuah jendela aplikasi utama, yang terdiri atas server tab dan client.
Berdasarkan masing-masing penggunanya, server
tab digunakan oleh penyaji presentasi sedangkan client tab digunakan oleh pengamat
presentasi. Server tab
seperti terlihat pada Gambar 15 terdiri beberapa masukan. Masukan yang
pertama adalah text field untuk masukan nomor port yang diformat sehingga hanya
dapat menerima masukan berupa karakter numerik dan tidak dapat menerima nilai
negatif ataupun bilangan desimalbentuk pecahan. Nilai yang dapat dimasukkan ke
dalam field nomor port dibatasi tidak lebih besar dari 65535, yaitu jumlah port yang
terdapat pada komputer. Jika pengguna mengisi nilai lebih dari 65535 atau port yang
digunakan sedang digunakan oleh aplikasi lain, maka sistem akan mengeluarkan jendela
peringatan kesalahan.
Gambar 15 Antarmuka server tab. Untuk kemudahan dan keabsahan nilai
masukan pada frame rate dan video quality digunakan komponen masukan yang sudah
ditentukan nilainya, yaitu menggunakan model masukan combo box. Jenis masukan
yang terakhir yang hadir dalam perangkat lunak IOSS adalah tombol. Komponen
masukan tombol dapat berubah fungsi sesuai dengan state dari perangkat lunak, yaitu
memulai sesi presentasi saat perangkat lunak idle
dan mengakhiri sesi presentasi saat perangkat lunak berjalan.
Berikutnya adalah client tab, ditunjukkan oleh Gambar 16. Tab ini berisikan tiga buah
jenis masukan, yaitu text field nomor port tujuan dan alamat tujuan. Masukan pada field
nomor port tujuan diatur dengan pengaturan yang sama dengan masukan field nomor port
pada server tab. Seperti jenis masukan field sebelumnya, field untuk server address
diformat agar hanya dapat menerima masukan karakter numerik saja sehingga masukan
berupa nilai negatif atau nilai desimalpecahan tidak dapat diterima oleh masukan ini. Jenis
masukan tombol dalam client tab dapat berubah fungsi sesuai dengan state perangkat
lunak, yaitu memulai sesi pengamatan presentasi saat perangkat lunak idle dan
menghentikan sesi presentasi saat perangkat lunak sedang menjalakan sesi presentasi.
Gambar 16 Antarmuka client tab. 1.
Desain kelas Menurut Irwanto 2006, mengurai sistem
ke dalam subsistem merupakan sebuah strategi yang
paling efektif
untuk mengatasi
kompleksitas dan meningkatkan portabilitas, selain itu hal ini juga berguna untuk
menghindari riffle effect dalam proses pengkodean. Penguraian sistem dalam desain
diterapkan menggunakan sistem package, yaitu kelas yang memiliki kesamaan fungsi
akan ditempatkan ke dalam package yang sama.
Seperti yang terlihat pada Gambar 17, package
IOSS merupakan package paling atas root package. Package ini membawahi tiga
package yang membagi kelas berdasarkan
fungsi control, model dan view. Untuk lebih memudahkan penamaan dan membatasi
pengelompokan kelas lebih rinci, masing- masing package tersebut dibagi lagi ke dalam
dua sub-pakcage, yaitu client dan server.
Package control merupakan kumpulan
kelas-kelas yang bertanggung jawab atas pengendalian IO, pengelolaan thread dan
proses pengambilan gambar screen capture. Kelas-kelas
yang berkaitan
dengan fungsionalitas pengelolaan data dikumpulkan
ke dalam package model, sedangkan package yang terakhir, view, bertanggung jawab
terhadap proses
tampilan GUI
dan pengelolaan data gambar ke dalam bentuk
yang dapat dikenali oleh mata manusia.
13
Gambar 17 Struktur package. Kebutuhan kelas yang dibuat pada
perangkat lunak IOSS secara umum dibedakan menjadi dua, yaitu kelas yang menyediakan
kebutuhan client dan server. Pada sisi server, dibutuhkan kelas yang
dapat menyediakan
kebutuhan fungsi
pengolaan gambar, pengelolaan sambungan pada jaringan dan pengelolaan thread yang
melayani client. Pemenuhan ketiga kebutuhan tersebut diatasi oleh kelas ScreenCapture yang
menyediakan kebutuhan pengelolaan gambar, kelas ServerMachine yang menyediakan
kebutuhan pengelolaan sambungan pada jaringan dan kelas ServerMachineThread yang
menyediakan
pengelolaan thread
yang berfungsi melayani client. Berikut pada
Gambar 18 digambarkan diagram kelas pada sisi server.
Gambar 18 Diagram kelas pada sisi server. Sedang pada sisi client, dibutuhkan kelas
yang menyediakan
fungsi pengelolaan
sambungan jaringan dan pengelolaan dan penampilan gambar. Fungsi penampilan
gambar dipenuhi oleh kelas ClientMachine dan
kebutuhan fungsi
mengelola dan
menampilkan kelas
VideoFrame dan
VideoPanel. Diagram kelas pada sisi client ditunjukkan oleh Gambar 19.
Gambar 19 Diagram kelas pada sisi client.
14
Kebutuhan akan fungsi pengiriman dan penerimaan data dibutuhkan baik dari sisi
client maupun server. Untuk kebutuhan ini,
kelas ThreadOutputStream
menyediakan fungsi
pengiriman sedangkan
ThreadInputStream menangani penyediaan kebutuhan penerimaan. Kedua kelas ini
mengimplementasikan interface Runnable, yaitu interface yang diimplementasikan agar
suatu kelas dapat diperlakukan sebagai sebuah thread
. Selain itu, terdapat beberapa kebutuhan
kelas lainnya yang tidak terkait dari segi model client-server, yaitu kebutuhan kelas
yang menangani properti dan antarmuka perangkat lunak. Pemenuhan pengelolaan
GUI dilakukan oleh kelas MainGUI dan ClientList, sedangkan fungsi yang mengatur
properti perangkat lunak dilakukan oleh kelas Settings.
3 Implementasi dalam bahasa
pemrograman 3.1
Pemrograman Soket
Mengacu pada desain dan kebutuhan perangkat lunak
screen sharing
dapat disimpulkan bahwa model layanan yang
diterapkan dalam perangkat lunak IOSS adalah client-server, yaitu terdapat sebuah
host yang menyediakan layanan penyedia
gambar dan kemudian mengirimkan layanan video kepada host yang memintanya.
Penerapan fungsi
pengiriman dan
penerimaan informasi dilakukan melalui implementasi kelas ThreadInputStream dan
ThreadOutputStream. Kelas
ThreadInputStream merupakan kelas yang menyediakan penerimaan data dari soket, dan
sebaliknya kelas
ThreadOutputStream merupakan kelas yang menyediakan fungsi
yang bertanggung
jawab menyediakan
penulisan data ke dalam socket. Pada
sisi server
, yaitu
kelas ServerMachine, penerapan kode dilakukan
dengan menerapkan objek kelas ServerSocket yang berguna mengikat sebuah port yang
digunakan sebagai listening port untuk layanan screen capture, ServerSocket akan
menunggu dan mengikat client yang meminta layanan hingga akhirnya perangkat lunak
dimatikan.
Saat client terhubung, ServerSocket akan mengembalikan objek kelas Socket, objek ini
kemudian diberikan
kepada kelas
ServerMachineThread untuk
digunakan melayani client. Baris kode pembangunan
sambungan pada sisi server dapat dilihat pada Gambar 20.
pada sisi kelas ServerMachine ServerSocket aServerSocket= null;
aServerSocket = new ServerSocket nomor_port; aSocket = aServerSocket.accept;
pada sisi kelas ServerMachineThread aThreadOutputStream
= new
ThreadOutputStream aSocket;
aThreadInputStream = new ThreadInputStream aSocket;
Gambar 20 Baris kode pembangunan sambungan pada sisi server.
Di dalam
kelasServerMachineThread, object kelas Socket kemudian dilewatkan ke
dalam parameter kelas ThreadOutputStream dan ThreadInputStream untuk digunakan
mendapatkan input dan output stream milik server
yang terhubung dengan input dan output
stream milik client. Paket
data gambar
yang dikirim,
sebelumnya diubah
dari tipe
data BufferedImage ke dalam tipe data byte array,
pengubahan diperlukan karena pengiriman menggunakan
kelas ObjectOutputStream
hanya dapat dilakukan dalam bentuk tipe data primitif, misalnya integer, float, double, char
dan string.
Tipe data byte dipilih karena panjang satu byte
cukup dan tidak berlebihan untuk menyimpan sebuah komponen warna dalam
ruang warna RGB Red Green Blue. Dalam ruang warna RGB, sebuah komponen warna
memiliki jangkauan nilai sebesar nol hingga 255. Oleh karena itu, untuk memenuhi
jangkauan nilai tersebut, pengunaan tipe data byte
adalah sesuai. Ukuran data yang dihasilkan dari kelas
ScreenCapture untuk monitor dengan resolusi sebesar 800 x 600 pixel berkisar antara
282092 - 356921 byte. Ukuran tersebut didapat tanpa menggunakan fungsi kompresi
gambar,
gambar berformat
JPEG tak
terkompresi. Untuk
dapat melakukan
pengiriman dengan baik, protokol pengiriman yang dibutuhkan tanpa mempertimbangkan
kinerja yang dihasilkan adalah TCP. Pemilihan
TCP sebagai
protokol pengiriman karena kemampuannya yang dapat
mengirim data berukuran besar. Mengacu pada UDP header pada Gambar 3, pada
bagian UDP length dapat dilihat bahwa ukuran data yang dapat didukung oleh sebuah
paket UDP adalah sebesar 16 bit atau sebesar
15
65535 byte. Maka dari itu, penggunaan protokol UDP dapat dikatakan kurang tepat.
Pada TCP, Gambar 4, tidak seperti UDP yang tidak menyediakan segmentasi data, data
frame gambar dibagi kedalam ukuran yang
lebih kecil dan masing-masing urutan data tersebut ditandai pada sequence number.
Dengan demikian data tersebut dapat kembali disusun dalam urutan awal. Dengan alasan
kemampuannya untuk mengirim data yang besar TCP dipilih sebagai protokol pengiriman
dalam perangkat lunak IOSS.
Dari sisi client, perapan kode dilakukan melalui fungsi-fungsi yang ada pada kelas
ClientMachine. Objek kelas ClientMachine membangun sambungan ke server melalui
objek kelas Socket. Objek kelas Socket yang terbentuk dari proses sambungan kemudian
dilewatkan
ke dalam
parameter kelas
ThreadOutputStream dan ThreadInputStream untuk diproses menghasilkan output dan input
stream milik client yang terhubung dengan
output dan input stream milik server. Kode
pembangunan sambungan pada sisi client digambarkan oleh Gambar 21.
pada sisi kelas ClientMachine Socket aSocket = null;
aSocket = new SocketServerAddress, port; aThreadOutputStream
= new
ThreadOutputStream aSocket;
aThreadInputStream = new ThreadInputStream aSocket;
Gambar 21 Baris kode pembangunan sambungan pada sisi client.
3.2 Multithreading