Selasa, 27 September 2011

Sistem Terdistribusi - Agent

PENDAHULUAN

Dewasa ini banyak sekali digunakan kosa kata agent, baik dalam bidang informatika dan ilmu komputer, seperti software engineering, artificial intelligence (AI), distributed system, dsb, maupun dalam bidang lain yang terkait, misalnya bidang industri, manufacturing, bisnis, electronic commerce, dsb. Populernya penggunakan teknologi agent pada berbagai bidang ilmu bukan berarti membuat jelas definisi agent. Tetapi justru membuat definisi agent semakin tidak jelas, karena setiap peneliti berusaha untuk mendefinisikan agent sesuai dengan latar belakang ilmu yang mereka miliki. Bagaimanapun juga sampai saat ini belum ada kesepakatan dari para peneliti tentang definisi formal mengenai apa yang disebut dengan agent. Akibat yang timbul dari tidak adanya kesepakatan definisi agent adalah, munculnya penggunaan agent dengan banner yang bermacam-macam, meskipun yang dimaksud kadang-kadang adalah sama, ataupun tidak ada perbedaaan yang signifikan didalamnya, misalnya adalah penggunaan kata-kata, intelligent agent, agent technology, software agent, autonomous agent, ataupun agent.

Mobile Agent

Mobile agent adalah agen yang aktif dan dapat bergerak menuju komputer lain, atau mejelajahi jaringan untuk menjalankan tugasnya. Mobile agent sering digunakan untuk mengumpulkan data, informasi atau suatu perubahan. Mobile agent tidak terikat pada sistem dimana ia mulai dieksekusi. Mobile agent mempunyai kemampuan unik untuk memindahkan dirinya sendiri dari satu sistem ke sistem yang lain dalam suatu jaringan. Kemampuan untuk berkeliling memungkinkan Mobile agent untuk berpindah ke sistem yang mengandung obyek yang akan berinteraksi dengan agen dan kemudian mengambil manfaat selama berada dalam host dan jaringan yang sama dengan obyek.

Secara praktis dapat dikatakan bahwa Mobile agent adalah sebuah program yang dapat menghentikan eksekusi, berjalan melalui jaringan dengan membawa kode dan state-nya, dan kemudian melanjutkan eksekusinya pada host yang lain. Aglets merupakan contoh perangkat lunak yang memungkinkan pengembangan dan penerapan mobile agents ini.

Beberapa penerapan dari Mobile agent: Pengumpulan data, pencarian dan penyaringan, pemantauan asinkron, dan pemrosesan paralel.

Keuntungan Mobile agent

Ada beberapa keuntungan yang dapat dari penerapan Mobile agent bila dibandingkan dengan teknologi agen yang lain, misalnya RMI. Meskipun kenyataannya hampir semua masalah dalam komputasi terdistribusi dapat diselesaikantanpa menggunakan Mobile agent, namun dengan menerapkan Mobile agent akan dapat memudahkan pengembangan aplikasi dan dapat meningkatkan keandalan dan efisiensi. Sedikitnya ada beberapa keuntungan yang didapatkan dari Mobile agent:

1. Mengurangi beban jaringan:

Sistem terdistribusi sangat tergantung pada protokol komunikasi yang melibatkan banyak interaksi untuk menyelesaikan tugas yang diberikan. Akibatnya, traffic jaringan tinggi. Sebaliknya, Mobile agent memungkinkan untuk mengemas suatu aplikasi , mengirimkannya ke host tujuan dan kemudian interaksi dapat terjadi secara lokal. Mobile agent juga bermanfaat untuk mengurangi aliran data pada jaringan. Jika terdapat data dengan jumlah yang sangat besar tersimpan di remote host, maka lebih baik memproses data tersebut secara lokal ditempatnya, dari pada mengirimkannya melalui jaringan. Moto Mobile agent adalah: lebih baik memindahkan komputasi ke temapat data, dari pada memindahkan data ke tempat komputasi.

2. Efisiensi sumber daya:

Konsumsi sumber daya (CPU dan memori) dapat dihemat, sebab Mobile agent menetap dan bekerja hanya pada satu node pada satu waktu. Node yang lain tidak menjalankan agen sampai node tersebut memerlukannya.

3. Menanggulangi latency jaringan:

