Blog

Etmen Teknolojisi ve Etmen Odaklı Programlama

Her türlü problemin, bilgisayar sistemleri ile çözülmek istenmesi, problemlerin bu ortama aktarılması ve çözümün burada yapılması gereğini ortaya çıkardı. Bu bağlamda, bilgisayarlar ile hangi problemlerin çözülebileceği sorusu gündeme geldi.

İlk olarak mühendislik problemlerinin, bilgisayarlaraaktarılması ve söz konusu oldu. Mühendislik sistemleri, genel olarak belirli girişlere belirli çıkışlar üreten deterministik (kararlı) sistemlerdir. Bu sistemler, girişlerine ilişkin çıkışları üretebilmek için bir takım fonksiyon kümesi ile matematiksel olarak tarif edilirler. Mesela işaret işleme, haberleşme ve kontrol teorisi alanlarında sistem tarifi, matematiksel olarak transfer veya sistem fonksiyonu olarak adlandırılan fonksiyon ile sunulur. Bu fonksiyonun belirlenmesi ile sistem tasarlanmış olur. İşte bu alanlardaki problemleri bilgisayarlar ile çözebilmek için fonksiyonel/prosedürel programlama paradigması ortaya konmuştur.

Fonksiyonel programlama ile sistem, sahip olduğu fonksiyonlar bütünü ile tarif edilir ve bir ana başvuru noktasından, bu fonksiyonların çağırılması ile bilgisayar alanında sistem gerçeklenmiş olur. Ancak bilgi ve iletişim teknolojisindeki hızlı gelişme ile birlikte, güçlü işlem yapma kapasitesine sahip bilgisayarlara daha fazla ve farklı türde problem çözdürme talebi ortaya çıkmıştır.

Mesela, bankacılık, sigortacılık, telekomünikasyon vb. alanlarda ortaya konulan problemlerin bilgisayarlarla çözümü… Fakat bu alanlardaki problemlerin çözümü için gereken yazılım uygulamalarının geliştirilmesi fonksiyonel programlama ile mümkün olmamaktadır. Fonksiyonel programlama, bu problemlerin bilgisayar dünyasına aktarılmasında çok yetersiz kalmaktadır. Bu amaçla, nesneye yönelik programlama paradigması ortaya konmuştur. Nesne teknolojisinde sistemdeki her şey nesneler olarak tarif edilmektedir. Bu tip sistemler de sistemdeki tüm nesnelerin oluşturulması, sorumluluklarının belirlenmesi (statik) ve bu nesneler arasındaki iletişimin/etkileşimin (dinamik) tarif edilmesi ile tasarlanır. Nesneler ile sistemlerin kaliteli ve hataya dayanıklı olarak tasarlanması, yazılım tasarım kalıp ve prensipleri (design patterns and principles) kullanımı esasına dayanır. Ancak nesneler ile tasarımın dahi yetersiz kalması yazılım bileşenlerinin insan gibi düşünmesinin gereği, mental yazılım bileşenleri ile sistemlerin tasarlanması fikrini ortaya çıkarmıştır. Bu fikir ile yepyeni bir programlama paradigması doğmuş ve adına da “Etmen Odaklı Programlama” denmiştir.

Etmen odaklı programlamayı daha iyi anlayabilmek için önce etmen kavramını ve teknolojisini anlamak gerekir. Etmen kavramının iyice oturması ile etmenlerle düşünme yeteneği gelişir ve etmen odaklı tasarım gündeme gelir. Bu, insanlar için oldukça yakın bir yöntemdir, çünkü insanlar da bu şekilde düşünerek problemlere çözüm ararlar.

Peki etmen nedir ve daha özel olarak yazılım etmeni nedir?

  • Genel kavram olarak etmen; birlikte veya ayrı ayrı etkisini gösteren ve belli bir sonuca götüren güçlerden, şartlardan, ögelerden her biri, amil, faktördür.
  • Yazılım etmeni; kullanıcı ya da başka bir program adına karar veren (hareket eden) yazılım parçasıdır.

