12.12.2010

Aspect Oriented Programming'e Bakış

   Aspect Oriented Prog.(Bağlam Yönelimli Programlama) yeni nesil programlama mantığı olarak görülmektedir, yazılım dünyasının hergün gelişen ihtiyaçlarına cevap vermek için tasarlanmış yeni bir mantalite denilebilir.

  Önce fonksiyonları keşfeden yazılım dünyası birçok ihtiyacını bu fonksiyonlar sayesinde gidermiş; ama zamanla isteklerin çoğalması, daha kapsamlı kodlama yapılması ihtiyacı; Nesne Yönelimli programlamayı çıkarmıştır.

  Uzun süreden beri ihtiyaçlara cevap veren bu modelle, kodlamada modern dünya gibi düşünülüp, herşey nesne tabanlı modellenmiş ve fonksiyonel programlamaya göre daha kapsamlı ve daha esnek yazılımlar ortaya çıkmıştır.

  İlerleyen zamanla, OOP de ihtiyaçlara cevap veremez duruma gelmiştir, yakın zamana kadar çoğu yazılımın baştacı olan bu mantalite yerini yavaş yavaş AOP'ye bırakmaktadır. Peki nedir bu AOP ?

Bu yazımda biraz olsun bilgi vermeye çalışacağım :)


   Yazılım mühendisliğinde kullanılan bir programlama yaklaşımıdır. Türkçe literatüründe bağlam /cephe/ kesit /görünüm yönelimli programlama kelimelerinin hepsi farklı kaynaklarda kullanılmıştır.(Bağlam Yönelimli daha hoşuma gitti).  1990'lı yılların ortalarında özellikle JAVA ve nesne yönelimli programlama ile ivme kazanmış bir yaklaşımdır. Kısaca AOP’yi tanımlamak gerekirse bir program geliştirilmesi sırasında iki farklı yaklaşım görülmektedir.

 *Birinci tip yaklaşım fonksiyonel ve programın yapacağı işlere ait yaklaşımdır. Yani programı yazdığımızda ve program çalıştığında karşılayacağı ihtiyaçlar, yapacağı işlemler şeklindeki ve iş mantığı (business logic) olarak isimlendirilebilecek bakıştır. 
 *İkinci bakış ise teknik bakıştır (technicak concerns) yani programın çalıştığı ortam, işletim sistemi, veri tabanı gibi unsurlardır.
    Aop kısaca bu iki unsurun programa başlarken birbirinden ayrılmasını ve sonradan modüler olarak bu iki yapının birleştirilmesini sağlar. AOP sınıfların; metotlarını ve özelliklerini sadece hangi bakış açısıyla modelleneceğini belirler.
Kod yayılması (Code scattering):
Kestirme Fonksiyonellikler (Crosscutting Functionalities)
Yukarıdaki bu iki durumda klasik OOP yaklaşımının AOP yaklaşımına göre geri olduğu söylenebilir. Öncelikle Fonksiyonel programlama ortaya çıkar ve bunun zamanla yeterli olmadığı anlaşılır. İlerleyen zamanda bu fonksiyonelliğe nesneye yönelim eklenir OOP ve Nesneye yönelimli programlamanında yeterli olmadığı görülünce son model olarak söylenen durum AOP'dir. AOP bir adım daha öteye giderek  -->  Noktakesim(pointcut),  Birleşme noktası(joinpoint)  &&  tavsiye(advise) eklentilerinde bulunuyor.


Şimdilik kısa bir giriş yaptık, ilerleyen zamanlarda bu konuyla sık ilgileneceğiz ;)



Teşekkürler..

Hiç yorum yok:

Yorum Gönder