Sistem real-time yang kritis perlu tanggap terhadap perubahan lingkungannya secara real-time. Keterlambatan tanggapan yang diakibatkan oleh masalah jaringan harus dihindari. Mobile agent menawarkan suatu pemecahan dengan mengirimkan agen ke tujuan dan dieksekusi secara lokal.

4. Encapsulate protocol :

Ketika terjadi pertukaran data pada sistem terdistribusi, setiap host memiliki kode sebagai implementasi dari protokol yang diperlukan untuk mengkode data yang keluar dan menerjemahkan data yang masuk secara tepat. Untuk menjamin kompatibilitas, kode-kode protokol tersebut sudah dibakukan. Teatapi untuk mengakomodasi keperluan efisiensi dan keamanan yang lebih baru, tidak praktis bila harus meng-upgrade kode protokol tersebut, meskipun hal tersebut meungkinkan. Mobile agent dapat memecahkan masalah tersebut, karena Mobile agent dapat dikirim ke remote host dengan tujuan untuk membentuk “channel” yang berdasarkan protokol yang sudah baku tersebut.

5. Eksekusi secara asynchronous dan autonomous:

Perangkat mobile sering kali harus menggunakan koneksi jaringan yang mahal dan mudah putus. Pekerjaan dapat digabungkan ke dalam Mobile agent yang kemudian dapat dikirimkan ke tujuan. Setelah dikirimkan dan sampai ke tujuan, koneksi antara perangkat mobile dan jaringan dapat diputuskan. Mobile agent menjadi berdiri sendiri dan dapat beroperasi secara asynchronous dan autonomous. Kemudian, perangkat Mobile dapat dikoneksikan ke jaringan untuk mengambil dan mengumpulkan kembali agen yang telah dikirimkan. Dengan cara disconected operation ini agent dispatched tidak memerlukan sistem asal untuk tetap aktif sementara mereka dieksekusi. Mereka juga bisa menunggu (work while you sleep)

6. Beradaptasi secara dinamis:

Mobile agent mempunyai kemampuan untuk mengetahui perubahan di lingkungan eksekusinya dan dapat bereaksi secara autonomous melakukan perubahan. Multiple Mobile agent mempunyai kemampuan yang khas untuk berdistribusi sendiri di antara host-host dalam jaringan sedemikian rupa untuk memelihara konfigurasi yang optimal untuk penyelesaian masalah khusus.

7. Andal dan toleran terhadap kesalahan :

Kemampuan mobile agent untuk berinteraksi secara dinamis pada situasi dan keadaan yang tak menguntungkan menjadikan Mobile agent mudah untuk membuat sistem terdistribusi yang andal dan toleran terhadap kesalahan. Jika sebuah host akan di-shutdown , semua agen yang sedang eksekusi di mesin tersebut akan diberi peringatan dan diberikan waktu untuk berpindah dan melanjutkan operasinya di host yang laindalam jaringan tersebut.

8. Mendukung lingkungan yang heterogen:

Komputasi jaringan pada dasarnya sangat heterogen. Baik pada sisi perangkat keras maupun perangkat lunak. Mobile agent tidak tergantung pada komputer dan jaringan, tetapi hanya bergantung pada lingkungan eksekusinya. Sebagai contoh, Mobile agent java dapat ditujukan ke segala sistem yang mempunyai JVM ( Java Virtual Machine).

9. Real Time Notification:

Agen yang ditempatkan pada remote site bisa memberitahukan perubahan isi secara cepat ( misal upgrade software,pasar saham). Tanpa harus diminta oleh user. Ini juga terkait dengan hasil pencarian yang up todate, meningkatkan kemampuan penyimpanan data terpusat yang telah ada.

10. Ekekusi paralel:

Komputasi masif bisa dibagi ke dalam sejumlah agen, dilakukan dispatch ke node yang paling sesuai untuk eksekusi dari tiap komponen, dan merakitnya di home. Sumber daya hardware bukan lagi batasan.

11. Paradigma Komputasi yang adaptif:

Mobile agent bisa di-retract,dispatch, clone atau deactivate sesuai dengan perubahan kondisi.

12. Skalabilitas:

Bila jumlah elemen komputasi di jaringan meningkat, agen baru bisa dikirim atau clone dan dispatch ke mesin baru di jaringan.