“Algılayabilen, muhakeme edebilen, hareket (müdahale) edebilen ve haberleşebilen sürekli (kalıcı) hesaplamaya etmen denir.” (Singh & Huhns)

“Etmenler, belli bir ortamda bulunan ve görevlerini gerçeklemek üzere bu ortamda otonom davranış gösterebilen bilgisayar sistemleridir.” (Wooldridge ve Jennings)

“Etmen, karmaşık ve dinamik bir ortamda bulunan işlemsel bir sistemdir. Bu ortamı algılayıp onun üzerinde çeşitli davranışlar sergileyebilir. Bu davranışlar yoluyla başarması gereken işler vardır. Bilgi, inanç, niyet ve yükümlülük gibi kavramların yanında duygusallık da etmene yüklenebilecek meziyetler arasındadır.” (Maes)

Şekil 1 – Etmen ve ortamla etkileşim

Şekil 1’de etmenin çevresi ile etkileşimi gösterilmiştir. Etmen, ortamdan aldığı bilgileri değerlendirip ortama müdahale eder.
Etmenler nesnelerin daha özel bir halidir ve farklı bir programlama paradigmasıdır. O halde etmenler ile nesneler ve hatta daha genel olarak yazılım bileşenleri arasındaki farklar nelerdir?

Nesneler, çeşitli durumlarda olabilen, durumlara ilişkin metotları olan ve mesaj aktarma ile haberleşen bilgi işlemsel birimlerdir. Etmenleri nesnelerden ayıran en önemli özellikler:

  • Etmenlerin ve nesnelerin özerklik dereceleri farklıdır: Nesnelerin metotları “public”, “protected” veya “private” olarak tanımlanabilmesine karşın, diğer nesneler tarafından çağrılabilir. Kararı, çağıran nesne verir. Etmenlerde ise istekte bulunulan etmen isterse isteği reddedebilir. Kararı, hizmete sahip olan etmen verir.
  • Nesneler, tepki gösterme, sosyal olma gibi özelliklere sahip değildir.
  • Nesneler, tek başına denetime sahip değildir ve içinde bulundukları sistemin denetimi altındadır. Nesneler arası mesajların anlamı nesneden nesneye değişmesine rağmen etmenler arasında değişmez.

Daha genel olarak yazılım bileşenlerini etmenlerle karşılaştıracak olursak:

Etmenlerin diğer yazılım bileşenlerine göre yeniden kullanılabilirlik ve soyutlama düzeyi daha yüksektir. Bir başka farklılık ise, nesne yönelimli sistemlerde, bir eylemin yapılıp yapılmayacağı (bir yöntemin çağrılıp, çağrılmayacağı) çağrımı yapan nesne tarafından kararlaştırılırken etmenlerin, kendi bilgi tabanında yer alan bilgiler çerçevesinde eylemi yapıp yapmayacağına karar vermeleridir.

En önemli fark, etmenlerin otonom olmasıdır. Ne yapacaklarına kendileri karar verirler ancak nesneler edilgendir, sadece çağırılan metodları aktive olur. Etmenler ile mental yapılar kullanarak hesaplama sistemleri tasarlanır. Bu kapsamda İnanç-İstek-Niyet mimarisi tasarlanmıştır.
Günlük hayata geçirilebilmiş ve kullanımda olan bir mimaridir. BDI (Belief, Desire, Intention – İnanç, İstek, Niyet) mimarisi olarak da bilinmektedir. Etmenin bulunduğu ortamla ilgili sahip olduğu bilgilere İnanç, ulaşmak istediği hedeflerine İstek, o anlık gerçekleştirmeyi seçtiği hedefine ise Niyet denmektedir. İsteklerinden hangisini gerçekleştirmek istediğini seçtikten sonra o artık “niyet” olarak adlandırılmaktadır. Means-ends denilen usavurma (reasoning) ile o amaca (end) hangi araçla (means) ulaşacağını planladıktan sonra bir dizi eylem gerçekleştirir.

