<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Dağıtık Sistemler İçin Haberleşme Otomasyon Ara Katmanı: ULAK</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Burcu Karasoy</string-name>
          <email>bkarasoy@aselsan.com.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Soner Çınar</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: Yazılım Mimarileri, Haberleşme Ara Katmanı</institution>
          ,
          <addr-line>Çapraz Platform Haberleşmesi</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Yazılım Mühendisliği Müdürlüğü, Mühendislik Dir., SST Grup Bşk. ASELSAN A.Ş</institution>
        </aff>
      </contrib-group>
      <fpage>372</fpage>
      <lpage>382</lpage>
      <abstract>
        <p>Özet. Geliştirilen sistemlerin kapsam ve yetenekleri arttıkça, çok sayıda yazılım ve bileşenin birbiriyle haberleşme ihtiyacı ortaya çıkmıştır. Haberleşme arayüzlerini her farklı yazılım ya da bileşende yeniden kodlamak, arayüz değişikliklerinde değişen kısımları elle güncellemek hem zaman kaybına, hem de hataya yatkın yazılım parçaları geliştirilmesine neden olmaktadır. Diğer yandan gömülü yazılımlarda haberleşmeden kaynaklanan hatalar, yazılım güvenliği açısından oldukça kritiktir. Bu tür sorunlara çözüm getirmek amacıyla haberleşme otomasyon ara katmanı ULAK geliştirilmiştir. ULAK sayesinde tüm haberleşme altyapıları (çözümleme ve formatlama) otomatik olarak oluşturulabilmekte, farklı platformlardaki yazılımlar karşılıklı olarak haberleşebilmektedir (endian sorunu).</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Dağıtık sistem, farklı bilgisayarlardaki yazılım bileşenleri arasındaki haberleşme ve
koordinasyonun sadece mesajlaşma yoluyla sağlanabildiği ağ olarak tanımlanabilir.
Haberleşme, mesajların sistemdeki bütün yazılım bileşenlerinin tanıdığı bir formatta
gönderimi ve karşı tarafın bu mesajları çözümlemesi ile gerçekleşir. Mesajlar elle
yazılımcı tarafından kodlanabileceği gibi bu iş için oluşturulmuş hazır bir ara katman
yazılımı da kullanılabilir.</p>
      <p>Elle kodlama en basit çözüm olarak görünse de haberleşen birim sayısı, arayüz
çeşitliliği ve değişiklikleri artıkça sistemin sağlıklı bir haberleşme kurabilmesini
sağlamak kritik bir sorun halini alır. Arayüzlerin tek tek elle kodlanması sistemi hataya
yatkın bir hale getirirken ciddi bir iş gücü kaybına da sebep olmaktadır. Farklı
platformlardaki yazılımların haberleşme gereksinimlerinin de karşılanması gerekliliği
haberleşme kodlarını iyice karmaşıklaştırmaktadır.</p>
      <p>Günümüzde dağıtık sistemlerdeki haberleşme sorununu çözmek için oluşturulmuş
pek çok hazır ara katman yazılımı da bulunmaktadır. Ancak bu yazılımların
kullanımında pek çok sıkıntı ile karşılaşılabilmektedir. Bu araçlar çok geniş bir sorun
kümesine çözüm olarak oluşturuldukları için pek çok karmaşık yapıyı da beraberlerinde
getirebilmektedirler. Karmaşıklık ise sistemleri hataya daha açık bir hale getirir.
Özellikle az sayıdaki sistemlerden oluşan ve hatasız çalışmanın çok önemli olduğu silah
sistemlerinde bu teknolojiler avantajdan çok dezavantaj getirebilmektedir.</p>
      <p>ULAK, özellikle az sayıda yazılımdan oluşan gerçek zamanlı gömülü sistemlerdeki
