Konsep Aspect Oriented Programming (part 1)

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…

5 thoughts on “Konsep Aspect Oriented Programming (part 1)

  1. infoGue says:

    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!

  2. somphil says:

    wew… ngeri kali. naon kang AOP eta

  3. 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!

  4. rena says:

    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

  5. tutnik says:

    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 Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s