Latar Belakang
Saat ini dalam pengerjaan suatu aplikasi dibutuhkan waktu yang sangat lama dan kurang
efektif, sehingga dapat merugikan pengguna dan programer itu sendiri. Dengan memparalelisasi
algoritma sequence alignment ini adalah suatu metode untuk mempersingkat waktu pengerjaan
agar lebih efektif. Awalnya jika hanya dapat dibuka dalam satu dekstop saja dengan paralelisasi
ini aplikasi tersebut dapat dibuka di beberapa dekstop. Untuk memparalelisasi algoritma ini
dapat menggunakan Java RMI (remote method invocation), Sebuah interface pada Java hanyalah
berisi definisi method apa saja yang dapat digunakan oleh suatu objek dan tidak berisi kode
logika perintah yang digunakan. Agar sebuah interface dapat diberikan logika perintahnya, maka
harus dibuat sebuah class yang menerapkan (implementation) dari interface tersebut.
Perumusan Masalah
Masalah yang dibahas pada penelitian ini adalah:
- Bagaimana cara memparalelkan algoritma sequence alignment Needleman-Wunsch
dengan menggunakan java RMI?
Batasan Masalah
Penulisan dan penelitian pada tugas Riset Tekno-Info ini mempunyai batasan sehingga
menghindari pembahasan yang terlalu luas. Adapun batasan-batasan tersebut seperti:
- Sistem perangkat lunak dibangun dengan menggunakan bahasa pemrograman JAVA
RMI.
- Metode penyejajaran dengan menggunakan algoritma Needleman-Wunsch
A G C T
1
A 0 0 0 0
G 0 10 0 0
C 0 0 10 0
T 0 0 0 10
Isi matriks F(i,j) dari gambar 2.1 adalah skor yang optimal dari alignment antara X1
sampai Xi dengan Y1 sampai Yj. Sedangkan F(0,0) adalah alignment antara ” ” dengan ” ”, yaitu
alignment antara string kosong dengan string kosong. Selanjutnya dapat dilakukan pengisian
matriks, sebagai contoh:
F(0,1) adalah align " " dengan "T" sehingga bernilai -10,
F(0,2) adalah align " " dengan "TA" sehingga bernilai -20,
F(1,0) adalah align "T" dengan " " sehingga bernilai -10,
F(2,0) adalah align "TA" dengan " " sehingga bernilai -20.
Untuk mengisi nilai F(1,1), yaitu mengkomparasi C dengan C, hal ini diperlukan
pencarian sub-problem. Untuk komparasi C dengan C, dengan memperhitungkan nilai komparasi
gap, terdapat tiga kandidat:
1. skor gap dan gap + nilai match/mismatch C dan C,
2. skor gap dan C + nilai alignment C dengan gap,
3. skor C dan gap + nilai gap dan alignment C.
Ketiga skor diatas adalah nilai matriks yang telah didapatkan sebelumnya, untuk point 1
nilai skor gap dan gap adalah nilai dari F(i-1,j-1) yaitu kotak diagonal atas kiri. Point 2 nilai skor
gap dan C adalah nilai dari F(i,j-1) yaitu kotak kiri dan point 3 nilai C dan skor gap adalah nilai
dari F(i-1,j) yaitu kotak atas.
Dari ketiga nilai tersebut kandidat pertama yaitu F(i-1,j-1) menghasilkan nilai (0+10 =
10). Kandidat kedua dan ketiga yaitu F(i,j-1) dan F(i-1,j) menghasilkan nilai yang sama yaitu (-
10 + -10 = -20), sehingga nilai yang paling optimal adalah nilai dari kandidat pertama, maka
nilai dari kandidat pertama ini akan mengisi F(1,1).
Nilai-nilai lain dari F(i,j) selanjutnya dapat diisi, dan kesemuanya dapat diformulasikan
dalam hubungan :
Basis:
F(0,0) = 0;
F(0,j) = skorgap * j; j>0
F(i,0) = skorgap * i; i>0
Rekursi, berdasarkan prinsip optimalisasi:
F(i,j) = max(F(i − 1,j − 1) + skor match/mismatch; F(i,j − 1)+skorgap; F(i−1,j)+skorgap)
C G C G A
| | * |
C G T G -
RMI mulai diperkenalkan pada Java 1.1, dengan tujuan menyediakan fasilitas kepada
programmer untuk dapat mendistribusikan objek yang digunakan pada beberapa proses yang
berbeda, dapat berjalan di dalam satu mesin ataupun di beberapa mesin yang terhubung dalam
jaringan. Fasilitas RMI ini ingin memberikan kemudahan, karena pembuatan antar muka
(interface) dan implementasinya menggunakan kelas java biasa.
a. Arsitektur RMI
Dalam RMI, pendefinisian interface (behavior) dan penerapan dari interface tersebut
merupakan dua konsep yang berbeda, artinya keduanya dapat berjalan pada dua JVM yang
berbeda.
Sebuah interface pada Java, hanyalah berisi definisi method apa saja yang dapat
digunakan oleh suatu objek dan tidak berisi kode logika perintah yang digunakan. Agar sebuah
interface dapat diberikan logika perintahnya, maka harus dibuat sebuah class yang menerapkan
(implementation) dari interface tersebut.
Pada RMI dimungkinkan untuk membuat dua class yang menerapkan dari satu interface
yang telah didefinisikan. Satu class menerapkan behavior dari interface tersebut (berjalan di sisi
server), dan satu class lagi bertindak sebagai proxy untuk remote service (server object) yang
berjalan di client.
Program client melakukan pemanggilan method ke server melalui proxy. Jika remote
method yang dipanggil mengembalikan nilai, maka pengembalian tersebut ditangkap oleh proxy,
Ketika sebuah program client memanggil sebuah remote method service, stub dan
skeleton akan meneruskan ke variabel referensi interface. Stub dan skeleton dinyatakan dengan
proxy.
Layer kedua (Remote Reference Layer) menyediakan objek RemoteRef yang
menyatakan hubungan ke objek remote service implementation. Objek stub akan menggunakan
method invoke() dalam RemoteRef untuk meneruskan pemanggilannya. Pada Java 1.1
disediakan satu cara kepada client untuk berhubungan dengan remote service implementation,
yaitu unicast.
RMI dapat menggunakan directory service, seperti JNDI. Namun RMI telah tersedia
semacam directory service disebut RMI Registry, yang disediakan oleh tool rmiregistry. RMI
Registry secara default menggunakan port 1099.
Pada sisi server, program membuat sebuah remote service dengan cara membuat locala
object yang menerapkan service tersebut. Berikutnya, objek yang dibuat tersebut diexport ke
RMI, dan kemudian RMI membuat sebuah layanan listening yang menunggu sebuah permintaan
dari client. Setelah melakukan export, server meregisterkan objek tersebut ke RMI Registry
dengan sebuah public name.
Di sisi client, RMI Registry diakses melalui static class Naming. Class ini menyediakan
method lookup() dimana client menggunakannya untuk query sebuah registry. Method lookup()
menerima sebuah URL yang menyatakan nama server dan nama service yang diminta, dan
method ini mengembalikan remote reference object dari yang objek yang diminta. Format
URLnya
rmi://<host_name>[:<name_service_port>]/<service_name>
Untuk mendistribusikan aplikasi yang menggunakan RMI, dapat dilakukan dengan cara
menduplikat semua class yang dibutuhkan yang digunakan baik oleh server maupun client,
antara lain :
untuk server :
remote service interface
remote service implementation
stub remote service implementation
semua server class
untuk client :
remote service interface
stub remote service implementation
server class yang dipanggil oleh client
semua client class
Rencana Tahapan Penelitian:
Kegiatan
Koleksi
kebutuhan
Analisis
kebutuhan
Design program
Testing
laporan
Implementasi
Minggu ke 1 2 3 4 5 6 7 8 9 10
TUGAS RTI
DISUSUN OLEH :
UNIVERSITAS TRISAKTI
JAKARTA
2010
Lembar Pengesahan
TUGAS RTI
Disetujui Oleh:
Abdul Rochman
Dosen Pembimbing