haberleşmeyi sağlamak için oluşturulmuş bir ara katmandır. Haberleşmeyi, gecikmeyi
minimuma indirerek kısıtlı kaynak kullanımı ile gerçekleştirmek, çoklu görev
yürütümünün olduğu yazılımlarda görev bölünmesine karşı önlem almak ULAK’ın
öncelikleri arasındadır. Bildirinin bir sonraki bölümünde dağıtım ara katman
teknolojilerinden kısaca bahsedilecek, sonraki kısımlarda ise ULAK mimarisi tanıtılacaktır.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Dağıtım Ara Katmanı Teknolojileri</title>
      <p>
        Dağıtım ara katmanı teknolojileri kabaca üç gruba ayrılabilir: istemci-sunucu (client
server), mesaj yönelimli (message oriented) ve yayınla-abone ol (publish - subscribe)
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
İstemci - Sunucu
İstemci-sunucu tasarımını benimseyen ağlar veriyi işleyen ya da depolayan sunucu ile
veriyi isteyen ve kullanan istemciyi birbirine bağlar. Çoğu istemci-sunucu ara katmanı
uzaktaki objelerin birbirlerinden yerel makinadaymış gibi fonksiyon çağrısı
yapabilmesini (Uzak Metot Çağrısı, “Remote Method Invocation – RMI”) sağlayan bir
Uygulama Programlama Arayüzü (UPA) sunar. İstemci-sunucu tasarımları
merkezleştirilmiş bilginin bulunduğu veritabanları, hareket işlem sistemleri ve
merkezi dosya sistemi gibi sistemlerde genellikle başarılı bir şekilde çalışır. Bu
türdeki başarılı tasarımlara örnek olarak CORBA, DCOM, HTTP ve Enterprise
JavaBeans (EJB) gösterilebilir [
        <xref ref-type="bibr" rid="ref2 ref9">2, 9</xref>
        ]. Veri akışının çoktan bire (many-to-one) olduğu
durumlarda istemci-sunucu tasarımı verimli bir şekilde çalışır. Birden fazla birimin
veri ürettiği durumlarda ise istemci-sunucu mimarisi verinin dağıtım amacıyla
sunucuya gönderilmesini gerektirir. İstemciler arasında bu türden dolaylı bir
haberleşme, gecikmeye sebep olacağından, özellikle gerçek zamanlı sistemlerde
istenmeyen bir durumdur.
      </p>
      <sec id="sec-2-1">
        <title>Mesaj Yönelimli</title>
        <p>
          Mesaj yönelimli mimarilerde haberleşme mesajın doğrudan iletilmesiyle ya da
