Agent-oriented software engineering

***Agent-oriented Software Engineering (AOSE)*** adalah paradigma rekayasa perangkat lunak baru yang berfokus pada penerapan praktik terbaik untuk ''Multi-Agent Systems'' (MAS) dengan berfokus pada penggunaan agen-agen sebagai abstraksi utama. Agen dan *Multi-Agent Systems* baru-baru ini muncul sebagai teknologi yang kuat untuk menghadapi kompleksitas berbagai skenario TIK saat ini. Pemahaman umum yang muncul ialah bahwa *Multi-Agent Systems* lebih dari teknologi yang efektif, mewakili paradigma tujuan umum baru untuk pengembangan perangkat lunak. Komputasi berbasis agen (*Agent-based computing*) mempromosikan desain dan pengembangan aplikasi dalam hal entitas perangkat lunak otonom (agen), yang terletak pada lingkungan tertentu, dan yang dapat secara fleksibel mencapai tujuan mereka dengan berinteraksi satu sama lain dalam hal protokol dan bahasa tingkat tinggi. Ada lebih dari dua lusin metodologi yang berorientasi pada agen, di antaranya adalah MaSE, Gaia, dan Tropos. Metodologi berorientasi agen dapat diklasifikasikan ke dalam dua kelas utama: metodologi dengan tujuan umum dan metodologi dengan domain spesifik. Untuk klasifikasi lainnya, metodologi saat ini dapat dibagi menjadi tiga kategori: metodologi berorientasi agen, metodologi yang secara langsung memperluas atau mengadaptasi metodologi berorientasi objek, dan metodologi yang mengadaptasi model rekayasa pengetahuan atau teknik lainnya.

Ketika mempertimbangkan perspektif berorientasi objek yang tradisional (historis), perbedaan antara perspektif berorientasi objek dan perspektif berorientasi agen pada pemodelan dan pengembangan sistem perangkat lunak sangatlah tajam. Objek, tidak seperti agen, pada prinsipnya tidak otonom atau proaktif, dalam hal aktivitas internalnya hanya dapat diminta oleh permintaan layanan yang berasal dari untaian kontrol eksternal. Dalam aplikasi objek tradisional, tidak ada pemodelan eksplisit dari sebuah "lingkungan (*environment*)" eksternal: semuanya dimodelkan dalam hal objek, dan objek membungkus sumber daya lingkungan dalam hal atribut internal atau memandang dunia hanya dalam hal nama/ referensi objek lain. Selain itu, komputasi tradisional berbasis objek mempromosikan perspektif pada sistem perangkat lunak di mana komponen adalah "fungsional" atau entitas "berorientasi layanan".

## Esensi Komputasi Berbasis Agen
Agen adalah sistem komputer terenkapsulasi yang berada dalam beberapa lingkungan, dan yang mampu bertindak fleksibel dan otonom dalam lingkungan tersebut untuk memenuhi tujuan desainnya. Ada beberapa poin tentang definisi ini yang memerlukan penjelasan lebih lanjut.

* Agen adalah entitas pemecah masalah yang dapat diidentifikasi dengan jelas dengan batasan dan antarmuka yang jelas
* Terletak (tertanam) di lingkungan tertentu; agen menerima input yang terkait dengan keadaan lingkungannya melalui sensor dan agen bertindak terhadap lingkungan melalui efektor
* Dirancang untuk memenuhi tujuan tertentu: agen memiliki tujuan (sasaran) tertentu untuk dicapai
* Otonom: agen memiliki kontrol atas keadaan internalnya dan atas perilakunya sendiri
* Mampu menunjukkan perilaku penyelesaian masalah yang fleksibel dalam mengejar tujuan desainnya: agen harus reaktif (mampu merespons secara tepat waktu terhadap perubahan yang terjadi di lingkungannya) dan proaktif (mampu secara oportunistik mengadopsi tujuan baru)

Secara umum, agen dapat dilihat sebagai entitas perangkat lunak dengan karakteristik berikut:

* Otonom (*autonomous*): Agen tidak secara pasif tunduk pada aliran kontrol eksternal global dalam aksinya. Yaitu, agen memiliki aktivitas pelaksanaan internal sendiri, dan berorientasi pro-aktif untuk pencapaian tugas tertentu.
* Keberadaannya (*situatedness*) : Agen melakukan aksinya saat berada di lingkungan tertentu, baik komputasi maupun fisik, dan mampu merasakan dan memengaruhi lingkungan tersebut
* Sosialitas (*sociality*): Dalam sebagian besar kasus, agen mengeksekusi di lingkungan operasional terbuka yang menyelenggarakan eksekusi berbagai agen, yang mungkin milik para pemangku kepentingan yang berbeda. Dalam *Multi-Agent Systems* (MAS), perilaku global berasal dari interaksi antara agen-agen penyusunnya. Bahkan, agen dapat berkomunikasi atau berkoordinasi satu sama lain baik untuk mencapai tujuan bersama atau karena ini diperlukan bagi mereka untuk mencapai tujuan mereka sendiri

Ada dua poin yang secara kualitatif membedakan interaksi agen dari yang terjadi dalam paradigma rekayasa perangkat lunak lainnya. Pertama, interaksi yang berorientasi agen terjadi melalui bahasa berkomunikasi agen tingkat tinggi (deklaratif). Akibatnya, interaksi dilakukan pada tingkat pengetahuan: dalam hal tujuan *(goal)* mana yang harus diikuti, pada saat apa, dan oleh siapa. Kedua, karena agen adalah pemecah masalah yang fleksibel, yang beroperasi dalam lingkungan di mana mereka hanya memiliki kontrol parsial dan dapat diamati, interaksi perlu ditangani dengan cara yang sama fleksibelnya. Dengan demikian, agen membutuhkan alat komputasi untuk membuat keputusan yang bergantung pada konteks tentang sifat dan ruang lingkup interaksi mereka dan untuk memulai (dan menanggapi) interaksi yang tidak diramalkan pada waktu desain. Dalam kebanyakan kasus, agen bertindak untuk mencapai tujuan baik atas nama individu / perusahaan atau sebagai bagian dari inisiatif pemecahan masalah yang lebih luas. Jadi, ketika agen berinteraksi biasanya ada beberapa konteks organisasi yang mendasari. Konteks ini mendefinisikan sifat hubungan antara agen.

## Konsep dan Properti AOSE
Konsep dan properti berorientasi agen sangat penting untuk metodologi berorientasi agen. Konsep adalah abstraksi atau gagasan yang disimpulkan atau berasal dari contoh khusus dalam domain masalah. Properti adalah kemampuan khusus atau karakteristik. Berdasarkan literatur, satu set konsep agen signifikan dan properti telah ditemukan, termasuk di antaranya blok bangunan dasar (*building blocks*) seperti agen, gagasan mental (BDI), pesan, norma, organisasi, protokol, peran, layanan, masyarakat dan tugas, karakteristik mereka seperti otonomi, reaktivitas, proaktif dan sosialitas.

## Metodologi AOSE
Tujuan dari *Multi-agent Systems Engineering* (MaSE)  adalah untuk menyediakan metodologi siklus hidup lengkap untuk membantu pengembang sistem merancang dan mengembangkan *Multi-Agent Sytems*. Dibutuhkan serangkaian kebutuhan awal dan analisis, desain, dan penerapan *Multi-Agent Systems* yang berfungsi. MaSE bersifat arsitektur-independen dan memodelkan sistem dalam hal tujuan (goal), peran, agen, tugas dan percakapan.

Gaia  adalah metodologi dengan tujuan umum untuk analisis dan desain yang berorientasi pada agen, metode ini komprehensif dan berlaku untuk berbagai *Multi-Agent Systems*, dan berurusan dengan tingkat makro dan aspek sistem (agen) tingkat mikro. Gaia didirikan berdasarkan pandangan *Multi-Agent Systems* sebagai organisasi komputasi yang terdiri dari berbagai peran yang saling berinteraksi. Gaia mencakup semua aspek yang penting dalam menggambarkan *societies* agen.

Tropos adalah metodologi pengembangan perangkat lunak berorientasi agen yang dibuat oleh sekelompok penulis dari berbagai universitas di Kanada dan Italia. Salah satu perbedaan signifikan antara Tropos dan metodologi lainnya adalah fokusnya yang kuat pada analisis kebutuhan awal di mana domain pemangku kepentingan dan niat mereka diidentifikasi dan dianalisis. Proses analisis ini memungkinkan alasan untuk mengembangkan perangkat lunak untuk ditangkap. Proses pengembangan perangkat lunak Tropos terdiri dari lima fase: *early requirements, late requirements, architectural design, detailed design* dan *implementation.*

## Referensi