Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinde yazılım geliştirme sürecinde kullanılan yaklaşımlardan birisi de bağlam yönelimli programlamadır (Aspect oriented programming). Bu yaklaşım, yazılım geliştirme yaklaşımları sıralasında nesne yönelimli programlamadan sonra gelmektedir. Yani bir anlamda her bağlam yönelimli programlama yaklaşımı aslında bir nesne yönelimli programlama yaklaşımını kapsar.
Nesne yönelimli programlama yaklaşımından farklı olarak bağlam yönelimli programlama yaklaşımında ilave bağlamlar tutulur. Yani yazılımın modellenmesinde mevcut nesne yönelimli yaklaşım izlenir ancak bunun üzerine yazılımın kod yayılımı (code scattering) ve kestirme fonksiyonellikler (crosscut functions) gibi özelliklerden dolayı ilave olarak bağlamlar (aspects) tutulur.
Bu bağlamların yazılım ile bütünleştirilmesine bağlam örmek (aspect weaving) ismi verilir ve bağlam ile veriler modellemede farklı dururken çalışma sırasında bağlam örülmü (aspect woven) olarak dururlar.
Derleme zamanı örgü (Compile time weaving)
Yazılım modellemesinde kullanılan sınıflar (class) ile bağlamların (aspects) birleştirilemsi işleminin derleme sırasında olması durumudur. Örneğin java üzerinde çalışan aspectj bu gruba girmektedir.
Derleme zamanı örgü de kendi içinde iki gruba ayrılır. Genelde C# ve JAVA gibi nesne yönelimli programlamanın öncü dilleri ara bir kod üretirler (byte code) bu kod kullanılan çerçeve (framework) üzerinde çalışır ve platform bağımsızlığını (platform independence) sağlayan da bu ara kodun farklı ortamlarda çalışmasını sağlayacak ara katmanlar bulunmasıdır. Örneğin .net veya jvm (java virtual machine, java sanal makinesi) gibi.
Dolayısıyla derleme zamanı örgü seçenekleri bu ara kodun (byte code) üretilmesinden önce kaynak kod (source code) üzerinden çalışanlar ve byte kod üzerinden çalışanalr olarak ikye ayrılabilirler.
Byte kod üzerinde işlem yapmak genelde daha yaygındır. Bunun birinci sebebi kolay olmasıdır. Örneğin java dili, üretilen byte koddan çok daha karmaşıktır. Diğer bir sebep ise bağlam örücülerin (aspect weavers) kaynak koda erişmesinin engellenmesidir. Yani örneğin java dilinde kodlanan bir uygulamanın kaynak kodlarına üçüncü parti bir bağlam örücünün erişmesi genelde istenmez. Son olarak byte kod işlemek kaynak kod işlemeye göre daha hızlıdır (basit olması da bir etken olduğundan) dolayısıyla performans olarak byte kod üzerinden bağlam örmek daha uygundur.
Derleme zamanı örgü sonucunda üretilen kod sabit bir şekilde bağlamları içermektedir. Yani herhangi bir bağlamın değişme şansı yoktur veya değişmesi istenirse yeniden derleme süreci gerekmektedir.
Çalışma zamanı örgü (Run-time weaving)
Derleme zamanından farklı olarak derlenmiş ve çalıştırılmaya başlamış uygulamalar üzerinde örülen bağlamlardır. Bu tip bağlam örme işlemlerinde uygulamanın üretilmiş olan byte kodu ortamda çalıştırılırken uygulama geliştirme sürecinde üretilen bağlamlar uygulamaya örülür.
Çalışma zamanı örgünün en önemli avantajı, uygulamaya müteharrik (dinamik) bir şekilde bağlam eklenebilmesidir. Örneğin web sunucuları veya çoklu ortam sunucuları (ses, video gibi) gibi sürekli erişim altında olan suncuular için bu özellik oldukça önemlidir.