BAB V
IMPLEMENTASI DAN PENGUJIAN
Bab ini merupakan pembahasan mengenai implementasi perangkat lunak untuk menerapkan dynamic folksonomy dan pengujian terhadap perangkat lunak yang telah diimplementasikan. Perangkat lunak yang dibangun diberi nama Folksonomy Generator v2.0.
5.1 Implementasi Perangkat Lunak Implementasi perangkat lunak dilaksanakan berdasarkan analisis dan perancangan yang ada pada bab sebelumnya. Pembahasan pada bagian ini meliputi lingkungan implementasi, implementasi kelas, dan implementasi antarmuka. 5.1.1
Lingkungan Implementasi
Lingkungan
implementasi
disesuaikan
dengan
analisis
lingkungan
pengembangan yang terdapat pada subbab 3.3.2.2. Sistem operasi yang digunakan dalam pengembangan perangkat lunak adalah Fedora Core 7. Sistem operasi ini dipilih karena distro Linux ini telah lama dipakai oleh pengembang. Bahasa pemrograman yang dipilih adalah C/C++. Untuk melakukan kompilasi menggunakan standard GNU GCC. C/C++ akan berjalan pada level sistem sebagai service (daemon). Bahasa pemrograman PHP digunakan untuk memodifikasi modul folksonomy yang terdapat pada aplikasi digital library. 5.1.2
Implementasi Kelas
Pada bagian ini akan mendeskripsikan kelas-kelas yang diimplementasikan pada perangkat lunak folksonomy generator. Pada tahap implementasi kelas terdapat penambahan kelas-kelas baru. Hal ini dikarenakan folksonomy generator tidak hanya harus bekerja secara background process namun juga harus bertindak sebagai daemon (service level).
V‐1
V‐2
Untuk memudahkan pengaturan, source code dibagi kedalam beberapa folder. Susunan folder pada folksonomy generator sebagai berikut:
Gambar V-1. Struktur folder dari aplikasi folksonomy generator.
Berikut ini adalah deskripsi masing-masing folder berikut kelas-kelas yang terdapat didalamnya: 1.
Folder service Folder ini berisi kelas-kelas yang akan menagani layanan pada sisi server dan
client. Kelas
Client_service Deskripsi Kelas ini akan mengatur manajemen pengiriman pesan atau request serta penerimaan pesan atau respon dari dan ke folksonomy generator (daemon). Kelas ini bertindak sebagai client FIFO. Keamanan terhadap Thread Kelas ini aman terhadap multithreading karena tidak ada proses external yang mengubah property internal.
Kelas
Server_service Deskripsi Kelas ini mengatur penerimaan pesan atau request serta pengiriman pesan atau response ke sisi client. Kelas ini berada pada folksonomy generator (daemon). Kelas ini
V‐3
bertindak sebagai server FIFO. Keamanan terhadap Thread Kelas ini aman terhadap multithreading karena tidak ada proses eksternal yang merubah property internal.
Kelas
Packet Deskripsi Merupakan paket untuk mengirimkan request atau menerima response dari client ke server. Packet ini berisi PID client, request, nomor node, jumlah tag, serta response. Keamanan terhadap Thread Kelas ini tidak aman terhadap multithreading karena ada pengubahan terhadap property internal.
Tabel V-1. Tabel kelas pada folder service.
2.
Folder folksgen Folder ini berisi kelas-kelas yang akan menangani penyusunan tag cloud secara
dinamis sesuai dengan domainnya. Folder ini merupakan folder utama dari aplikasi folksonomy generator. Kelas
FolksonomyManagerImpl Deskripsi Kelas ini untuk memenuhi spesifikasi bahwa hanya satu instance saja yang eksis pada saat runtime. Keamanan terhadap Thread Kelas ini aman dari multithreading karena tidak ada property internal dari kelas ini yang berubah. Kelas ini hanya memberikan initialisasi apabila FolksonomyManager instance belum eksis.
Kelas
DefaultFolksonomyManager Deskripsi Kelas ini mengimplementasikan method yang ada pada FolksonomyManager. DefaultFolksonomyManager merupakan kelas yang menangani proses bisnis dari folksonomy generator. Keamanan terhadap Thread Kelas ini tidak aman dari proses multithreading. Terdapat method yang mengubah property internal sehingga untuk proses pengubahan property internal harus diyakinkan bahwa hanya satu thread yang berhak mengakses property tersebut.
V‐4
Kelas
nodeTree Deskripsi Kelas yang merepresentasikan node tree. Kelas ini berisi informasi nomor node dan informasi keyword yang berada pada node tersebut serta frekuensinya. Keamanan terhadap Thread Kelas ini tidak aman terhadap multithreading. Apabila terdapat perubahan property internal dari sebuah node maka harus diyakinkan bahwa tidak ada proses lain yang mengakses kelas ini.
Interface
FolksonomyManager Deskripsi Interface ini merepresentasikan mekanisme umum yang digunakan pada folksonomy generator. Keamanan terhadap Thread Keamanan dari method yang didefinisikan oleh interface ini terhadap multithreading tergantung dari bagaimana method ini dimplementasikan.
Kelas
ListTag Deskripsi Kelas ini berisi informasi keyword yang merupakan keyword popular pada satu group. Keamanan terhadap Thread Kelas ini tidak aman terhadap multithreading. perubahan property internal.
Kelas
Hal ini disebabkan karena ada
Cellist Deskripsi Kelas ini berisi informasi tagging dan disusun terurut berdasarkan frekuensinya. Keamanan terhadap Thread Kelas ini tidak aman terhadap multithreading. perubahan property internal.
Kelas
Hal ini disebabkan karena ada
Pool Deskripsi Kelas ini merupakan V-4V-4ontainer untuk melakukkan pengelompokan berdasarkan huruf awal literal keyword. Keamanan terhadap Thread Kelas ini tidak aman dari multithreading. Penanganan multithreading perlu diterapkan
V‐5
karena terdapat mekanisme perubahan property internal.
Kelas
FolksonomyHelper Deskripsi Kelas ini berisi method yang umum dipakai. Pemisahan mekanisme yang umum dipakai untuk mengurangi coding yang redundant. Keamanan terhadap Thread Kelas ini aman dari multithreading. Tabel V-2. Tabel kelas pada folder folksgen.
3.
Folder folksgend Folder ini berisi kelas yang akan membuat aplikasi folksonomy generator
bertindak sebagai daemon ataukah client. Kelas
Folksgend Deskripsi Folksgend merupakan kelas yang dapat bertindak sebagai client maupun sebagai service (daemon). Kelas ini akan bertindak sebagai daemon apabila perintah start dijalankan. Kelas ini merupakan kelas manager yang akan mengatur layanan pada sisi server dan layanan pada sisi client. Keamanan terhadap Thread Kelas ini harus aman terhadap multithreading. Tiap-tiap request ke server harus berjalan secara atomic. Apabila hal ini tidak dapat dipenuhi maka akan terjadi race condition yang menyebabkan munculnya defunc atau process zombie. Tabel V-3. Tabel kelas pada folder folksgend.
4.
Folder message Folder ini berisi kelas yang mengatur format tampilan dari respon atas suatu
request. Kelas
Message Deskripsi Kelas ini akan menformat pesan yang akan dijadikan response ke client. Keamanan terhadap Thread Kelas ini aman terhadap multithreading karena tidak ada property internal. Tabel V-4. Tabel kelas pada folder message.
V‐6
5.
Folder tester Folder ini berisi file-file yang digunakan untuk melakukan pengetesan terhadap
aplikasi folksonomy generator. Main.cpp
File
Deskripsi File ini untuk menguji aplikasi folksonomy generator apakah aman terhadap multithreading atau tidak. Apabila melalui pengujian ini tidak terjadi error atau muncul zombie maka aplikasi folksonomy generator adalah aman. Keamanan terhadap Thread Kelas ini aman terhadap multithreading karena merupakan driver.
Main
Tservice.cpp Deskripsi File ini sebagai driver dari folksnomy generator. Keamanan terhadap Thread Kelas ini aman terhadap multithreading karena merupakan driver. Tabel V-5. Tabel file pada folder tester.
6.
Folder data Folder ini merupakan tempat dataset. Format dataset adalah <no>_.tag. Contohnya adalah 0.tag, 1.tag, dan seterusnya.
7.
Folder log Folder ini berisi file log. File log ini untuk melihat aktifitas dari aplikasi folksonomy generator. Selain itu bertujuan untuk melakukan audit apabila terjadi kegagalan.
8.
Folder lock Folder lock ini berisi PID file dari daemon.
9.
Folder tmp Folder ini berisi file FIFO. File FIFO ini sebagai pipa antara daemon dengan client.
5.1.3
V‐7
Implementasi Antarmuka
Pada dasarnya folksnomy generator tidak memerlukan antarmuka berupa GUI (Graphical User Interface). Folksonomy generator akan diintegrasikan dengan web digital library sehingga perlu dilakukan modifikasi pada modul folksonomy. Berikut ini adalah antarmuka pada modul folksonomy setelah dilakukan perubahan.
Gambar V-2. Antamuka modul folksonomy pada level administrator.
5.2 Pengujian Perangkat Lunak Bagian ini berisi pengujian terhadap perangkat lunak. Pembahasan pada bab ini terbagi atas beberapa bagian meliputi tujuan dari aplikasi yang dikembangkan, lingkungan pengujian, skenario dari pengujian yang dilakukan, hasil pengujian serta analisis terhadap hasil pengujian.
V‐8
5.2.1
Tujuan Pengujian
Pengujian perangkat lunak folksonomy generator bertujuan untuk memeriksa apakah perangkat lunak yang dikembangkan berjalan sesuai dengan skenario pengujian. Apabila ditemukan kesalahan maka akan dilakukan perbaikan dan penyempurnaan terhadap kesalahan tersebut. Berdasarkan hasil dari pengujian perangkat lunak kemudian akan diambil kesimpulan terhadap sukses tidaknya pengujian tersebut. 5.2.2
Lingkungan Pengujian
Lingkungan pengujian yang dilakukan adalahpada sistem operasi Fedora Core 7. Pengembang tidak melakukan pengujian pada Microsoft Windows karena kode daemon untuk UNIX tidak dapat berjalan pada Windows. 5.2.3
Skenario Pengujian
Pengujian perangkat lunak folksonomy generator meliputi beberapa tahap yakni: 1.
Pengujian pada level command line.
2.
Pengujian saat diintegrasikan dengan web digital library.
3.
Pemberian formulir survey kepada beberapa mahasiswa dan pegawai perpustakaan pusat I TB.
5.2.3.1 Skenario Pengujian Pada Level Command Line.
Pengujian ini meliputi skenario sebagai berikut: 1.
Menjalankan service folksonomy generator.
2.
Menghentikan service folksonomy generator.
3.
Me-restart service folksonomy generator.
4.
Menampilkan informasi dari service folksonomy generator.
5.
Mengambil tag cloud dengan domain tertentu
6.
Melakukan pengujian multithreading (start, restart, stop).
7.
Melakukan pengujian multithreading (start, fetch, info).
5.2.3.2 Skenario Pengujian Pada Web Digital Library.
Pengujian ini meliputi scenario sebagai berikut: 1. Membangun dataset
V‐9
2. Menghapus dataset 3. Mengaktifkan service folksonomy generator. 4. Menonaktifkan service folksonomy generator. 5. Menyusun ulang data tag cloud pada service folksonomy generator. 6. Tag cloud berubah secara dinamis saat menelusuri folder pada digital library. 5.2.4
Hasil Pengujian
Pengujian kinerja perangkat lunak dilakukan oleh tiga orang. Pengujian ini ditekankan apakah fungsionalitas dari perangkat lunak dapat berjalan dengan baik ataukah tidak. Formulir pengujian ini terdapat pada lampiran A. Selain pengujian kinerja perangkat lunak juga dilakukan pengujian akan kemanfaatan penggunaan dynamic folksnomy dalam membantu melakukan pencarian pada digital library. Formulir untuk pengujian ini terdapat pada lampiran B. Berikut ini merupakan hasil pengujian yang disesuaikan dengan skenario yang ditentukan pada bagian 4.2.3. 5.2.4.1 Hasil Pengujian Pada Level Command Line.
Pengujian ini dilakukan dengan mengetikkan beberapa perintah pada terminal (console). Berikut ini table yang mendeskripsikan hasil pengujian oleh beberapa penguji. No
Pengujian
1
Penguji 2
3
1 2
Menjalankan service folksonomy generator. Menghentikan service folksonomy generator.
OK OK
OK OK
OK OK
3
Me-restart service folksonomy generator.
OK
OK
OK
4
Menampilkan informasi dari service folksonomy generator.
OK
OK
OK
5
Mengambil tag cloud dengan domain tertentu.
OK
OK
OK
6
Pengujian multithreading (start, restart, stop).
OK
GAGAL
OK
7
Pengujian multithreading 2 (start, fetch, info).
OK
OK
OK
Tabel V-6. Tabel hasil pengujian pada level command line. 5.2.4.2 Hasil Pengujian Pada Web Digital Library
Aplikasi folksonomy generator diintegrasikan dengan modul folksonomy pada aplikasi web digital library. Tujuan utama dari pengujian ini adalah apakah tag cloud
V‐10
yang ditampilkan dapat berbeda-beda sesuai dengan domain dari node yang diakses. Berikut ini adalah hasil pengujian dari beberapa penguji. No
Pengujian
1
Penguji 2
3
1
Membangun dataset
OK
OK
OK
2
Menghapus dataset.
OK
OK
OK
3
Mengaktifkan service folksonomy generator.
OK
OK
OK
4
Menonaktifkan service folksonomy generator.
OK
OK
OK
OK
OK
OK
OK
OK
OK
5 6
Menyusun ulang data tag cloud pada service folksonomy generator. Tag cloud berubah secara dinamis saat menelusuri folder pada web digital library.
Tabel V-7. Hasil pengujian pada web digital library.
5.2.4.3 Hasil Survey Kemanfaatan Dynamic Folksonomy Survey untuk mengetahui kemanfaatan penggunaan dynamic folksonomy dilakukan kepada beberapa mahasiswa dan pegawai perpustakaan ITB. Dalam melakukan survey, perangkat lunak belum digabungkan dengan web digital library ITB sehingga untuk membantu pelaksanaan survey, aplikasi untuk diujicobakan masih memanfaatkan aplikasi yang ada pada laptop pengembang. Formulir untuk melakukan survey dapat dilihat pada lampiran B.
Berikut ini adalah penyebaran data dari user yang berpartisipasi pada survey: No
Pekerjaan
1
Mahasiswa
3
2
Pustakawan
6
3
Webmaster
2 Tabel V- 9. Data penyebaran user.
Jumlah
V‐11
Hasil survey ditunjukkan pada tabel berikut: Pilihan No
Topik 1
2
3
1
Pencarian dokumen dengan tag cloud
11
0
0
2
Pencarian dokumen dengan penulusuran subfolder
6
4
1
3
Pencarian dokumen yang berkaitan dengan dokumen yang dibuka.
9
2
0
4
Dynamic folksonomy dalam membantu memberikan informasi dokumen yang terdapat pada suatu domain.
10
1
0
5
Pencarian dokumen dengan dynamic folksonomy
8
3
0
6
Keefektifan pencarian dokumen
0
2
9
Berikut ini merupakan isi dari beberapa pilihan pada survey. 1. Nomor 1,2,3, dan 5; Pilihan 1 berisi jawaban “mudah”, pilihan 2 berisi jawaban “ragu-ragu” dan pilihan 3 berisi jawaban “sulit”. 2. Nomor 4; Pilihan 1 berisi jawaban “ya”, pilihan 2 berisi jawaban “ragu-ragu”, dan pilihan 3 berisi jawaban “tidak”. 3. Nomor 6; Pilihan 1: Eksplorasi melalui subfolder, Pilihan 2: Cukup dengan memanfaatkan daftar tag cloud di halaman depan, Pilihan 3: Bereksplorasi melalui subfolder dan memperhatikan tag cloud yang ditampilkan. 5.2.5
Analisis Hasil Pengujian
Hasil pengujian memberikan gambaran bahwa tidak semua skenario pengujian berjalan dengan baik. Pengujian multithreading1 (start, restart, stop) tidak berjalan dengan sempurna. Permasalahan utama yakni perintah “restart” tidaklah aman terhadap multithreading. Oleh karena itu, perintah restart sebaiknya dihindari. Pengujian terhadap multithreading ini untuk mengecek apakah perangkat lunak handal apabila dijalankan oleh sistem dengan multi thread.
Dalam melakukan pengujian terhadap performansi perangkat lunak saat di implementasikan ke operating Sistem lain seperti FreeBSD maupun Mac OS X,
V‐12
teradapat beberapa kendala. Beberapa kendala tersebut berkaitan dengan pengimplementasion semaphore. Perbedaan semaphore library ini menyebabkan adanya beberapa fungsi semaphore yang tidak dikenali. Untuk menyelesaikan permasalahan tersebut, fungsi – fungsi semaphore yang digunakan pada perangkat lunak ini harus didukung oleh library semaphore yang terdapat pada operating sistem yang digunakan sebagai media implementasi.
Pengembang menerima beberapa saran dari penguji berkaitan dengan aplikasi folksonomy generator. Beberapa saran tersebut yakni: 1. Perbaikan penanganan perintah “restart” pada apliaksi folksonomy generator agar thread-safety. 2. Untuk command line, bila option syntax tidak tersedia agar diberikan peringatan. 3. Pada modul folksonomy di web digital library, penggunaan masing-masing menu agar dibuatkan manualnya.
Saran – saran diatas sangat membangun dalam mengembangkan aplikasi folksonomy generator. Saran – saran diatas tidak seluruhnya dapat dipenuhi oleh pengembang. Saran pertama tidak dapat dipenuhi karena pengembang tidak menemukan alternatif lain untuk membuat perintah “restart” thread-safety. Pemecahan permasalahan ini adalah perintah “restart” sebaiknya dijalankan oleh administrator yang langsung mengakses terminal. Thread-safety pada perangkat lunak memiliki pengertian bahwa perangkat lunak harus berjalan dengan baik pada aplikasi/program multithreading.
Dari hasil pengujian, dynamic folksonomy dapat tercapai dengan bantuan aplikasi folksonomy generator. Hal ini ditunjukkan dari hasil pengujian bahwa tag cloud berubah secara dinamis saat mengakses folder-folder pada aplikasi web digital library. Perubahan tag cloud ini disebabkan karena adanya perubahan domain dari folder (node) yang diakses. Gambar V-3 dan Gambar V-4 memberikan ilustrasi bahwa terdapat perbedaan tag cloud yang ditampilkan.
V‐13
Pada Gambar V-3, tag cloud yang ditampilkan merupakan agregasi tag yang terdapat pada subfolder Dept_of_Aeronautics_Eng, Dept_of_Civil_Engineering, Dept_of_Electrical_Eng, dan Dept_of_Mechanical_Eng. Ruang lingkup yang lebih kecil akan menampilkan tag-tag yang lebih spesifik yang mana belum tentu tag-tag yang ditampilkan tersebut muncul pada halaman utama (Home).
Gambar V-3. Tag cloud pada sub folder Proceedings.
Pada Gambar V-4, tag cloud yang ditampilkan merupakan agregasi tag yang terdapat pada subfolder Dept_of_Civil_Engineering dan Dept_of_Informatics. Tag cloud yang ditampilkan sangat berbeda dengan tag cloud yang ditampilkan pada sub folder Proceedings. Hal ini disebabkan domain data untuk agregasi tag berbeda. Hal ini menunjukkan bahwa dynamic folksonomy pada metadata yang telah tersusun dengan prinsip taxonomy dapat terwujud.
V‐14
Gambar V-4. Tag cloud pada sub folder S1-Final_Project.