Pengembangan Aplikasi Java Search Tool.
ABSTRACT
Java Search Tool is a search engine application built on Java programming
language. Java Search Tool give simple approach for Inverted File Indexing and
Vector Space Model algorithms for information retrieval core engine. Beside the
fact that Java Search Tool is dekstop search application, Java Search Tool also
provide native integration with host operating system indexing service and also
provide search feature through GoogleBase services. Native integration only
available for UNIX based operating system including Mac OS X. While for
GoogleBase services search, Java Search Tool only provide GoogleBase directory
search and video search though YouTube feeds service.
Java Search Tool tries to implement indexing process using multi threading
instance. Some of data structures used on base Inverted File Indexing algorithm
change into Hashtable implementation rather than LinkedList. Modification also
apply to Vector Space Model so it can improve similarity measurement for phrase
based search. To accomodate indexing process for all documents in hard drive,
Java Search Tool also uses some of text or metadata extraction library including,
Apache POI for Microsoft Office PowerPoint and Word 2000/XP compatible
documents, PDFBox for pdf to text extraction and also JID3Tag for MP3 ID3Tag
extraction. All library used by Java Search Tool is open source based and free to
use with each GNU based licenses.
For such system such as Mac OS X 10.5, Java Seach Tool also provide
QuickLook for previewing document and some cool GUI experience. Beside that,
Java Search Tool also provide logging feature and embedded cool help system to
provide user with easy to use and fully documented application.
Keywords: java, search, vector space model, pemodelan ruang vektor, inverted
file indexing, indexing, native indexing.
(2)
DAFTAR ISI
LEMBAR PENGESAHAN ... ii" PERNYATAAN ORISINALITAS LAPORAN ... iii" KATA PENGANTAR ... iv" LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ... v" ABSTRACT... vi" DAFTAR ISI... vii" DAFTAR GAMBAR ... xiv" Bab I :" PENDAHULUAN ... 1" I.1." Latar Belakang ... 1" I.2." Tujuan ... 1" I.3." Gambaran Umum... 1" I.4." Batasan Masalah ... 2" I.5." Detail Teknis... 3" I.6." Definisi dan Singkatan... 4" I.6.1." JRE(Java Runtime Environment) atau JVM ... 4" I.6.2." JDK(Java Development Kit) ... 4" I.6.3." Search Engine ... 4" I.6.4." Inverted File Indexing ... 4" I.6.5." Vector Space Model atau Pemodelan Ruang Vektor... 5" I.6.6." Index ... 5" I.6.7." Google dan GoogleBase ... 5" I.6.8." Mime Type ... 5" I.6.9." ID3Tag, ID3Tag versi 1.0 dan ID3Tag versi 2.3 ... 6" I.6.10." Runtime atau service ... 6" I.6.11." Native dan native indexing service... 6"
(3)
!"
viiiI.6.12." Native Library ... 7" I.6.13." AppleScript... 7" I.6.14." QuickLook ... 7" I.6.15." Spotlight ... 7" I.6.16." Locate ... 8" I.6.17." YouTube ... 8" I.6.18." DTrace ... 8" I.6.19." Apple Instruments ... 9" I.6.20." I/O dan I/O Usage... 9" I.6.21." CPU dan CPU Usage... 9" I.6.22." Object Allocation... 9" I.6.23." Memory Leak ... 10" I.6.24." Garbage Collector... 10" I.7." Struktur Laporan ... 10" Bab II :" Spesifikasi Produk... 12" II.1." Gambaran Keseluruhan ... 12" II.1.1." Perspektif Produk ... 12" II.1.1.1." Antarmuka Sistem... 12" II.1.1.2." Antarmuka Pengguna... 12" II.1.1.3." Antarmuka Perangkat Keras ... 14" II.1.1.4." Antarmuka Perangkat Lunak ... 14" II.1.1.5." Antarmuka Jaringan... 15" II.1.1.6." Batasan Memori... 15" II.1.1.7." Persyaratan Adaptasi... 15" II.1.2." Fungsi Produk ... 15" II.1.3." Karakteristik Pengguna ... 16" II.1.4." Asumsi dan Ketergantungan ... 16" II.1.5." Penundaan Persyaratan... 16"
(4)
II.2." Fitur Produk Perangkat Lunak... 17" II.2.1." Indexing... 17" II.2.1.1." Tujuan ... 17" II.2.1.2." Urutan Stimulus ... 17" II.2.1.3." Persyaratan Fungsional yang Berhubungan... 18" II.2.1.3.1." Masukan ... 18" II.2.1.3.2." Proses... 18" II.2.1.3.3." Keluaran ... 19" II.2.2." LocalSearching... 19" II.2.2.1." Tujuan ... 19" II.2.2.2." Urutan Stimulus ... 19" II.2.2.3." Persyaratan Fungsional yang Berhubungan... 19" II.2.2.3.1." Masukan ... 19" II.2.2.3.2." Proses... 19" II.2.2.3.3." Keluaran ... 20" II.2.3." NativeSearching... 20" II.2.3.1." Tujuan ... 20" II.2.3.2." Urutan Stimulus ... 20" II.2.3.3." Persyaratan Fungsional yang Berhubungan... 21" II.2.3.3.1." Masukan ... 21" II.2.3.3.2." Proses... 21" II.2.3.3.3." Keluaran ... 21" II.2.4." Google Searching... 21" II.2.4.1." Tujuan ... 22" II.2.4.2." Urutan Stimulus ... 22" II.2.4.3." Persyaratan Fungsional yang Berhubungan... 22" II.2.4.3.1." Masukan ... 22" II.2.4.3.2." Proses... 22"
(5)
!"
xII.2.4.3.3." Keluaran ... 23" II.2.5." Bookmark... 23" II.2.5.1." Tujuan ... 23" II.2.5.2." Urutan Stimulus ... 23" II.2.5.3." Persyaratan Fungsional yang Berhubungan... 23" II.2.5.3.1." Masukan ... 23" II.2.5.3.2." Proses... 24" II.2.5.3.3." Keluaran ... 24" II.3." Batasan Performa... 24" II.4." Atribut – Atribut Perangkat Lunak... 24" II.4.1." Kehandalan... 25" II.4.2." Ketersediaan ... 25" II.4.3." Keamanan... 25" II.4.4." Pemeliharaan ... 25" II.4.5." Perpindahan... 25" Bab III :" Desain Perangkat Lunak ... 26" III.1." Overview ... 26" III.1.1." Komponen Perangkat Lunak ... 26" III.2." Desain Arsitektur Aplikasi ... 29" III.2.1." Teori Penunjang ... 29" III.2.1.1." Inverted File Indexing ... 29" III.2.1.2." Vector Space Model ... 30" III.2.2." Use Case ... 32" III.2.3." Dependency Diagram ... 35" III.2.3.1." Model-Controller Components... 36" III.2.3.2." View-Controller Components ... 38" III.2.4." Class Diagram... 39" III.2.4.1." Package net.sf.jsearchtool.core.extractor ... 39"
(6)
III.2.4.1.1." Extractor... 39" III.2.4.1.2." AlienExtractor ... 40" III.2.4.1.3." MP3Extractor ... 40" III.2.4.1.4." OfficePowerPointExtractor ... 40" III.2.4.1.5." OfficeWordExtractor... 41" III.2.4.1.6." PDFExtractor ... 41" III.2.4.2." TextExtractor ... 42" III.2.4.3." Package net.sf.jsearchtool.core.index... 42" III.2.4.3.1." FileIndexer ... 42" III.2.4.3.2." InvertedFileEntry ... 43" III.2.4.4." Package net.sf.jsearchtool.core.search ... 43" III.2.4.4.1." VectorSpaceHandler ... 44" III.2.4.4.2." GoogleBaseClient ... 44" III.2.4.4.3." LocateHandler ... 45" III.2.4.4.4." SpotlightHandler ... 45" III.2.4.4.5." YouTubeClient... 46" III.2.4.5." Package net.sf.jsearchtool.io ... 46" III.2.4.5.1." FileManager ... 46" III.2.4.5.2." FileTypeDescriptor ... 47" III.2.4.5.3." ID3TagDescriptor ... 47" III.2.4.5.4." ImagesDescriptor ... 48" III.2.4.6." Package net.sf.jsearchtool.launcher... 48" III.2.4.6.1." JSearchToolLauncher... 48" III.2.4.6.2." MacLauncher... 49" III.2.4.7." Package net.sf.jsearchtool.UIComponents ... 49" III.2.4.7.1." AppForm ... 49" III.2.4.7.2." AboutDialog... 50" III.2.4.7.3." BookmarkDialog ... 50"
(7)
!"
xiiIII.2.4.7.4." BookmarkManager... 50" III.2.4.7.5." ExceptionDialog... 51" III.2.4.7.6." LogViewer... 51" III.2.4.7.7." PreferencesDialog ... 51" III.2.4.7.8." TableFactory ... 52" III.2.4.8." Package net.sf.jsearchtool.util ... 52" III.2.4.8.1." Logger ... 52" III.2.4.8.2." StopWord ... 53" III.2.4.8.3." SystemUtilities ... 53" III.2.4.8.4." VectorMath ... 54" III.2.4.9." Package net.sf.jsearchtool.xml ... 54" III.2.4.9.1." XMLReader... 54" III.2.4.9.2." XMLWriter ... 55" III.2.4.10." Package uk.ac.comp.lancs ... 55" III.2.4.10.1." Paice ... 55" Bab IV :" Implementasi Desain... 56" IV.1." Perencanaan Tahap Implementasi... 56" IV.1.1." Implementasi Kelas ... 56" IV.1.2." Keterkaitan Antar Kelas ... 78" IV.2." Perjalanan Tahap Implementasi ... 79" IV.2.1." Implementasi Bottom Up... 79" IV.2.2." Debugging ... 80" IV.3." Ulasan Realisasi Fungsionalitas... 81" IV.3.1." Fitur Indexing ... 81" IV.3.2." Fitur Searching ... 83" IV.4." Ulasan Realisasi Antarmuka Pengguna ... 84" Bab V :" Testing dan Evaluasi Sistem ... 93" V.1." Rencana Pengujian Sistem Terimplementasi ... 93"
(8)
V.1.1." Test Case ... 93" V.1.2." Uji Fungsionalitas ... 94" V.2." Perjalanan Metodologi Pengujian ... 95" V.2.1." White Box ... 95" V.2.1.1." Fitur Indexing ... 97" V.2.1.2." Fitur Pencarian Menggunakan Vector Space Model ... 101" V.2.2." Black Box... 107" V.2.2.1." Fitur Pencarian Menggunakan Runtime Spotlight ... 107" V.2.2.2." Fitur Pencarian Menggunakan Runtime Locate ... 107" V.2.2.3." Fitur Pencarian Menggunakan Service Google ... 108" V.2.2.4." Fitur Bookmark... 108" V.2.2.5." Fitur QuickLook ... 108" V.2.2.6." Fitur Logging dan Log Viewer... 109" V.2.3." Ulasan Hasil Evaluasi ... 109" Bab VI :" Kesimpulan dan Saran ... 110" VI.1." Saran Pengembangan ... 110" VI.2." Keterkaitan antara Kesimpulan dan Hasil Evaluasi... 110" VI.3." Keterkaitan antara Saran dan Hasil Evaluasi ... 110" VI.4." Rencana Perbaikan terhadap Saran yang Diberikan ... 111" Referensi ... 112" Lampiran ... 114" Algoritma Inverted File Indexing ... 114" Algoritma Vector Space Model... 116" GNU General Public License ... 117" Apache License... 125" PDFBox License... 130" Mozilla Public License ... 131"
(9)
!"
xivDAFTAR GAMBAR
Gambar 3.1: Use Case JSearchTool... 33" Gambar 3.2: Model-Controller Dependency Diagram ... 36" Gambar 3.3: View-Controller Dependency Diagram ... 38" Gambar 3.4: Kelas Diagram Extractor... 39" Gambar 3.5: Kelas Diagram AlienExtractor... 40" Gambar 3.6: Kelas Diagram MP3Extractor... 40" Gambar 3.7: Kelas Diagram OfficePowerPointExtractor... 41" Gambar 3.8: Kelas Diagram OfficeWordExtractor ... 41" Gambar 3.9: Kelas Diagram PDFExtractor ... 41" Gambar 3.10: Kelas Diagram TextExtractor ... 42" Gambar 3.11: Kelas Diagram FileIndexer ... 42" Gambar 3.12: Kelas Diagram InvertedFileEntry ... 43" Gambar 3.13: Kelas Diagram VectorSpaceHandler ... 44" Gambar 3.14: Kelas Diagram GoogleBaseClient ... 44" Gambar 3.15: Kelas Diagram LocateHandler... 45" Gambar 3.16: Kelas Diagram SpotlightHandler ... 45" Gambar 3.17: Kelas Diagram YouTubeClient... 46" Gambar 3.18: Kelas Diagram FileManager ... 46" Gambar 3.19: Kelas Diagram FileTypeDescriptor ... 47" Gambar 3.20: Kelas Diagram ID3TagDescriptor ... 47" Gambar 3.21: Kelas Diagram ImagesDescriptor ... 48" Gambar 3.22: Kelas Diagram JSearchTooLauncher ... 48" Gambar 3.23: Kelas Diagram MacLauncher ... 49" Gambar 3.24: Kelas Diagram AppForm ... 50" Gambar 3.25: Kelas Diagram AboutDialog... 50" Gambar 3.26: Kelas Diagram BookmarkDialog... 50" Gambar 3.27: Kelas Diagram BookmarkManager ... 51" Gambar 3.28: Kelas Diagram ExceptionDialog ... 51" Gambar 3.29: Kelas Diagram LogViewer ... 51" Gambar 3.30: Kelas Diagram PreferencesDialog ... 52" Gambar 3.31: Kelas Diagram TableFactory ... 52"
(10)
Gambar 3.32: Kelas Diagram Logger ... 52" Gambar 3.33: Kelas Diagram StopWordWriter... 53" Gambar 3.34: Kelas Diagram SystemUtilities... 53" Gambar 3.35: Kelas Diagram VectorMath ... 54" Gambar 3.36: Kelas Diagram XMLReader ... 54" Gambar 3.37: Kelas Diagram XMLWriter ... 55" Gambar 3.38: Kelas Diagram Paice... 55" Gambar 4.39: Sequence Diagram Proses Indexing... 78" Gambar 4.40: Sequence Diagram Proses Pencarian ... 79" Gambar 4.41: Tampilan Window Utama Aplikasi ... 84" Gambar 4.42: Menu Tools ... 85" Gambar 4.43: Tampilan Window Utama Pencarian Google ... 86" Gambar 4.44: Menu JSearchTool Pada Mac OS X ... 86" Gambar 4.45: Tampilan Window Preferences ... 87" Gambar 4.46: Menu Bookmark ... 88" Gambar 5.47: Window Manajemen Bookmark ... 88" Gambar 5.48: Menu Help ... 89" Gambar 4.49: Tampilan Hasil Pencarian ... 90" Gambar 4.50: Tampilan Dock di Mac OS X ... 90" Gambar 4.51: Preview Dokumen pada Mac OS X 10.5 ... 91" Gambar 4.52: Tampilan Window Log Viewer ... 92" Gambar 5.53 : Hirarki Dokumen Pengujian ... 97" Gambar 5.54: Tampilan Hasil DTrace Fitur Indexing... 98" Gambar 5.55: Tampilan Hasil CPU Monitor ... 99" Gambar 5.56: Tabel Hasil Process Sampler Fitur Indexing ... 101" Gambar 5.57: Hasil Pencarian Menggunakan Satu Kata... 103" Gambar 5.58: Hasil Pencarian Menggunakan Frasa... 103" Gambar 5.59: Penggunaan Resources Fitur Pencarian ... 105" Gambar 5.60: Tampilan Hasil Process Sampler Proses Pencarian ... 106" Gambar 5.61: Tampilan Hasil Directory I/O Monitor ... 106"
(11)
I
!
""#Bab I :
PENDAHULUAN
!
Pada bagian ini akan dijelaskan mengenai gambaran umum mengenai
pengembangan aplikasi Java Search Tool meliputi latar belakang, tujuan
pembuatan aplikasi serta fitur dasar dan batasan pengembangan aplikasi.
I.1.
Latar Belakang
Saat ini perkembangan teknologi media penyimpanan komputer telah
berkembang dengan pesat, sehingga memungkinkan penggunanya untuk
menyimpan dokumen dalam jumlah besar. Sementara itu, dengan
banyaknya dokumen yang tersimpan, secara tidak langsung pengguna akan
mengalami kesulitan dalam mencari dokumen yang dibutuhkan pada saat
membutuhkannya. Di samping itu, perkembangan teknologi
search engine
memungkinkan untuk melakukan proses
indexing
dan pencarian data yang
ada dalam media penyimpanan ataupun melalui jaringan internet.
Oleh karena itu penulis memilih untuk mengembangkan aplikasi
search
engine
yang memungkinkan penggunanya untuk mencari dokumen yang
terdapat pada komputer ataupun melalui jaringan internet.
I.2.
Tujuan
Tujuan dari proyek tugas akhir ini adalah mengembangkan aplikasi
search
engine
menggunakan metode
inverted file indexing
dan metode pencarian
ruang
vector
yang juga mendukung pencarian secara
native
melalui
indexing service
pada
host operating system
dan mendukung pencarian
melalui jaringan internet Google. Aplikasi dikembangkan dengan
menggunakan bahasa pemrograman berorientasi objek
Java
.
I.3.
Gambaran Umum
Pada saat pertama kali digunakan, aplikasi akan meminta pengguna untuk
melakukan konfigurasi aplikasi umum seperti apakah pencarian akan
dilakukan dengan menggunakan
index
dari
indexing service
sistem operasi
(12)
atau dengan membuat
index
baru. Apabila pengguna memilih untuk
membuat
index
baru, maka pengguna akan diminta untuk memulai proses
pembuatan
index
.
Setelah
index
dibuat, pengguna dapat memulai menggunakan fitur
pencarian. Aplikasi akan membaca masukan dari pengguna berupa kata
kunci dari dokumen yang akan dicari dan lokasi pencarian (komputer atau
melalui Google). Setelah proses pencarian selesai dilakukan, hasil dari
pencarian akan ditampilkan dalam bentuk tabel berisi keterangan nama
dokumen, tanggal modifikasi terakhir dan lokasi dimana dokumen
disimpan. Pengguna juga dapat memasukkan
bookmark
hasil pencarian
ataupun mengatur
bookmark
yang telah ada. Fitur
bookmark
ini
memungkinkan pengguna untuk melihat ulang hasil pencarian yang
disimpan dengan lebih cepat.
Aplikasi ini juga memiliki fitur-fitur yang memungkinkan pengguna untuk
membuka direktori tempat dokumen atau membuka dokumen dengan
aplikasi lain yang terdapat pada sistem operasi yang digunakan. Untuk
pengguna Mac OS X versi 10.5 atau lebih, tersedia fitur untuk melakukan
preview
dokumen menggunakan QuickLook.
I.4.
Batasan Masalah
Batasan-batasan dalam pengembangan aplikasi ini adalah:
•
Integrasi pencarian menggunakan
native
indexing service
hanya dapat
dilakukan pada sistem operasi berbasis UNIX yang mendukung perintah
locate
atau
mdfind
,
•
Pencarian melalui Google hanya mendukung pencarian terhadap
direktori GoogleBase dan
YouTube
,
•
Pencarian terhadap
metadata
dan isi dokumen hanya mendukung
dokumen dengan format teks, PDF, Microsoft Office 2000/XP, dan
(13)
I
!
""%•
Update index
dilakukan secara manual oleh pengguna,
•
Stop word list
menggunakan bahasa Inggris dari Paice/Husk
stemmer
.
I.5.
Detail Teknis
Berikut adalah beberapa detail teknis dari aplikasi ini:
•
Pemrosesan dokumen tipe Microsoft Office 2000/XP dilakukan dengan
mengunakan
library
Apache POI (Poor Obfuscation Implementation)
versi 3.0.2 yang memiliki lisensi Apache
License
,
•
Pemrosesan dokumen tipe PDF menggunakan
library
PDFBox versi
0.7.3 yang memiliki lisensi PDFBox
License
,
•
Pemrosesan metadata untuk dokumen gambar menggunakan
package
javax.imageio
dari JDK,
•
Pemrosesan
ID3Tag
untuk dokumen MP3 dilakukan menggunakan
library
JID3 versi 0.4.6 yang memiliki lisensi GNU GPL,
•
Pengenalan
mime type
dilakukan dengan menggunakan
library
MimeUtil yang memiliki lisensi GNU GPL,
•
Pencarian terhadap GoogleBase dilakukan dengan menggunakan
parser
XML dari JDK,
•
Metode
indexing
menggunakan
inverted file indexing
,
•
Metode pencarian menggunakan pemodelan ruang vector,
•
Runtime
untuk pencarian menggunakan
index
native
sistem operasi
menggunakan Spotlight pada Mac OS X versi 10.4 atau lebih, untuk
sistem operasi UNIX lainnya menggunakan
locate
,
•
Runtime
untuk melakukan
preview
dokumen pada sistem operasi Mac
OS X versi 10.5 atau lebih menggunakan AppleScript dan QuickLook
(14)
•
Dapat berjalan dengan baik pada semua sistem operasi yang didukung
oleh Java SE atau JRE minimal versi 1.6.0.
I.6.
Definisi dan Singkatan
Bagian ini menjelaskan istilah-istilah teknis dan singkatan-singkatan yang
digunakan pada laporan ini. Untuk istilah-istilah teknis yang terdapat pada
laporan ini ditulis dengan cetak miring. Untuk istilah atau singkatan yang
merujuk pada suatu merek dagang atau nama fitur dari suatu merek dagang
akan ditulis dengan huruf pertama kapital tanpa cetak miring.
I.6.1.
JRE(Java Runtime Environment) atau JVM
Aplikasi dasar yang memungkinkan aplikasi yang dibuat dalam bahasa
pemrograman
Java
dalam berjalan pada setiap sistem operasi dan berbagai
jenis arsitektur perangkat keras. Aplikasi Java Search Tool dikembangkan
menggunakan teknologi Java SE(Standard Edition) yang merupakan
Java
Runtime
untuk aplikasi
desktop
.
I.6.2.
JDK(Java Development Kit)
Kumpulan dari
Compiler
dan
library
yang dikembangkan oleh SUN
Microsystem untuk mengembangkan aplikasi
desktop
berbasis bahasa
pemrograman
Java
.
Aplikasi
Java
Search
tool
dikembangkan
menggunakan
JDK
versi 1.6.
I.6.3.
Search Engine
Aplikasi yang memungkinkan penggunanya untuk dapat melakukan proses
pencarian
informasi
berdasarkan
kata
kunci
yang
diberikan.
Pengembangan aplikasi Java Search Tool merupakan salah satu
search
engine
.
I.6.4.
Inverted File Indexing
Salah satu metode untuk melakukan proses
indexing
yang memungkinkan
pembuatan dokumen
index
. Metode ini membagi dokumen
index
menjadi
(15)
I
!
""'keterangan mengenai jumlah dokumen dan nomor dokumen yang
memiliki kata yang terdapat dalam
lexicon
.
Inverted list
berisi keterangan
spesifik per dokumen terhadap kata yang terdapat dalam
lexicon
.
Sedangkan
lexicon
sendiri berisi keseluruhan kata yang ditemukan dengan
alamat dokumen yang memiliki kata tersebut.
I.6.5.
Vector Space Model
atau Pemodelan Ruang Vektor
Salah satu metode pencarian dokumen dengan menggunakan pendekatan
aljabar. Metode ini akan memproses kata kunci dan dokumen
index
yang
ada dengan pemodelan ruang vektor multi dimensi. Proses penilaian
dokumen dilakukan berdasarkan nilai kemiripan yang didapat dari
penghitungan bobot dokumen terhadap kata kunci. Metode ini merupakan
metode yang sangat umum digunakan di banyak
search engine
termasuk
Java Search Tool.
I.6.6.
Index
Dokumen ataupun
database
yang berisi informasi mengenai
dokumen-dokumen yang diperoleh melalui proses
indexing
dengan menggunakan
metode tertentu. Java Search Tool dapat membuat dokumen
index
ini
dengan menggunakan metode
inverted file indexing
.
I.6.7.
Google dan GoogleBase
Aplikasi berbasis
web
yang berfungsi sebagai
web
search engine
dikembangkan oleh Google, inc. Sementara itu, GoogleBase merupakan
suatu fitur yang dikembangkan oleh Google untuk menyediakan informasi
berupa produk, pekerjaan, jasa dan lain sebagainya. Informasi yang
disediakan oleh GoogleBase merupakan data dari klien ataupun
business
partner
dari Google sebagai sarana promosi bagi perusahaan tersebut.
I.6.8.
Mime Type
Informasi tipe dokumen yang disimpan pada
header
suatu dokumen
(16)
Java Search Tool memungkinkan pengenalan
mime type
menggunakan
library
MimeUtil.
I.6.9.
ID3Tag, ID3Tag versi 1.0 dan ID3Tag versi 2.3
Standar informasi tambahan yang dapat dimasukkan ke dalam dokumen
audio dan video. ID3Tag memungkinkan untuk memasukkan informasi
spesifik seperti
title
,
artist
,
publisher, DRM
dan bahkan dokumen gambar
pada dokumen audio dan video. Untuk ID3Tag versi 1.0, informasi yang
bisa disimpan hanya informasi lagu sederhana seperti
singer
,
composer
,
title
,
album
dan tahun produksi. Sementara untuk ID3Tag versi 2.3,
informasi seperti Digital Rights Management, dokumen gambar, lirik lagu
dan informasi pembelian dapat disimpan dalam ID3Tag. Aplikasi Java
Search Tool memungkinkan pencarian ID3Tag terhadap dokumen audio
dengan format MP3 menggunakan
library
JID3 versi 0.4.6.
I.6.10.
Runtime atau service
Aplikasi dasar yang pada umumnya dijalankan secara otomatis pada saat
sistem operasi dijalankan. Cara akses untuk setiap
runtime
atau
service
ini
diatur oleh masing-masing sistem operasi dan memiliki perlakuan yang
berbeda-beda. Aplikasi Java Search Tool menggunakan
runtime
atau
service
tertentu untuk metode pencarian menggunakan
index
native
sistem
operasi.
I.6.11.
Native dan native indexing service
Native
dalam dokumen ini merujuk pada kemampuan aplikasi untuk
melakukan akses terhadap proses atau
runtime
yang terdapat pada sistem
operasi dimana aplikasi dijalankan. Sementara itu,
native indexing service
merujuk pada
runtime
atau
service
yang bertanggung jawab untuk
melakukan proses
indexing
ataupun pencarian dokumen yang ditangani
(17)
I
!
"")I.6.12.
Native Library
Merupakan
library
ataupun kelas-kelas yang berasal dari sistem operasi
untuk mengangani proses-proses tertentu. Pada umumnya
native library
ditulis dalam bahasa pemrograman sesuai dengan bahasa pemrograman
yang digunakan untuk membuat sistem operasi tersebut. Pada laporan ini,
semua
native library
merujuk pada JNILIB atau
library
yang ditulis
menggunakan bahasa pemrograman C++ yang dapat dipanggil melalui
bahasa pemrograman Java.
I.6.13.
AppleScript
Suatu bahasa pemrograman sederhana yang dikembangkan oleh Apple, inc
untuk melakukan otomatisasi tugas-tugas sederhana dan eksekusi perintah.
AppleScript merupakan fitur utama pada sistem operasi Mac OS X dan
digunakan oleh Java Search Tool untuk melakukan eksekusi perintah
konsol agar dapat melakukan
preview
dokumen secara
native
oleh
QuickLook
.
I.6.14.
QuickLook
Runtime
yang memungkinkan pengguna untuk dapat melakukan
preview
dokumen tanpa harus membuka aplikasi yang dihubungkan dengan tipe
dokumen tersebut.
QuickLook
merupakan salah satu fitur utama yang
terdapat pada sistem operasi Mac OS X versi 10.5 dengan kode produksi
Leopard
.
QuickLook
mendukung sistem
plugin
yang membuat
runtime
ini
dapat mendukung hampir semua tipe data. Aplikasi Java Search Tool
mendukung penggunaan
runtime
ini untuk memudahkan pengguna dalam
melakukan
preview
dokumen hasil pencarian.
I.6.15.
Spotlight
Aplikasi
search engine
yang mulai dikenalkan mulai dari sistem operasi
Mac OS X versi 10.4 yang memungkinkan penggunanya untuk mencari
dokumen dengan mudah dan cepat.
Spotlight
merupakan aplikasi yang
(18)
mengakses
runtime
ini untuk melakukan pencarian dengan menggunakan
index native
dari
runtime Spotlight
.
I.6.16.
Locate
Aplikasi yang bersifat
runtime
yang memungkinkan penggunanya
melakukan pencarian dokumen. Aplikasi ini umumnya secara otomatis
terdapat pada sistem operasi berbasis UNIX seperti BSD, Linux,
OpenSolaris dan Mac OS X. Java Search Tool menggunakan
runtime
ini
untuk melakukan pencarian secara
native
pada sistem operasi berbasis
UNIX selain Mac OS X(menggunakan
Spotlight
).
I.6.17.
YouTube
Merupakan aplikasi berbasis
web
yang menyediakan jasa untuk berbagi
dokumen video yang dapat diakses oleh penggunanya melalui
web
streaming
. Aplikasi Java Search Tool memungkinkan pengguna untuk
melakukan pencarian dokumen video yang terdapat pada
YouTube
.
I.6.18.
DTrace
Merupakan bahasa pemrograman D yang dikembangkan oleh SUN
Microsystems, inc untuk melakukan
tracing
atau
monitoring
sistem
operasi keseluruhan atau suatu aplikasi yang sedang berjalan secara
low
level
atau berinteraksi langsung dengan
kernel
sistem operasi tersebut.
Pertama kali diimplementasikan pada sistem operasi Solaris 10. Saat ini
beberapa sistem operasi modern berbasis
kernel
BSD (Berkeley System
Distribution) dengan Mach
kernel
3.0 telah mengimplementasikan DTrace
menjadi bagian dari
kernel
sistem operasi tersebut.
DTrace dapat digunakan secara
code level
pada bahasa pemrograman
umum seperti C++, Objective-C dan Java dengan metode
mixed mode
.
Selain itu dapat juga dijalankan sebagai
script
terpisah yang ditujukan
terhadap aplikasi yang akan diuji.
(19)
I
!
""+I.6.19.
Apple Instruments
Merupakan aplikasi
development
yang terdapat pada sistem operasi Mac
OS X versi 10.5 ke atas, yang memungkinkan para pengembang untuk
merekam suatu aksi dan melakukan pengawasan terhadap penggunaan
resources
pada sistem. Aplikasi ini melakukan pengawasan
resources
dengan menggunakan DTrace yang telah disediakan maupun
script
DTrace yang didefinisikan oleh pengguna.
I.6.20.
I/O dan I/O Usage
Merupakan suatu kondisi yang menggambarkan penggunaan
input
dan
output
berupa transfer data dari suatu aplikasi terhadap alat
input
dan
output
. Pada umumnya persentase I/O Usage ditujukan terhadap aktivitas
media penyimpanan
non volatile
atau
disk drive
. Persentase nilai
dipengaruhi oleh kegiatan pembacaan, penulisan dan proses baca-tulis
secara bersamaan.
I.6.21.
CPU dan CPU Usage
CPU atau Central Processing Unit merupakan suatu alat utama dalam
sistem komputer yang berfungsi sebagai alat hitung dan
interpreter
untuk
memproses setiap proses atau
thread
yang sedang dijalankan oleh sistem
operasi ataupun suatu aplikasi. CPU Usage menggambarkan utilisasi
penggunaan CPU saat menjalankan suatu proses dalam nilai persentase.
Pada umumnya, persentase nilai CPU Usage digambarkan dengan jumlah
CPU dikalikan 100%. Nilai CPU usage maksimal untuk mesin dengan satu
CPU adalah 100%, mesin dengan dua CPU adalah 200% dan seterusnya.
I.6.22.
Object Allocation
Merupakan suatu proses dimana sebuah aplikasi melakukan proses
penciptaan objek dan mengalokasikan penggunaan memori pada sistem
untuk menyimpan objek tersebut.
(20)
I.6.23.
Memory Leak
Suatu kondisi dimana suatu aplikasi tidak melepas alokasi data di memori
saat suatu objek sudah tidak digunakan atau bahkan aplikasi tersebut
sudah tidak berjalan. Hal ini menyebabkan
resource
di memori tidak dapat
dipakai oleh proses atau aplikasi lainnya yang berakibat memperlambat
kinerja sistem dan dapat menyebabkan kelumpuhan sistem.
I.6.24.
Garbage Collector
Merupakan sebuah
bot
ataupun
runtime
yang dijalankan oleh sistem atau
runtime
bahasa pemrograman untuk melakukan pembersihan data di
memori dan melepas
resource
yang sudah tidak dipakai. Hal ini untuk
menghindari suatu aplikasi atau proses menyebabkan
memory leak
.
Biasanya ditulis dalam bahasa pemrograman
assembly
dan terdapat pada
sistem operasi modern ataupun pada
runtime
bahasa pemrograman.
I.7.
Struktur Laporan
Laporan tugas akhir ini terdiri dari enam bab dengan penjelasan sebagai
berikut:
•
Bab I. Pendahuluan
Gambaran umum tentang aplikasi yang dikembangkan pada tugas akhir
ini. Menjelaskan latar belakang pemilihan topik, istilah - istilah khusus
serta pembatasan cakupan masalah yang akan diimplementasikan
pada aplikasi.
•
Bab II. Spesifikasi Produk
Gambaran teknis dari aplikasi, berisi gambaran keseluruhan aplikasi dan
spesifikasi produk.
•
Bab III. Desain Perangkat Lunak
Berisi pemodelan rancangan aplikasi dalam bentuk diagram-diagram
beserta penjelasannya.
(21)
I
!
##""•
Bab IV. Implementasi Desain
Berisi implementasi pengembangan aplikasi dalam bentuk bahasa
pemrograman dengan mengacu pada desain perangkat lunak yang ada
pada bab 3.
•
Bab V. Pengujian
Membahas metode pengujian aplikasi untuk kemudian mengambil
kesimpulan mengenai fungsionalitas produk akhir dan hasil yang dicapai
serta perbandingan dengan gambaran yang tercantum pada bab 1 dan
bab 2.
•
Bab VI. Kesimpulan dan Saran
Berisi kesimpulan dari pengembangan aplikasi dan saran-saran untuk
pengembangan lebih lanjut di masa yang akan datang.
(22)
Bab VI :
Kesimpulan dan Saran
Bab ini menjelaskan mengenai kesimpulan dan saran pengembangan aplikasi serta
keterkaitannya dengan hasil pengujian dan evaluasi aplikasi.
VI.1.
Saran Pengembangan
Berikut adalah saran-saran pengembangan aplikasi:
•
Menyediakan fitur untuk
partial indexing
sehingga memungkinkan
untuk proses
update index
tanpa harus mengulang proses
indexing
dari
awal,
•
Metode untuk
indexing
sebaiknya diganti dengan menggunakan
algoritma
indexing
genetik.
VI.2.
Keterkaitan antara Kesimpulan dan Hasil Evaluasi
Tujuan dari pengembangan aplikasi ini adalah untuk membuat aplikasi
search engine
berbasis pada
inverted file indexing
dan metode pencarian
ruang vektor yang juga mendukung pencarian melalui
native indexing
service
sistem operasi dan pencarian melalui jaringan internet Google.
Setelah melakukan pengujian terhadap fitur-fitur utama, aplikasi mampu
melakukan proses
indexing
, implementasi
vector space model
, integrasi
dengan sistem operasi dan pencarian melalui Google dengan cukup baik.
Kekurangan aplikasi ini terdapat pada pencarian dengan kata kunci berupa
frasa 3 kata atau lebih, hasil yang ditampilkan kurang akurat.
VI.3.
Keterkaitan antara Saran dan Hasil Evaluasi
Setelah melakukan proses pengujian maka disarankan untuk pengembangan
aplikasi ini adalah perbaikan dalam implementasi algoritma
vector space
model
ataupun mengganti algoritma pencarian dengan algoritma genetik.
Selain itu, proses
indexing
harus dioptimalkan kembali agar penggunaan
memori sistem dapat dikurangi.
(23)
VI
!
###""VI.4.
Rencana Perbaikan terhadap Saran yang Diberikan
Langkah-langkah yang diambil untuk pengembangan aplikasi ini adalah:
•
Mengganti algoritma pencarian dengan algoritma pencarian genetik,
•
Menggunakan JNI
library
untuk proses
indexing
.
Semua langkah-langkah pengembangan di atas dapat dilakukan oleh setiap
pengembang aplikasi berbasis Java ataupun C++ mengingat aplikasi ini
bersifat
open source
dengan lisensi Mozilla Public License.
(24)
Referensi
[Harold 1999] Elliotte Rusty Harold. “Java IO”. O’Reilly (1999).
[Harold 2002] Elliotte Rusty Harold. “Processing XML with Java”.
Addison-Wesley (2002).
[Lafore 1998] Robert Lafore. “Data Structures and Algorithms in Java”. Sams
(1998).
[Witten, Moffat and Bell 1999] Ian H. Witten, Alistair Moffat and Timothy C Bell
“Managing Gigabytes second edition”. Academic Press (1999).
[Apache 2008] Apache Software Foundation. “Apache POI Library”. Apache
Software Foundation (17 April 2008).
http://poi.apache.org
[Berkeley 2008] UC Berkeley. “Information Retrieval Courses Material”.
Computer
Science
Department
of
UC
Berkeley
(17
April
2008).
http://people.ischool.berkeley.edu/~hearst/irbook/
[Blinkenlights 2008] Blinkenlights. “JID3 Library”. Blinkenlights (17 April
2008).
http://jid3.blinkenlights.org/
[Apple 2008] Apple, inc. “Apple Human Interface Guidelines”. Apple, inc (17
April 2008).
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGu
idelines/
(25)
!
##%""[Google 2008] Google, inc. “Google Data API. Google Code”. Google (17 April
2008)
http://code.google.com/apis/gdata/client-java.html
[SUN 2008] SUN Microsystems. “The Java Tutorials”. SUN Microsystem (17
April 2008).
http://java.sun.com/docs/books/tutorial
[O’Neill 2008] Christopher O’Neill. “Paice/Husk Stemmer”. Lancaster University
Computer Science Department (17 April 2008).
http://www.comp.lancs.ac.uk
[PDFBox 2008] PDFBox org. “PDFBox Library”. PDFBox org (17 April 2008).
http://www.pdfbox.org
(1)
I !#,""
I.6.23.
Memory Leak
Suatu kondisi dimana suatu aplikasi tidak melepas alokasi data di memori saat suatu objek sudah tidak digunakan atau bahkan aplikasi tersebut sudah tidak berjalan. Hal ini menyebabkan resource di memori tidak dapat dipakai oleh proses atau aplikasi lainnya yang berakibat memperlambat kinerja sistem dan dapat menyebabkan kelumpuhan sistem.
I.6.24.
Garbage Collector
Merupakan sebuah bot ataupun runtime yang dijalankan oleh sistem atau
runtime bahasa pemrograman untuk melakukan pembersihan data di
memori dan melepas resource yang sudah tidak dipakai. Hal ini untuk menghindari suatu aplikasi atau proses menyebabkan memory leak. Biasanya ditulis dalam bahasa pemrograman assembly dan terdapat pada sistem operasi modern ataupun pada runtime bahasa pemrograman.
I.7.
Struktur Laporan
Laporan tugas akhir ini terdiri dari enam bab dengan penjelasan sebagai berikut:
• Bab I. Pendahuluan
Gambaran umum tentang aplikasi yang dikembangkan pada tugas akhir ini. Menjelaskan latar belakang pemilihan topik, istilah - istilah khusus serta pembatasan cakupan masalah yang akan diimplementasikan pada aplikasi.
• Bab II. Spesifikasi Produk
Gambaran teknis dari aplikasi, berisi gambaran keseluruhan aplikasi dan spesifikasi produk.
• Bab III. Desain Perangkat Lunak
Berisi pemodelan rancangan aplikasi dalam bentuk diagram-diagram beserta penjelasannya.
(2)
Berisi implementasi pengembangan aplikasi dalam bentuk bahasa pemrograman dengan mengacu pada desain perangkat lunak yang ada pada bab 3.
• Bab V. Pengujian
Membahas metode pengujian aplikasi untuk kemudian mengambil kesimpulan mengenai fungsionalitas produk akhir dan hasil yang dicapai serta perbandingan dengan gambaran yang tercantum pada bab 1 dan bab 2.
• Bab VI. Kesimpulan dan Saran
Berisi kesimpulan dari pengembangan aplikasi dan saran-saran untuk pengembangan lebih lanjut di masa yang akan datang.
(3)
VI
!##$""
Bab VI :
Kesimpulan dan Saran
Bab ini menjelaskan mengenai kesimpulan dan saran pengembangan aplikasi serta keterkaitannya dengan hasil pengujian dan evaluasi aplikasi.
VI.1.
Saran Pengembangan
Berikut adalah saran-saran pengembangan aplikasi:
• Menyediakan fitur untuk partial indexing sehingga memungkinkan untuk proses update index tanpa harus mengulang proses indexing dari awal,
• Metode untuk indexing sebaiknya diganti dengan menggunakan algoritma indexing genetik.
VI.2.
Keterkaitan antara Kesimpulan dan Hasil Evaluasi
Tujuan dari pengembangan aplikasi ini adalah untuk membuat aplikasi search engine berbasis pada inverted file indexing dan metode pencarian ruang vektor yang juga mendukung pencarian melalui native indexing service sistem operasi dan pencarian melalui jaringan internet Google. Setelah melakukan pengujian terhadap fitur-fitur utama, aplikasi mampu melakukan proses indexing, implementasi vector space model, integrasi dengan sistem operasi dan pencarian melalui Google dengan cukup baik. Kekurangan aplikasi ini terdapat pada pencarian dengan kata kunci berupa frasa 3 kata atau lebih, hasil yang ditampilkan kurang akurat.
VI.3.
Keterkaitan antara Saran dan Hasil Evaluasi
Setelah melakukan proses pengujian maka disarankan untuk pengembangan aplikasi ini adalah perbaikan dalam implementasi algoritma vector space model ataupun mengganti algoritma pencarian dengan algoritma genetik. Selain itu, proses indexing harus dioptimalkan kembali agar penggunaan memori sistem dapat dikurangi.
(4)
Langkah-langkah yang diambil untuk pengembangan aplikasi ini adalah: • Mengganti algoritma pencarian dengan algoritma pencarian genetik, • Menggunakan JNI library untuk proses indexing.
Semua langkah-langkah pengembangan di atas dapat dilakukan oleh setiap pengembang aplikasi berbasis Java ataupun C++ mengingat aplikasi ini bersifat open source dengan lisensi Mozilla Public License.
(5)
!##$""
Referensi
[Harold 1999] Elliotte Rusty Harold. “Java IO”. O’Reilly (1999).
[Harold 2002] Elliotte Rusty Harold. “Processing XML with Java”. Addison-Wesley (2002).
[Lafore 1998] Robert Lafore. “Data Structures and Algorithms in Java”. Sams (1998).
[Witten, Moffat and Bell 1999] Ian H. Witten, Alistair Moffat and Timothy C Bell “Managing Gigabytes second edition”. Academic Press (1999).
[Apache 2008] Apache Software Foundation. “Apache POI Library”. Apache Software Foundation (17 April 2008).
http://poi.apache.org
[Berkeley 2008] UC Berkeley. “Information Retrieval Courses Material”. Computer Science Department of UC Berkeley (17 April 2008). http://people.ischool.berkeley.edu/~hearst/irbook/
[Blinkenlights 2008] Blinkenlights. “JID3 Library”. Blinkenlights (17 April 2008).
http://jid3.blinkenlights.org/
[Apple 2008] Apple, inc. “Apple Human Interface Guidelines”. Apple, inc (17 April 2008).
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGu idelines/
(6)
2008)
http://code.google.com/apis/gdata/client-java.html
[SUN 2008] SUN Microsystems. “The Java Tutorials”. SUN Microsystem (17 April 2008).
http://java.sun.com/docs/books/tutorial
[O’Neill 2008] Christopher O’Neill. “Paice/Husk Stemmer”. Lancaster University Computer Science Department (17 April 2008).
http://www.comp.lancs.ac.uk
[PDFBox 2008] PDFBox org. “PDFBox Library”. PDFBox org (17 April 2008). http://www.pdfbox.org