Tuesday, May 02, 2006

Aspect Oriented Programming

Pemrograman berorientasi objek kini sudah sangat popular dalam dunia rekayasa perangkat lunak. Dengan menggunakan 3 konsep utama, Encapsulate(Enkapsulasi), Inheritance(Penurunan), dan Polymorphic. Ketiga konsep ini menjadi landasan kuat pada pemograman beroriantasi objek yang dapat menigkatkan readability (mudah dibaca dan dipelajari), reusability (mudah dikegunakan kembali), dan dekomposisi permasalahan (pemodulan). Object menjadi kunci utama keberhasilan OOP karena mengurangi tingkat kompleksitas dalam pemrograman dan memungkinkan maintenance yang relatif lebih mudah terhadap perangkat lunak itu sendiri. Namun, masalah muncul jika di dalam object-object atau kelas-kelas yang berbeda terdapat suatu aspek tertentu yang unik. Untuk mengubah suatu aspek dari perangkat lunak yang dibangun, maka beberapa object dan definisi kelas harus dimodifikasi. Hal ini dapat menjadi suatu masalah yang cukup mengganggu, terutama dalam menangani perangkat lunak yang kompleks dan berskala besar. Kemudian dikenal istilah Tangling, yang artnya dalam suatu objek terdapat aspek lain dari objek itu sendiri, sebagai contoh pada objek bisnis terdapat penanganan loging. Adapula scattering yang artinya, beberapa aspek yang sama muncul pada setiap layer/modul. Dan kedua hal ini cenderung sering muncul secara bersamaan.
Kemudian muncullah Aspect-Oriented Programming, dimana metode ini menyusun masalah-masalah kedalam satuan unit yang disebut aspek. Secara garis besar AOP merupakan metode pemograman yang menghadirkan konsep untuk memotong silang (crosscut) permasalahan tangling dan scattering. Tangling dalam artian bawa terdapat hal-hal lain didalam suatu Object yang sebenarnya tidak berhubungan langsung, namun hanya merupakan technical concerns semata. Sedangkan scattering lebih kepada pengkodean yang muncul pada banyak tempat, sebagai contoh kode program untuk akses user password yang bisa terjadi pada beberapa layer. Kedua hal diatas, telah menyebabkan source code menjadi tidak bersih dan tidak independent. Untuk itulah dibutuhkan madul yang dapat melakukan crosscutting concern terhadap permasalahan diatas, inilah yang dinamakan Aspect. Sebagai contoh, security dapat dikatakan sebuah aspect, tanpa merusak design asli dari system. Maka dalam hal ini Aspek dapat dikatakan sebagai suatu modul yang meng-enkasulapsi perilaku yang mempengaruhi kelas-kelas (dan object-object) tertentu. Dengan AOP, tiap aspek dapat dijabarkan sebagai unit-unit yang terpisah dan kemudian disatukan oleh Aspect Weaver(sebagai kompilasi). Bila kita bandingkan dengan Object-Oriented Programming (OOP), security dijadikan sebagai sebuah class, dan tidak dapat digunakan crosscutting concern, AOP sendiri merupakan penyempurna dari metode OOP tersebut.
Salah satu implementasi dari AOP ialah pada pemrograman Java dengan AspectJ, pada C/C++ dengan AspectC, AspectNet untuk C# dan .Net dan beberapa macam lainnya. Pada pelatihan ini digunakan implementasi dengan bahasa Java, yaitu AspectJ. Aspect adalah cara memodularisasi crosscutting concerns seperti cara memodularisi concern pada OOP. AspectJ menambahkan kepada Java dengan suatu konsep, yang disebut join point (dari crosscutting concerns) dan menambahkan beberapa konstraktor baru seperti pointcut, advice, inter-type declaration, dan aspect. Pointcut dan advice secara dinamic mempengaruhi program flow. Declarasi inter-type secara statis mempengaruhi hirarki kelas program. dan aspect meng-encapsulasi beberapa konstruktor baru tersebut. Dalam setiap modul aspect (pada Java) akan dikenal adanya Join Point, Pointcuts, Advice, inter-type declarations dan aspect sebagai program itu sendiri.
Sebuah join point dideklarasikan dengan baik dalam program flow. Sedangkan pointcut akan mengambil join point dan nilai dari point tersebut. Suatu potongan advice adalah kode yang dieksekusi manakala suatu join point dicapai. Kedua komponen ini disebut sebagai komponen dinamik dari AspectJ. AspectJ juga mempunyai jenis deklarasi Intertype yang membolehkan programmer untuk memodifikasi stuktur program statik, yakni anggota dari kelas dan hubungan antar kelas. Aspect dari AspectJ adalah unit modularitas untuk suatu crosscutting concern. Aspect ini bersifat seperti kelas java pada umumnya, yaitu termasuk pointcut, advice, dan deklarasi inter-type.
OMG! it's a great article, Share Oh!


0 komentar:

 

Followers

Social Share

[ttm]. topan tambunan menulis Copyright © 2009 Gadget Blog is Designed by Ipietoon Sponsored by Online Business Journal