Birden fazla etmeni bir araya getirerek tasarlanan sistemlere çoklu etmen sistemleri denir. Çoklu etmen sistemleri, insan beyninin sahip olduğu özelliklere benzer davranışlar sergiler. İnsan beynindeki sinir hücrelerinin (nöron) tek başlarına fonksiyonu, ancak sistem bütününde diğer sinir hücreleri ile haberleşmesi ile anlamlı olur. Burada tek bir sinir hücresi sadece sinir iletimini gerçekleştirmektedir. Tek bir etmenin işi çok küçük olsa da bütünde gerçeklenen asıl iş için hizmet vermektedir. Tek bir sinir hücresinin zarar görmesi veya sistemden ayrılması sistemin bütününde çok büyük bir değişime sebep olmaz. Dağıtılmış sistemlerdeki ölçeklenebilirlik özelliği bu gereksinimi karşılamak zorundadır. Çoklu etmen sistemlerinde de tek bir etmenin sistemden istemsizce ayrılmasının sistemi ölümcül kilitlenmelere götürmesi ya da sistemin çökmesine sebep olması söz konusu olamaz. Bu amaçla, bu tür önlemlerin çoklu etmen sistemi tasarım aşamasında alınması gerekir.

Ne gibi etmen uygulamalarından söz edebiliriz?

Etmenler çok çeşitli uygulama alanlarında kullanılabilir. Bunlardan bazıları:

Bilgi Arama ve Filtreleme alanına baktığımızda, etmenler, aşırı bilgi yükleme problemine gerekli olan arama ve filtreleme alanında uygun bir yer alırlar. Aşırı bilgi yükleme problemi, geniş bir bilgi miktarından gerekli bilginin çekilememesi şeklinde tanımlanabilir. Etmenlerin bu alandaki temel rolü, bilgiyi çeşitli kaynaklardan toplayıp düzenleyerek süzgeçten geçirmesi ve kullanıcıya belirli bir biçimde sunmasıdır.

Elektronik Ticaret alanından bir örnekle , etmenin bu alandaki rolünü açıklamak istiyorum. Bir kullanıcının online uçuş bileti aradığını düşünelim. Birçok servis, kullanıcıya en ucuz bileti sunmaya çalışır. Fakat kullanıcı en ucuz bileti buluncaya kadar, arama süreci boyunca bir takım sorunlarla karşılaşabilir veya uygun bilet ulaşılabilir olduğunda, kullanıcı online olmayabilir. Etmen teknolojisi ise bu gibi problemlerin üstesinden gelinebilmesi için önerilmektedir.

Telekomünikasyon Ağ Yönetim alanına baktığımızda ise, operatörlerinin, dinamik ve rekabetçi bir ortamda faaliyet gösterdiklerini görüyoruz. Bu operatörler yeni servisler sağlamalı ve yeni teknolojiler tanıtmalıdır. Bunun için de bir etmenin ağdaki her bir elemanın kontrol ettiği etmen tabanlı bir sistemde, ağ yönetimi için kullanılması önerilmektedir. Sinyalleşme sistemlerinin etmenler ile gerçeklenmesi de British Telecom, Telecom Italia gibi şirketler tarafından uğraşılan konular arasındadır.

Ayrıca M2M pazarında etmenler geniş bir uygulama alanı bulacaklardır.

Dünyanın çeşitli yerlerinde etmen odaklı sistem tasarımı,akademisyenler ve ArGe uzmanları tarafından büyük bir ilgi görüyor. ve bu alanda yoğun bir çalışma sürdürülüyor.

Yakın bir gelecekte akıllı, otonom ve dağıtık yazılımların yani etmen teknolojisinin pazara egemen olacağına inanıyorum.

Tarih: 11.05.2012 10:57 Yazar: Mustafa Akif Karzan

Yazar'a Soru Sorun!

eBülten Üyeliği

Tüm yeniliklerimizden haberdar olmak için eBültenimize kayıt olun!