Konsep Aspect Oriented Programming (part 1)

2 05 2008

Baru-baru ini gw lagi asyiknya mempelajari Aspect Oriented Programming.. Sekalian mempelajari TA gw.. Sebenarnya klo gw liat-liat AOP bukan merupakan pengganti dari OOP. AOP hanya sebagai penambah dari kekurangan terdapat dalam OOP. Okeh biar kita mulai aja pembicaraan tentang AOP..

Ketika program ditulis dengan menggunakan pendekatan procedural, aplikasi di modularisasi menurut action atau procedure. Dengan menggunakan pendekatan object oriented modularisasi berdasarkan data yang dienkapsulasi kedalam class-class. Dari kedua pendekatan tersebut, beberapa fungsi lebih sulit untuk dimodularisasi daripada yang lain. Hal ini yang dimaksud dengan code scattering.

Code scattering

Menurut para team analis tomcat server, meraka menyadari bahwa beberapa fungsi seperti URL pattern matching dan XML parsing telah bersih dari modularisasi dalam satu atau dua kelas. Akan tetapi ada hal lain seperti logging fungsionality dan managemen session user, sangat berpencar dalam aplikasi.

Analysis code scattering

Alas an utama code scattering terjadi adalah perbedaan dalam pembuatan layanan dan bagaimana cara pengguanaan dari layanan tersebut. Class memberikan akses untuk satu atau lebih layanan melalui methode. Hal ini relative mudah untuk mengelompokan layanan yang tersedia bersama-sama kedalam satu tempat (dengan kata lain kedalam satu class). Akan tetapi, apabila service tersebut digunakan dari beberapa class, hal ini akan menyulitkan untuk mendesign ulang aplikasi untuk mengelompokan memanggil methode tersebut secara bersama-sama.

Code scattering jelas berpengaruh jika program yang ditulis sangat complex. Akan tetapi sebenarnya tergantung juga dari aplikasi, model concern, library yang digunakan, dan frameworks yang digunakan. Karena tergantung dari problem concreat, maka code scattering sulit untuk dihapus.

Code scattering dalam aplikasi melambatkan dalam pengembangan, maintenance, dan evolusi program. Ketika beberapa fungsi di scatter, keadaan menjadi memburuk karena kode mulai berisi banyak pemanggilan untuk multiple concern hal ini menyebabkan loosly couple oleh karena itu membutuhkan integrasi bersama-sama. Keadaan seperti ini sering terjadi dibanyak aplikasi.

Dimensi Baru dalam Modularity

Kontribusi utama dari AOP ialah memberikan jalan untuk mengintegrasikan bersama-sama, — dalam sebuah aspect– . Aspect sering digambarkan sebagai crosscutting concern. Seperti dikatakan oleh Gregor kiczales dalam penelitiannya bahwa “AOP is about capturing crosscutting structure”.

Definisi dari aspect hampir umum dengan class. Ketika kita memodelkan suatu masalah, kita sering merepresentasikannya dengan menggunakan object dan setiap object berisi data(attribut) dan proses (methode). Hal itu juga terjadi pada aspect, aspect digunakan untuk mengimplementasikan (security, persistence, logging, dll) pada aplikasi, fungsi ini sama dengan kebutuhan dan pemrosesan.

Dengan menggukan AOP, applikasi berisi class dan aspect. Suatu aspect berbeda dengan class dalam implentasi menggunakan crosscutting functionality. Crosscutting functionality termasuk procedure atau object – oriented paradigma. Memasukan class dan aspect kedalam sebuah aplikasi berarti modularity dapat terjadi dalam 2 dimensi. Fungsi dasar diimplementasikan oleh class (dimensi ini dapat disebut kedalam dimensi struktural), dan crosscutting functionality di implementasikan oleh aspect (dimensi ini disebut dengan dimensi operational)

Integrasi Crosscutting Functionality

Aspect sendiri dibagi menjadi 2 bagian : poincut dan advice code (yang akan diterangkan nanti). Code advice berisi code yang dieksekusi, sementara poincut mendefinisikan point dalam program dimana code seharusnya diimplementasikan. Jika kita ingin memastikan data persistence, kita membutuhkan code untuk menyimpan data dalam database. Meskipun kita dapat membuat code fungsi ini dari prinsip pertama langsung termasuk aspect, kita akan jarang melakukan hal tersebut. Ini mempertimbangkan good practice dengan menggunakan dedicated API, seperti Hibernate. Dengan type dari framework ini, code dalam aspect akan simple untuk memanggil API. Hal ini membuat aspect tidak perlu mengetahui bagaimana service diimplementasikan.

Nonfunction Service dan Aspects

Aplikasi terdiri dari 2 type concern : business dan nonfunctionality. Business concerns, disebut juga fungsi yang dibutuhkan. Sama halnya pada real world behaviour yang ingin dimodelkan. Nonfunction concern atau nonfunctional requirement tambahan dari layanan aplikasi yang penting untuk diimplementasikan , essensinya, teknis atau system level –concern. Contoh , dalam aplikasi management human resource, fungsi untuk menambah dan menghapus employee adalah bisnis concern, sementara applikasi security dan privileges merupakan nonfuntionality concern.

Nonfunctionality service merupakan dasar bagi crosscutting. Akibatnya, nonfunctionality service diimplementasikan sebagai aspect dalam AOP. Dan bisnis concern diimplementasikan sebagai class.

Joinpoint

Definisi dari joinpoint adalah point dalam mengatur alur program dimana beberapa aspect dimplementasikan. Joinpoint dikelompokan menurut type beberapa bagian yang memungkinkan joinpoint diimplementasikan dalam AOP.

Segitu dulu ahh penjelasan tentang AOP dari gw… lain kali ntar gw terusin yang bagian 2 nya…


Actions

Information

5 responses

6 05 2008
infoGue

artikel anda bagus dan menarik, artikel anda:
http://www.infogue.com/
http://programing.infogue.com/konsep_aspect_oriented_programming_part_1_

anda bisa promosikan artikel anda di infoGue.com yang akan berguna untuk semua pembaca. Telah tersedia plugin/ widget vote & kirim berita yang ter-integrasi dengan sekali instalasi mudah bagi pengguna. Salam!

1 06 2008
somphil

wew… ngeri kali. naon kang AOP eta

22 06 2008
Dityo Nurasto

Artikel Bagus. Makasih yah. Gue lagi mempelajari AOP dan sepertinya memang OOP membutuhkan AOP. Gue sering menulis kode berkali – kali untuk cek user, yang jelas – jelas teknis, dalam beberapa kelas di .NET. Untungnya sudah ada tools untuk membuat post-compilation di .NET. Jadi mau ikutan nyobain.

Lucunya methodology AOP sudah ada hampir 2 dekade lalu. kekeke. Kayaknya bakal seru nih Bagian ke 2 nya hahaha … serbuuuuuu …

Salam kenal!

15 08 2008
rena

salam kenal

mas, nanya donk,,, saya lg mencoba mempelajari AOP, kbetulan pake java. gimana siy biar AspectJnya kedetect di Netbeans?? padahal saya dah install, dan mengikuti petunjuk yg ada, tp koq tetep ga bisa ya??

terima kasih

11 09 2008
tutnik

ga da gambar dlm bentuk uml ya bang?
kalo cuma tulisan suse bayangin.. :( (
denger2 implementasi AOP di .net cukup sulit
karena so far joint point diimplementasikan lewat attribute
yang ga bisa dikontrol waktu eksekusinya..
katanya sih githu..
bener ga sih?

Leave a comment