güvenilir kuyruk yapılarının kullanımı ile sağlanır. Senkron ve asenkron etkileşim
tiplerinin her ikisini de desteklemesine rağmen bu mimariler birincil olarak asenkron
iletişim için oluşturulmuştur[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Kuyruk kullanılarak asenkron iletişim, gönderilen
mesajın alıcı tarafından alınana kadar kuyrukta tutulması ile gerçekleştirilir. Bu mimaride
her bir istemcinin diğer istemcilerle mesaj alışverişi kolaylıkla sağlanır[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Bu sebeple
istemcilerin haberleşmesi gereken mimariler için istemci-sunucu mimarilerine göre
daha uygundur. IBM MQSeries [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] ve Sun Java System Message Queue [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] bu
kategorideki ürünler arasındadır.
        </p>
        <sec id="sec-2-1-1">
          <title>Yayınla-Abone Ol</title>
          <p>
            Bu mimari kısaca haberleşen birimlerin ihtiyaçları olan verilere abone olması ve
ürettikleri verileri yayınlamaları esasına dayanır. Mesajlar herhangi bir ara sunucuya
ihtiyaç olmadan doğrudan haberleşme birimleri arasında gidip gelebilir [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ]. Yayıncılar ve
aboneler birbirlerinin sayısını, konumunu, canlı olup olmadığını bilmek zorunda
değildir [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ]. Bu sistemler genelde büyük miktarda zaman-kritik veriyi dağıtmak için
kullanılırlar. Object Management Group’un yayınladığı Data Distribution Service
(DDS) standardı gömülü sistemler için oluşturulmuş ilk açık uluslararası
yayınlaabone ol mimarisi standardıdır [
            <xref ref-type="bibr" rid="ref6">6</xref>
            ]. Diğer yaygın yayınla-abone ol ara katmanlarına
örnek olarak ZeroMQ [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ] ve ORTE [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ] verilebilir.
3
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>ULAK Ara Katmanına Genel Bir Bakış</title>
      <p>ULAK, aynı ya da farklı platformlardaki yazılım ve bileşenlerin görev
bölünmelerinden etkilenmeyecek şekilde haberleşmesini sağlayan noktadan noktaya haberleşme
ara katman mimarisidir. ULAK-Builder yazılımı sayesinde ara katman otomatik
olarak oluşturulur ve arayüzlerin tekrar tekrar elle kodlanmasına gerek kalmaz. Bu
yazılım girdi olarak haberleşme arayüzlerini fonksiyon imzası olarak alır ve tüm
haberleşme alt yapılarını (çözümleme ve formatlama) otomatik olarak oluşturur. Bu
yönüyle ULAK teknolojisi, dönüşüm seviyesinde yeniden kullanıma (transformation-based
reuse) olanak sağlar.</p>
      <p>
        ULAK mimarisi az sayıda sistemden oluşan dağıtık sistemler arasındaki
haberleşmeyi ek bir sunucu vs. gerektirmeksizin, ekstra zaman kaybı olmadan uzak metot
çağrısı ile sağlar. ULAK, uzak metot çağrısına olanak vermesi sebebiyle en yaygın
ara katmanlardan biri olan CORBA’ya benzetilebilir. Ancak CORBA’nın fazla
miktarda veri kopyalanması ve dönüşüm yapılması gibi sebeplerle sistemde yüksek
gecikmeler oluşturabildiği bilinmektedir [
        <xref ref-type="bibr" rid="ref13">13,14</xref>
        ]. ULAK, gerçek zamanlı sistemlerin
ihtiyaçları ve kısıtları göz önünde bulundurularak oluşturulmuştur. Haberleşme
kaynaklı gecikmeleri minimum düzeyde tutmak ULAK’ın önceliklerinden biridir. Gerçek
zamanlı sistemlerde uzak metot çağrısına imkan vermesi bu ara katmanın en önemli
özelliklerindendir.
3.1
      </p>
      <sec id="sec-3-1">
        <title>ULAK Ara Katmanının Yetenekleri</title>
        <p>ULAK teknolojisi ile hazırlanmış bir yazılım ya da bileşen aşağıdaki yetenekleri de
kazanmış olur:</p>
        <p>Yazılım seviyesinde tüm haberleşmeler fonksiyon çağrısından ibarettir.
Her yazılım, kendi yazılımı içerisinde yer alan bir sınıfın fonksiyonuna erişir gibi
harici yazılımın fonksiyonuna erişebilir.</p>
        <p>Fonksiyonun tanımına göre, parametreli, parametresiz, dönüş değeri olan ya da
olmayan fonksiyonlara erişilebilir. Veri ve komut gönderimi-alımı sağlanır.
Yazılımların çalıştığı platform uyumu (big endian / little endian) otomatik sağlanır.</p>
        <p>ULAK motorunun kullanacağı haberleşme protokolü seçilebilir. TCP/IP, UDP, seri
kanal gibi protokoller ile çalışılabilir.
Çoklu görev yürütümünün olduğu yazılımlarda görev bölünmesine karşı
korumalıdır.</p>
        <p>Fonksiyon çağrıları, isteğe göre, karşı tarafta işlenene kadar bekletilir ya da
bekletilmez (senkron-asenkron çalışma).</p>
        <p>Bağlantı durumu periyodik olarak kalp atışı (heartbeat) yöntemi ile ULAK
tarafından otomatik kontrol edilir.</p>
        <p>Yazılımlar, bağlantının durumunu sorgulayabilir ya da geri dönüş fonksiyonu alt
yapısı ile değişikliklerden asenkron haberdar olabilir.</p>
        <p>Haberleşme kanalından akan tüm mesajların formatlarını tarifleyen arayüz
dokümanı otomatik olarak oluşturulur.</p>
        <p>Daha önceden ULAK aracıyla hazırlanmış sürücülerde yapılan arayüz
değişiklikleri, eklemeleri, çıkartmaları yine bu araç yardımıyla kolaylıkla yapılır.
Haberleşen birimlerin aynı CPU’da olması durumunda haberleşmenin haberleşme
kanalı yerine doğrudan bağlantı ile gerçekleşmesi sağlanabilir. Bu durumda
haberleşmenin hangi yolla gerçekleştirileceği (haberleşme kanalı ya da doğrudan)
çalışma zamanında belirlenebilir.
3.2</p>
        <p>Kullanım Alanları
Çok farklı amaçlar için kullanılabilen ULAK’ın temel olarak kullanım alanlarını
aşağıdaki şekilde listelemek mümkündür.
x İki yazılım arasında haberleşme ara katman rolü
x Bileşenin harici yazılımlar tarafından kullanımı
x Yazılımın, bileşenler bazında farklı işlemcilere dağıtılması
x Yazılımın/Bileşenin kara kutu testi
x Yazılımın/Bileşenin Windows Kontrol Yazılımı
x Yazılımın/Bileşenin Windows Kontrol Yazılımı ile testi
x Dokümantasyon</p>
        <p>Şekil 1’deki örnek yapıya benzer bir mimariye sahip bir sistem yazılımı, ULAK
sayesinde üç seviyede yeteneklerini genel kullanım amaçlı dış dünyaya açabilir. Bu
şekilde sistem kontrolcüsü kullanıcı arayüzü ve komuta kontrol yazılımları ile
haberleşebilir. Araç kutusunun testi, birim bileşenlerinin ve alt donanımın ikmal bakım ve
üretim/donanım testleri harici olarak gerçekleştirilebilir.
Şekil 1. Sistem yazılımı ULAK kullanımı ile üç seviyede yeteneklerini dış dünyaya açabilir
3.3</p>
        <sec id="sec-3-1-1">
          <title>ULAK Desteğinin Otomatik Olarak Sağlanması</title>
          <p>ULAK desteği yazılımlara otomatik olarak ULAK-Builder yazılımı ile
eklenebilmektedir. Kullanıcının ULAK-Builder’a ULAK oluşturabilmesi için girdi olarak
haberleşme arayüzlerini vermesi ve oluşturulacak UPA için isim belirlemesi yeterlidir.
3.4</p>
          <p>İki Yazılım Arasında Haberleşme Ara Katman Rolü
ULAK, iki farklı yazılımın birbiri ile haberleşmesinin sağlanmasında kullanılabilir.
Bu kullanım şekli ile ULAK, yazılımlar arasındaki haberleşmeyi otomatize ederken,
Bölüm 3.1'de bahsedilen ara katman yeteneklerini de kazandırmış olur.</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>YAZILIM 1</title>
        <p>GİRİŞ</p>
        <p>ULAK
Şekil 2. İki yazılım arasında ULAK kullanımı
Şekil 2’de iki yazılımın ULAK kullanarak haberleşmesi görülmektedir. Yazılım 1,
Yazılım 2’ye komut ya da veri göndermek istediğinde, çıkış üzerinden metot çağrısı
yapar ve bu çağrı ULAK üzerinden geçirilerek Yazılım 2’ye iletilir.
3.5</p>
        <sec id="sec-3-2-1">
          <title>Bileşenin Harici Yazılımlar Tarafından Kullanımı</title>
          <p>Geliştirilen yazılımda kullanılan bileşenlere ULAK yeteneğinin kazandırılması
durumunda, bu bileşen geliştirilen yazılımın içinden ya da harici bir yazılım tarafından
Şekil 3’teki gibi kontrol edilebilir. Bunun için ULAK alt yapısı ile hazırlanmış
bileşenlerden oluşan bir yazılımın kullanımı yeterli olacaktır. Yazılımın içindeki
bileşenler, isteğe göre içeriden ya da dışarıdan yazılımların kontrolünde kullanılabilir. Bu tür
kullanım şekline aşağıdaki kullanımlar örnek verilebilir:
x Ana İşlemci Birimi Uygulama Yazılımı, başka bir CPU’da çalışan bir yazılımın
haberleşme ve soyutlama bileşenlerine bağlanarak bu CPU’nun yeteneklerini
kullanabilir.
x Donanım test çalışmaları kapsamında, harici bir test yazılımı, farklı bir CPU’da
çalışan ULAK destekli bir yazılımın haberleşme ve soyutlama bileşenlerine
bağlanarak bu CPU’nun yeteneklerini kullanabilir.
x İkmal bakım sistemleri için hazırlanmış olan Windows tabanlı test yazılımları,
farklı bir CPU’da çalışan ULAK destekli bir yazılımın, haberleşme ve soyutlama
bileşenlerine bağlanarak bu CPU’nun yeteneklerini, birim bileşenlerine bağlanarak
ise tüm birimleri, arayüz fonksiyonları seviyesinde kullanabilir.</p>
        </sec>
        <sec id="sec-3-2-2">
          <title>GELİŞTİRİLEN</title>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>YAZILIM</title>
        <p>BİLEŞEN
GİRİŞ</p>
        <p>ULAK
Şekil 3. Bileşenin harici yazılımlarla kullanımı
3.6</p>
        <sec id="sec-3-3-1">
          <title>Yazılımın Bileşenler Bazında Farklı İşlemcilere Dağıtılması</title>
          <p>ULAK altyapısı olan yazılımlar, birbirlerinin bileşenlerini kendi bileşenleri gibi
kullanabilirler. Aşağıdaki şekilde görülen yazılımların tamamı, giriş/çıkış arayüz
sınıflarının aynı olması şartıyla, aynı ya da farklı yazılımda olabilir. Şekil 4’te bu
kullanıma örnek verilmiştir. Bu örnekte ana CPU’daki yazılım ULAK kullanarak
iki farklı CPU’daki dört farklı bileşene görev dağılımı yapabilmektedir.
GİRİŞ ÇIKIŞ</p>
          <p>GİRİŞ ÇIKIŞ</p>
          <p>GİRİŞ ÇIKIŞ</p>
          <p>GİRİŞ ÇIKIŞ
BİLEŞEN-1</p>
          <p>BİLEŞEN-2</p>
          <p>BİLEŞEN-1</p>
          <p>BİLEŞEN-2</p>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>YAZILIM</title>
        <p>CPU-1</p>
      </sec>
      <sec id="sec-3-5">
        <title>YAZILIM</title>
        <p>CPU-2
Şekil 4. Yazılımın bileşenler bazında farklı işlemcilere dağıtılması</p>
        <p>Yazılımın, farklı işlemcilerdeki bileşenleri kullanabiliyor olması çeşitli faydalar ve
kullanım alanları sağlamaktadır. Bu tür kullanım şekline aşağıdaki kullanımlar örnek
verilebilir:
x
x</p>
        <p>Performans gereksinimi olan yazılımlarda, bileşenler farklı işlemcilere dağıtılarak
paralel çalışmaları sağlanabilir.</p>
        <p>Yazılımın çalıştığı CPU’nun donanım kaynaklarının (port, NvRam, Flash vb.)
yetersiz olması durumunda, başka CPU’ların kaynaklarını kullanabilmesine olanak
sağlanabilir.</p>
        <p>Birbirine özdeş sistemler, birbirlerinin birimlerini (kamera, servo, gps, pusula vb.)
sistemde fiziksel bir değişiklik yapmadan kullanabilirler.
3.7</p>
        <sec id="sec-3-5-1">
          <title>Yazılımın / Bileşenin Kara Kutu Testi</title>
          <p>ULAK altyapısı olan yazılımların ve bu yazılımlarda bulunan yine ULAK altyapısı ile
hazırlanmış tüm bileşenlerin kontrolünün harici yazılımların kontrolüne açılabiliyor
olması, yazılıma yazılım ve bileşen seviyesinde kara kutu testi yapma imkanı
sunmaktadır.</p>
          <p>Windows tabanlı bir test yazılımı, ULAK arayüzünden yazılım seviyesinde ya da
bileşen seviyesinde erişim sağlayarak, arayüz fonksiyonlarının izin verdiği detayda
yazılımın verdiği tepkileri test edebilir. Bu yaklaşımla, yazılımların sadece yazılım
seviyesinde değil, yazılımı oluşturan bileşen parçaları seviyesinde oldukça detaylı test
edilmesi mümkün olur.
3.8</p>
        </sec>
        <sec id="sec-3-5-2">
          <title>Yazılımın / Bileşenin Windows Kontrol Yazılımı</title>
          <p>ULAK teknolojisi, arayüzlerin gerçeklenmesinin yanında, bu arayüzlere uygun
Windows tabanlı kontrol yazılımlarının otomatik oluşturulmasını da sağlar. Bu sayede
hem yazılım seviyesinde, hem de bileşen seviyesinde, tüm arayüzlere ait kontrol
yazılımları otomatik çıkmış olur.</p>
          <p>Şekil 5’te de görülebilen ULAK-SPY yazılımı, ULAK’ın hazırladığı arayüze
ilişkin detayların yer aldığı ULAK-Builder tarafından otomatik oluşturulan DLL’i girdi
olarak alır. Tüm arayüz yeteneklerini çalışma zamanında otomatik çözümler. İlgili
arayüzü sağlayan kullanıcı arayüzünü kullanıcıya sunar.</p>
          <p>Şekil 5. ULAK-SPY Yazılımı
3.9</p>
        </sec>
        <sec id="sec-3-5-3">
          <title>Yazılımın / Bileşenin Windows Kontrol Yazılımıyla Testi</title>
          <p>ULAK teknolojisi sayesinde, Bölüm 3.8’de tanıtılan ULAK-SPY ile test
senaryoları yaratmak mümkündür. Bu arayüz ile test edilen yazılıma gönderilecek olan
komutlar için çağrılmaya hazır fonksiyon setleri oluşturulabilir. Önceden hazırlanmış mesaj
setleri istenilen sıra ile çağrılabilir. Bu sayede, geliştirme sürecinde, yazılımın
geliştiriciler tarafından test edilmesi mümkün olur.
ULAK teknolojisi, gerçeklediği arayüzlere ait mesaj ve yetenek listesini, mesaj
formatını, mesaj tipini ve açıklamalarını otomatik olarak ayrıntılı şekilde oluşturur ve bir
doküman ile kullanıcıya sunar. Bu doküman arayüz dokümanı olarak
kullanılmaktadır. Örnek doküman Şekil 6’da görülebilir.</p>
          <p>Şekil 6. Otomatik olarak oluşturulan arayüz dokümanı
4</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sonuçlar</title>
      <p>Dağıtık sistemlerde yazılımların birbirleriyle sağlıklı bir şekilde haberleşmesini
sağlamak sistemler için hayati önem taşımaktadır. Mesaj çözümleme ve formatlama
kodlarının elle yazılması iş gücü kaybına sebep olurken, sistemlerde haberleşme hatası
oluşma riskini de arttırmaktadır.</p>
      <p>Bu makalede özellikle kısıtlı kaynağa sahip, zaman-kritik dağıtık gömülü
sistemlerde haberleşme için oluşturulmuş noktadan noktaya haberleşme teknolojisi olan
ULAK ara katmanı aktarılmıştır. Farklı platformlar arasındaki haberleşmeyi
sağlayabilmesi, uzak metot çağrısına imkan vermesi ve haberleşmeyi asenkron ya da senkron
gerçekleştirebilmesi ULAK’ın başlıca özellikleri arasında sayılabilir.
5</p>
      <p>Teşekkür
Gökhan Öztaş, Berkhan Deniz, Merve Özkardeş, Cansu Bender, Serdar Büyüksaraç,
Bora Çalışkanbaş, Burak Ünaltay ve Volkan Şirin’e ULAK’ın geliştirilmesindeki
destek ve katkıları için teşekkür ederiz.</p>
      <p>Kaynaklar
14. A. S. Gokhale and D.C. Schmidt, “Measuring and Optimizing CORBA Latency and
Scalability Over High-Speed Networks,” IEEE Transactions on Computers, vol. 47, pp. 391–
413, 1998.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>S.</given-names>
            <surname>Schneider</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Farabaugh</surname>
          </string-name>
          ,
          <article-title>"Is DDS for You?," A Whitepaper by Real-Time Innovations</article-title>
          , http://www.rti.com/mk/DDS.html,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>R.</given-names>
            <surname>Kindel</surname>
          </string-name>
          , “
          <article-title>What Real-Time Data Distribution System Is Right for You?”, AFRL Technology Horizons</article-title>
          ,
          <year>August 2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>E.</given-names>
            <surname>Curry</surname>
          </string-name>
          ,
          <article-title>"Message-Oriented Middleware"</article-title>
          , Middleware for Communications,
          <string-name>
            <given-names>Q.H.</given-names>
            <surname>Mahmoud</surname>
          </string-name>
          , ed., John Wiley &amp;, Sons,
          <year>2004</year>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. W. Emmerich, “
          <article-title>Software engineering and middleware: a roadmap”</article-title>
          ,
          <source>Proceedings of the Conference on The Future of Software Engineering</source>
          , p.
          <fpage>117</fpage>
          -
          <lpage>129</lpage>
          , Limerick, Ireland, June 04-11,
          <year>2000</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>P.</given-names>
            <surname>Boonma</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Suzuki</surname>
          </string-name>
          , “
          <article-title>TinyDDS: An interoperable and configurable publish/subscribe middleware for wireless sensor Networks”, in A. Hinze and A</article-title>
          . Buchmann, editors,
          <source>Principles and Applications of Distributed Event-Based Systems, chapter 9. IGI Global</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. OMG, “
          <article-title>Data distribution service for real-time systems</article-title>
          <source>- version 1</source>
          .2”, The Object Management Group,
          <source>Tech. Rep.</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>P.</given-names>
            <surname>Hintjens</surname>
          </string-name>
          , “
          <article-title>ZeroMQ: Messaging for Many Applications”</article-title>
          ,
          <string-name>
            <given-names>O</given-names>
            <surname>'Reilly</surname>
          </string-name>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>P.</given-names>
            <surname>Smolik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Sebek</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hanzalek</surname>
          </string-name>
          , “
          <article-title>Orte-open source implementation of real-time publish-subscribe protocol”</article-title>
          ,
          <source>in Proc. 2nd International Workshop on Real-Time LANs in the Internet Age</source>
          , pp.
          <fpage>68</fpage>
          -
          <lpage>72</lpage>
          ,
          <year>2003</year>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Object Management Group, “
          <source>The Common Object Request Broker: Architecture and Specification Revision 2.2”</source>
          , 492
          <string-name>
            <given-names>Old</given-names>
            <surname>Connecticut</surname>
          </string-name>
          <string-name>
            <surname>Path</surname>
          </string-name>
          , Framingham, MA 01701, USA,
          <year>February 1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>L.</given-names>
            <surname>Gilman</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Schreiber</surname>
          </string-name>
          , “
          <article-title>Distributed Computing with IBM MQSeries”</article-title>
          , Wiley,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>M. Hapner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Burridge</surname>
            , and
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Sharma</surname>
          </string-name>
          , “Java Message Service Specification.
          <source>Technical report</source>
          , Sun Microsystems”, http://java.sun.com/products/jms, Nov. 1999
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>S.</given-names>
            <surname>Mishra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Fei</surname>
          </string-name>
          , and G. Xing, “
          <article-title>Design, implementation and performance evaluation of a corba group communication service”</article-title>
          ,
          <source>In Proceedings of the Twenty-Ninth Annual International Symposium on Fault-Tolerant Computing</source>
          , FTCS '
          <volume>99</volume>
          ,, Washington, DC, USA,
          <year>1999</year>
          . IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>D. C. Schmidt</surname>
            ,
            <given-names>A. S.</given-names>
          </string-name>
          <string-name>
            <surname>Gokhale</surname>
            ,
            <given-names>T. H.</given-names>
          </string-name>
          <string-name>
            <surname>Harrison</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <article-title>Parulkar, A high-performance end system architecture for real-time CORBA</article-title>
          , IEEE Communications Magazine, v.
          <volume>35</volume>
          n.2, p.
          <fpage>72</fpage>
          -
          <lpage>77</lpage>
          ,
          <year>February 1997</year>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>