Rancangan Antarmuka Pengguna Pengembangan Sistem IOSS (IPB Open Screen Sharing) Menggunakan Bahasa Pemrograman Java

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