Software Agent

Adalah entitas perangkat lunak yang didedikasikan untuk tujuantertentu yang memungkinkan user untuk mendelegasikan tugasnya secara mandiri,selanjutnya software agent nantinya disebut agent saja. Agent bisa memiliki idesendiri mengenai bagaimana menyelesaikan suatu pekerjaan tertentu atau agendatersendiri. Agent yang tidak berpindah ke host lain disebut stationary agent.

Karakteristik dari Agen :

1. Autonomy :

Agent dapat melakukan tugas secara mandiri dan tidak dipengaruhi secara langsung oleh user, agent lain ataupun oleh lingkungan (environment). Untuk mencapai tujuan dalam melakukan tugasnya secaramandiri, agent harus memiliki kemampuan kontrol terhadap setiap aksi yangmereka perbuat, baik aksi keluar maupun ke dalam.

2. Intelligence, Reasoning, dan Learning :

Setiap agent harus mempunyaistandar minimum untuk bisa disebut agent, yaitu intelegensi ( intelligence ). Dalam konsep intelligence, ada tiga komponen yang harus dimiliki: internal knowledge base, kemampuan reasoning berdasar padaknowledge baseyangdimiliki, dankemampuanlearninguntuk beradaptasi dalam perubahanlingkungan.

3. Mobility dan Stationary :

Khusus untuk mobile agent , dia harus memilikikemampuan yang merupakan karakteristik tertinggi yang dia miliki yaitumobilitas. Berbeda denganstationary agent . Tetapi keduanya tetap harusmemiliki kemampuan untuk mengirim pesan dan berkomunikasi dengan agentlain.

4. Delegation :

Agent bergerak dalam kerangka menjalankan tugas yangdiperintahkan oleh user. Fenomena pendelegasian (delegation) ini adalahkarakteristik utamasuatu program disebut agent.

5. Reactivity :

Kemampuan untuk bisa cepat beradaptasi dengan adanyaperubahan informasi yang ada dalam suatu lingkungan. Lingkungan itu bisamencakup: agent lain, user, informasi dari luar, dsb.

6. Proactivity dan Goal-Oriented :

Sifat proactivity boleh dibilang adalahkelanjutan dari sifat reactivity . Agent tidak hanya dituntut bisa beradaptasiterhadap perubahan lingkungan, tetapi juga harus mengambil inisiatif langkahpenyelesaian apa yang harus diambil. Untuk itu agentharus didesain memiliki tujuan (goal) yang jelas, dan selalu berorientasikepada tujuan yang diembannya (goal-oriented ).

7. Communication and Coordination Capability :

Agent harus memilikikemampuan berkomunikasi dengan user dan juga agent lain. Masalahkomunikasi dengan user adalah masuk ke masalah user interface dan perangkatnya, sedangkan masalah komunikasi, koordinasi, dan kolaborasidengan agent lain adalah masalah sentral penelitian Multi Agent System (MAS).

Bagaimanapun juga, untuk bisa berkoordinasi dengan agent laindalam menjalankan tugas, perlu bahasa standard untuk berkomunikasi. TimFinin adalah peneliti software agent yang banyak berkecimpung dalam riset mengenaibahasa dan protokol komunikasi antar agent. Salah satu produk mereka adalah Knowledge Query and Manipulation Language (KQML). Dan masih terkaitdengan komunikasi antar agent adalah Knowledge Interchange Format (KIF).

Klasifikasi Software Agent

1. Klasifikasi menurut Karakteristik yang Dimiliki

Menurut Nwana, agent bisa diklasifikasikan menjadi delapan berdasarkan pada karakteristiknya.

a. Collaborative Agent :

Agent yang memiliki kemampuan melakukan kolaborasidan koordinasi antar agent dalam kerangka Multi Agent System (MAS).

b. Interface Agent :

Agent yang memiliki kemampuan untuk berkolaborasidengan user, melakukan fungsi monitoring dan learning untuk memenuhikebutuhan user.

c. Mobile Agent :

Agent yang memiliki kemampuan untuk bergerak dari suatutempat ke tempat lain, dan secara mandiri melakukan tugas ditempat barunyatersebut, dalam lingkungan jaringan komputer.

