Pengantar Software Agent: Teori dan Aplikasi
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. Pada makalah ini kami menggunakan kata agent dan software agent untuk mewakili beberapa kosa kata tersebut diatas.
Pada makalah ini akan dibahas tentang teknologi agent, baik dalam tinjauan teori maupun praktis, dan juga akan dijelaskan tentang aplikasi dari teknologi agent diberbagai bidang penelitian.
Pengorganisasian makalah ini adalah sebagai berikut. Penjelasan kita mulai dengan sejarah, latar belakang dan definisi agent (bagian 1 dan 2), dengan tujuan supaya kita bisa menyamakan persepsi awal tentang agent yang kita bicarakan. Setelah juga dijelaskan secara lengkap tentang karakteristik, bidang-bidang yang terkait dengan agent (bagian 3 dan 4). Pada bagian 5 akan dibahas tentang beberapa bidang ilmu yang terkait dan berpengaruh dalam software agent. Dan pada bagian 6 akan dijelaskan mengenai keuntungan-keuntungan yang didapat dalam rangka penggunaan software agent. Masuk ke bagian 7, akan dibahas tentang arsitektur umum pada software agent.
Kemudian akan dibahas mengenai masalah metodologi dan tool dalam pengembangan software agent pada bagian 8. Riset dan aplikasi yang berkaitan dengan software agent akan dijelaskan secara mendetail pada bagian 9, dan dilanjutkan pada bagian 10 dengan penjelasan mengenai usaha standarisasi software agent dan organisasi-organisasi yang mendukung ke arah itu. Makalah ini akan diakhiri dengan kesimpulan dan daftar pointer maupun resource yang berhubungan dengan software agent.
SEJARAH DAN LATAR BELAKANG SOFTWARE AGENT
Menurut Nwana [Nwana, 1996], konsep agent sudah dikenal lama dalam bidang AI, tepatnya dikenalkan oleh seorang peneliti bernama Carl Hewitt [Hewitt, 1977] dengan concurrent actor model-nya pada tahun 1977. Dalam modelnya Hewitt mengemukakan teori tentang suatu obyek yang yang dia sebut actor, yang mempunyai karakteristik menguasai dirinya sendiri, interaktif, dan bisa merespon pesan yang datang dari lain obyek sejenis. Dari berbagai penelitian berhubungan dengan hal diatas, kemudian lahirlah cabang ilmu besar yang merupakan turunan dari AI yaitu Distributed Artificial Intelligence (DAI), yang antara lain membawahi bidang penelitian, Distributed Problem Solving (DPS), Parallel Artificial Intelligence (PAI), dan Multi Agent System (MAS) (Gambar).
Gambar Distributed Artificial Intelligent dan Lingkupannya
Masa ini terkenal dengan masa generasi pertama penelitian software agent, yaitu periode 1970-1990. Pada umumnya konsentrasi penelitian pada periode ini tertuju ke arah: pemodelan internal agent secara simbolik, isu-isu makro mengenai interaksi, koordinasi, dan komunikasi antar agent dalam kerangka MAS. Tujuan utamanya adalah untuk menganalisa, mendesain, dan mengintegrasikan system dalam kerangka agent yang bisa berkolaborasi satu dengan yang lain. Berbagai macam penelitian yang dilakukan pada generasi pertama (1970-1990) itu terangkum secara lengkap dan terorganisir dengan baik dalam buku-buku yang dieditori oleh Bond dan Gasser [Bond et. al., 1988], Gasser dan Huns [Gasser et. al., 1989], dan Chaib-draa [Chaib-draa et. al., 1992].
Kemudian masa generasi kedua dari penelitian agent adalah periode tahun 1990 sampai saat ini. Konsentrasi penelitian pada periode ini khususnya adalah pada: pengembangan dan penelitian teori agent (agent theory), arsitektur agent (agent architecture) dan bahasa pemrograman yang digunakan (agent language). Terangkum dengan baik dalam buku-buku dan makalah-makalah oleh Wooldridge dan Jennings [Woolridge et. al., 1994], [Woolridge et. al., 1995], dan [Woolridge et. al., 1996].
DEFINISI DAN KARAKTERISTIK YANG DIMILIKI OLEH SOFTWARE AGENT
Definisi Software Agent
Pertama-tama mari kita mulai mendefinisikan agent dari arti kamus. Di dalam kamus Webster’s New World Dictionary [Guralnik, 1983], agent didefinisikan sebagai:
A person or thing that acts or is capable of acting or is empowered to act, for another.
Disini ada dua point yang bisa kita ambil:
· Agent mempunyai kemampuan untuk melakukan suatu tugas/pekerjaan.
· Agent melakukan suatu tugas/pekerjaan dalam kapasitas untuk sesuatu, atau untuk orang lain.
Ditarik dari point-point diatas Caglayan [Caglayan et al., 1997] mendefinisikan software agent sebagai:
Suatu entitas software komputer yang memungkinkan user (pengguna) untuk mendelegasikan tugas kepadanya secara mandiri (autonomously).
Kemudian beberapa peneliti lain menambahkan satu point lagi, yaitu bahwa agent harus bisa berjalan dalam kerangka lingkungan jaringan (network environment) [Brenner et. al., 1998]. Definisi agent dari para peneliti lain pada hakekatnya adalah senada, meskipun ada yang menambahkan atribut dan karakteristik agent ke dalam definisinya. Secara lengkap definisi agent dan komparasinya, dirangkumnkan oleh Franklin dalam makalahnya [Franklin et. al., 1996].
Karakteristik dan Atribut Software Agent
Untuk memperdalam pemahaman tentang software agent, fungsi, peran, dan perbedaan mendasar dikaitkan software program yang ada, berikut ini akan dijelaskan tentang beberapa atribute dan karakteristik yang dimiliki oleh software agent. Tentu tidak semua karakteristik dan atribut terangkum dalam satu agent (lihat bagian 4 tentang klasifikasi software agent). Pada hakekatnya daftar karakteristik dan atribut dibawah adalah merupakan hasil survei dari karakteristik yang dimiliki oleh agent-agent yang ada pada saat ini.
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 secara mandiri, agent harus memiliki kemampuan kontrol terhadap setiap aksi yang mereka perbuat, baik aksi keluar maupun kedalam [Woolridge et. al., 1995]. Dan satu hal penting lagi yang mendukung autonomy adalah masalah intelegensi (intelligence) dari agent.
2. Intelligence, Reasoning, dan Learning: Setiap agent harus mempunyai standar minimum untuk bisa disebut agent, yaitu intelegensi (intelligence). Dalam konsep intelligence, ada tiga komponen yang harus dimiliki: internal knowledge base, kemampuan reasoning berdasar pada knowledge base yang dimiliki, dan kemampuan learning untuk beradaptasi dalam perubahan lingkungan.
3. Mobility dan Stationary: Khusus untuk mobile agent, dia harus memiliki kemampuan yang merupakan karakteristik tertinggi yang dia miliki yaitu mobilitas. Berkebalikan dari hal tersebut adalah stationary agent. Bagaimanapun juga keduanya tetap harus memiliki kemampuan untuk mengirim pesan dan berkomunikasi dengan agent lain.
4. Delegation: Sesuai dengan namanya dan seperti yang sudah kita bahas pada bagian definisi, agent bergerak dalam kerangka menjalankan tugas yang diperintahkan oleh user. Fenomena pendelegasian (delegation) ini adalah karakteristik utama suatu program disebut agent.
5. Reactivity: Karakteristik agent yang lain adalah kemampuan untuk bisa cepat beradaptasi dengan adanya perubahan informasi yang ada dalam suatu lingkungan (enviornment). Lingkungan itu bisa mencakup: agent lain, user, adanya informasi dari luar, dsb [Brenner et. al., 1998].
6. Proactivity dan Goal-Oriented: Sifat proactivity boleh dikata adalah kelanjutan dari sifat reactivity. Agent tidak hanya dituntut bisa beradaptasi terhadap perubahan lingkungan, tetapi juga harus mengambil inisiatif langkah penyelesaian apa yang harus diambil [Brenner et. al., 1998]. Untuk itu agent harus didesain memiliki tujuan (goal) yang jelas, dan selalu berorientasi kepada tujuan yang diembannya (goal-oriented).
7. Communication and Coordination Capability: Agent harus memiliki kemampuan berkomunikasi dengan user dan juga agent lain. Masalah komunikasi dengan user adalah masuk ke masalah user interface dan perangkatnya, sedangkan masalah komunikasi, koordinasi, dan kolaborasi dengan agent lain adalah masalah sentral penelitian Multi Agent System (MAS). Bagaimanapun juga untuk bisa berkoordinasi dengan agent lain dalam menjalankan tugas, perlu bahasa standard untuk berkomunikasi. Tim Finin [Finin et al., 1993] [Finin et al., 1994] [Finin et al., 1995] [Finin et al., 1997] dan Yannis Labrou [Labrou et al., 1994] [Labrou et al., 1997] adalah peneliti software agent yang banyak berkecimpung dalam riset mengenai bahasa dan protokol komunikasi antar agent. Salah satu produk mereka adalah Knowledge Query and Manipulation Language (KQML). Kemudian masih berhubungan dengan ini komunikasi antar agent adalah Knowledge Interchange Format (KIF).