d. Information dan Internet Agent :

Agent yang memiliki kemampuan untuk menjelajah internet untuk melakukan pencarian, pemfilteran, dan penyajianinformasi untuk user, secara mandiri. Atau dengan kata lain, memanageinformasi yang ada di dalam jaringan Internet.

e. Reactive Agent :

Agent yang memiliki kemampuan untuk bisa cepatberadaptasi dengan lingkungan baru dimana dia berada.

f. Hybrid Agent :

Kita sudah mempunyai lima klasifikasi agent . Kemudian agent yang memiliki katakteristik yang merupakan gabungan dari karakteristik yangsudah kita sebutkan sebelumnya adalah masuk ke dalam

hybrid agent .

g. Heterogeneous Agent System :

Dalam lingkungan Multi Agent System (MAS),apabila terdapat dua atau lebih hybrid agent yang memiliki perbedaankemampuan dan karakteristik, maka sistem MAS tersebut kita sebut dengan heterogeneous agent system.

2. Klasifikasi menurut Lingkungan Dimana Dijalankan

a. Desktop Agent :

Agent yang hidup dan bertugas dalam lingkungan Personal Computer (PC), dan berjalan diatas suatu Operating System (OS).

b. Internet Agent :

Agent yang hidup dan bertugas dalam lingkungan jaringanInternet, melakukan tugas memanage informasi yang ada di Internet.Termasuk dalam klasifikasi ini adalah:

Web Search Agent

Web Server Agent

Information Filtering Agent

Information Retrieval Agent

Notification Agent

Service Agent

Mobile Agent

c. Intranet Agent :

Agent yang hidup dan bertugas dalam lingkungan jaringanIntranet, melakukan tugas memanage informasi yang ada di Intranet.Termasuk dalam klasifikasi ini adalah:

Collaborative Customization Agent

Process Automation Agent

• Database Agent

Resource Brokering Agent

Bahasa Pemrograman yang digunakan

Bahasa pemrograman yang dipakai untuk tahap implementasi dari softwareagent, sangat menentukan keberhasilan dalam implementasi agent sesuai dengan yangdiharapkan. Beberapa peneliti memberikan petunjuk tentang bagaimana karakteristik bahasa pemrorgaman yang sebaiknya di pakai. Diantaranya yaitu :

1. Object-Orientedness:

Karena agent adalah berhubungan dengan obyek, bahkan beberapa penelitimenganggap agent adalah obyek yang aktif, maka juga agent harusdiimplementasikan kedalam pemrorgaman yang berorientasi obyek (object-orientedprogramming language).

2. Platform Independence:

Seperti sudah dibahas pada bagian sebelumnya, bahwa agent hidup danberjalan diberbagai lingkungan. Sehingga idealnya bahasa pemrograman yang dipakaiuntuk implementasi adalah yang terlepas dari platform, atau dengan kata lain programtersebut harus bisa dijalankan di platform apapun (platform independence).

3. Communication Capability:

Pada saat berinteraksi dengan agent lain dalam suatu lingkungan jaringan(network environment), diperlukan kemampuan untuk melakukan komunikasi secarafisik. Sehingga diperlukan bahasa pemrograman yang dapat mensupportpemrograman yang berbasis network dan komunikasi.

4. Security:

Faktor keamanan (security) adalah factor yang sangat penting dalam memilihbahasa pemrorgaman untuk implementasi software agent. Terutama untuk mobilagent, diperlukan bahasa pemrograman yang mensupport level-level keamanan yangbisa membuat agent bergerak dengan aman.

5. Code Manipulation:

Beberapa aplikasi software agent memerlukan manipulasi kode programsecara runtime, sehingga diperlikan bahasa pemrograman untuk software agent yangdapat menangani masalah runtime tersebut.Dari karakteristik di atas dapat disimpulkan bahwa bahasa pemrograman yang layak untuk mengimplementasikan software agent adalah sebagai berikut :

Java

• Telescript

• Tcl/Tk, Safe-Tcl, Agent-Tcl

Referensi :

- ikc.dinus.ac.id/umum/romi/romi-agent.doc

- http://www.scribd.com/doc/46591625/Bab-3-Proses

- budi.insan.co.id/courses/ec7010/2003/report-bambang-revisi.doc