<!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>İletişim Katmanı Yazılım Mimarisi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>İbrahim Karaaslan</string-name>
          <email>ikaraaslan@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>Tanın Afacan</string-name>
          <email>tafacan@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>Emrah Demircan</string-name>
          <email>edemircan@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>Özgür Başol</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Erman Zaim</string-name>
          <email>ezaim@aselsan.com.tr</email>
          <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 Mimarisi</institution>
          ,
          <addr-line>İletişim Katmanları, İletişim Protokolleri, Tasarım Şablonu, Yazılım Kalitesi</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Aselsan A.Ş.</institution>
          ,
          <addr-line>Ankara</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Özet. Bu makalede, nesneye dayalı İletişim Katmanı Yazılım Mimarisi (İKYM) sunulmuştur. İKYM, iletişim katmanlarını ve protokollerini gerçekleyen yazılımların tasarımında kullanılmak üzere geliştirilmiş bir mimaridir ve her bir katman için genel ve modüler bir yapı önerir. Bu mimari, iletişim katmalarına kolayca uygulanabilirken, yazılım geliştirme sürecinin her evresindeki kazanımları sayesinde son ürün maliyetini azaltmayı hedefler.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Kullanıcı gereksinimlerindeki artıştan dolayı gitgide büyüyen ve karmaşıklaşan
yazılımlar için yapılan mimari tasarım çalışmaları, artık algoritma ve veri yapılarının
tasarımı çalışmalarından daha öncelikli hale gelmiştir. Karmaşık yazılım sistemlerinin
kaliteli olarak tasarlanması zorunluluğu, yeni bir takım problemleri de beraberinde
getirmiştir. Bu problemlerin çözümü sürecinde sistem ve yazılım mimarisi, kalite
nitelikleri, mimari kararlar ve yazılım şablonları gibi konular ön plana çıkmıştır.</p>
      <p>
        Sistem mimarisi, karmaşık sistemlerin birbirleriyle ilişkili daha küçük parçalara
bölünmesini ve bu parçalar arasındaki ilişkilerle daha kolayca ortaya çıkan ve daha
belirgin bir biçimde görülebilen büyük resmin oluşturulmasını göz önünde
bulundurur. Yazılım mimarisi ise, yazılım gereksinimleri ile gerçekleme arasında köprü
görevini üstlenir. IEEE, yazılım mimarisini, bir sistemin temel yapısı, bileşenlerden
oluşan, birbirleriyle ve çevreyle ilişkileri olan, sistemin tasarımını ve evrimini yöneten
ilkeler olarak tanımlar [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Yazılım sistem gereksinimlerini sağlamak ve söz konusu sistem üzerindeki riskleri
azaltmak için yazılım geliştirme sürecinin ilk aşamalarından itibaren kalite
ölçütlerinin göz önünde tutulması gerekmektedir. Yazılım kalitesi, bir ürün veya hizmetin ima
edilen veya belirlenen ihtiyaçlarını karşılamak için, yeteneğiyle ilişkilendirilen
özellikler ve nitelikler şeklinde tanımlanır [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Riskleri ortadan kaldırmak ve tüm yazılım
sistem başarısını kolaylaştırmak için yazılım kalite niteliklerinin yazılım geliştirme
sürecinde çok önceden değerlendirilmesi gerektiğini vurgulamaktadır [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Mimari kararlar, yazılım sisteminin bütününü ya da bir veya birden çok çekirdek
parçasını ilgilendiren tasarım kararlarıdır. Bu kararlar sistemin kalitelerini etkiler [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Tipik kalite nitelikleri taşınabilirlik, bakım yapılabilirlik, uyarlanabilirliktir.
Mimari kararlar, bir sistemin yazılım kalitesi nitelikleri gibi işlevsel olmayan
gereksinimlerini dolaylı ya da dolaysız olarak etkileyebilmesinden dolayı çok önemlidir. Bu
nedenle, tasarımcılar mimari kararların muhtemel yan etkilerini de dikkate almalıdır.
      </p>
      <p>
        Son yıllarda yapılan yazılım mimarisi araştırmaları kapsamında, başta yazılım
sistemlerinin genel yapısı olmak üzere, özellikle alt sistemler ile bileşenler arasındaki
ilişkileri konu alan ilkesel çalışmalar yayınlanmıştır. Araştırmalar başlarda pratik
yazılım çalışmaları olarak adlandırılırlarken, günümüze kadar olan süreçte karmaşık
yazılım tasarımı ve geliştirmesi probleminin çözümünde somut bir yol gösterici görev
üstlenmişlerdir. Bu çalışmaların yazılım dünyasında yer bulmasıyla beraber yazılım
sistemlerinin geliştirilmesinde alınan mimari kararlar bu çalışmalarla eşgüdümlü hale
gelmiştir. Güncelliğini koruyan çalışmalardan biri olan Şablon Tabanlı Yazılım
Mimarisi de günümüzde çokça kullanılmakta olup, yazılım sistemleri tasarımında önemli
bir rol oynamaktadır [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        Yazılım şablonları yazılım mimarisinin anahtar kavramlarından biridir ve bu
şablonlar kısaca bir problemin çözümü olarak ifade edilebilirler. Öyle ki bu şablonların
yeniden kullanılması sayesinde genel bir ilkeye bağlı kalınarak problemlerin çözümü
gerçekleştirilir. Böylece, şablonlar çeşitli sistem tasarımlarında benzeri görülebilecek
tekrarlayan sorunlara rahatlıkla uygulanabilecek ortak bir çözüm sundukları için
yazılım maliyetlerini düşürmektedirler. Örneğin, Gang of Four (GoF) tasarım şablonları,
en çok kullanılan şablonlar arasında gösterilebilir [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        Bu makalede anlatılan İletişim Katmanı Yazılım Mimarisi, iletişim katman ve
protokollerini içeren bir yazılım sisteminin mimari tasarımını hedeflemektedir. Aynı
kapsamdaki Protokol Yazılım Mimarisi konusunda çeşitli öncül çalışmalar da
bulunmaktadır. Bu çalışmalardan [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], ortak protokol yapısını modelleyen tasarım şablonları
sunar. Bu tasarım şablonlarından Protokol Sistem Şablonu protokol sistemini genel
bir seviyede, Protokol Birim Şablonu sistemin aktif parçalarını ve Protokol Davranış
Şablonu ise protokol sistem parçaları arasındaki iletişimi modeller. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] şablon tabanlı
protokol geliştirme yöntemleri ile ilgilenir.
      </p>
      <p>Ancak, öncül çalışmalar, yazılım sistemlerini tasarım şablonu seviyesinde göz
önüne almakta ve iletişim katmanlarının ve protokollerinin daha detaylı tasarımlarını
sunmamaktadır. Bu nedenle, bu çalışmada, eksikliği hissedilen detayların da
bulunduğu genel ve modüler bir mimari tasarım hedeflenmiş ve nesneye dayalı İletişim
Katmanı Yazılım Mimarisi (İKYM) önerilmiştir.</p>
      <p>Bu makale şu şekilde organize edilmiştir. 2. bölümde, iletişim katmanları genel
olarak anlatılmış ve 3. bölüm'de, İKYM modeli sunulmuştur. 4. bölümde, İKYM’nin
iletişim protokollerine nasıl uygulanacağı açıklanmış ve İKYM kullanılarak bazı
protokoller modellenmiştir. Son bölümde ise çalışmanın sonuçları ve gelecekte yapılması
düşünülen çalışmalar yer almaktadır.</p>
      <p>İletişim Katmanları
International Standards Organization (ISO), iletişim ağlarındaki tasarım
karmaşıklığını azaltmak üzere iletişim işini belli bir görevi üstlenmiş birçok basit katmana ayırmış
ve üst üste yerleşen bu katmanlardan oluşan mimariyi Open System Interconnection
(OSI) referans modeli olarak adlandırmıştır. Yedi Katman Referans Model olarak da
tanımlanan bu model ağ cihazları arasında veri iletimi ve işlenmesini tanımlayan bir
kavramdır. Öte yandan, The Defense Advance Research Projects Agency (DARPA)
tarafından savunma ağlarını birbirine bağlamak için geliştirilmiş ve tanımlanmış olan
TCP/IP Dört Katmanlı Referans Modeli de mevcuttur.</p>
      <p>
        OSI ile TCP/IP arasındaki temel fark, OSI’de iletişim katman protokollerinin
tanımlanmaması, TCP/IP’de ise modelin tanımlı protokoller içermesidir. Her iki
modelin de ortak çıktısı iletişim katmanı kavramının kullanılmasıdır, ancak uygulamada
çok yer bulan TCP/IP mimarisi yanında OSI modeli iletişim katmanı tanımları teorik
anlamda daha yaygındır [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>Birbirleriyle çeşitli iletişim katmanları üzerinden konuşabilen makineler eşdüzey
öğeler olarak tanımlanır. Bu öğeler, işlemler, donanım cihazları hatta insanlar bile
olabilir. Eşdüzey öğeler katmansal modelin her bir katmanında üzerinde anlaşılmış bir
protokol aracılığıyla iletişim kurarlar. Gerçekte veriler bir makinedeki katman n’den
direkt olarak başka bir makinedeki katman n’ye iletilmez. Bunun yerine, her katman
veri ve kontrol bilgilerini en alt katmana ulaşana kadar hemen altındaki katmana
geçirir. Katman 1’in altında gerçek iletişimin gerçekleştiği fiziksel ortam vardır.</p>
      <p>Her bir iletişim katmanı ETSI, ANSI, ITU, IETF gibi kuruluşlar tarafından
tanımlanmış bir veya daha fazla protokolden oluşabilir. Protokoller standartlaştırılmış
kurallar kümesidir ve bulunduğu katman ile birbiri yerine de kullanılabilir. Protokoller
ve katmanların ortak özellikleri şu şekilde sıralanabilir:</p>
      <p>Eşdüzey öğeler kontrol ya da kullanıcı verisi içeren mesaj veya paket alışverişiyle
iletişirler.</p>
      <p>Bağlantılı veya bağlantısız hizmet sunabilirler.</p>
      <p>Veri iletimi için paket veya devre ağ anahtarlama yöntemleri kullanırlar.
Yapılandırma parametrelerine sahiptirler.</p>
      <p>Hizmet almak veya sağlamak için bazı ara yüzleri vardır.</p>
      <p>Tetikleyici olayları uygun şekilde işleyebilmek için bir veya birden çok durumları
olabilir.
Öncelik verme, gecikme, hız, güvenilirlik gibi iletişim hizmet kalitesi
gereksinimlerini çeşitli seviyelerde sağlayabilirler.</p>
      <p>Mesaj parçalama birleştirmeyi destekleyebilirler.</p>
      <p>Sıkışıklık ve akış kontrolü gibi hizmetleri sağlayabilirler.</p>
      <p>Otomatik Tekrar İsteği (ARQ), bütünlük kontrolü, hata bulma ve düzeltme gibi
yöntemleri destekleyebilirler.</p>
      <p>Yazılım sistemlerinde sıkça kullanılan iletişim yazılımları, katmansal model esas
alınarak, katmanların ve katman protokollerinin yukarıda bahsi geçen genel kurallar,
gereksinimler ve özellikler çerçevesinde tasarlanması ve gerçeklenmesi ile
oluşturulur.
3</p>
      <p>İletişim Katmanı Yazılım Mimarisi Modeli
İKYM, iletişim katman ve protokollerini gerçekleyen yazılımların tasarımında
kullanılmak üzere geliştirilmiş nesneye dayalı bir mimaridir ve her bir iletişim katmanı için
genel ve modüler bir yapı önerir. Önerilen mimaride, iletişim katmanlarının ve bu
katmanlardaki protokollerin daha önce bahsedilmiş olan ortak özellikleri
kapsanmıştır. Bu nedenle, İKYM hem bir katman hem de bir protokol tasarım modelidir. İKYM
Soyut Modeli Şekil 1’de verilmiştir.</p>
      <p>Ue
s
Use</p>
    </sec>
    <sec id="sec-2">
      <title>Control</title>
    </sec>
    <sec id="sec-3">
      <title>State</title>
      <sec id="sec-3-1">
        <title>Paket parçalama-birleştirme, otomatik tekrar isteği ve servis kalitesi gibi protokole ait kontrol mekanizmalarını işletir.</title>
      </sec>
      <sec id="sec-3-2">
        <title>Analiz edilmiş olaylara göre protokol durumunu günceller ve olaylara uygun eylemleri gerçekleştirir.</title>
      </sec>
      <sec id="sec-3-3">
        <title>Protokol paketi ve paketlerden oluşan alma gönderme kuyrukları üzerinde tanımlanmış paket işlemlerini gerçekleştirir.</title>
        <p>Trigger
Protocol
Factory
Route</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Protocol</title>
      <p>U
Katmana ait protokollerin Arayüzden gelen se
yailpkılleannmdıerıllemrianldaernınvdean KisotenğtrioalnDaluizruemdevre. Packet
sorumludur. Tetiklenen Paket birimlerini
arayüzle ilgili protokolü kullanarak
bulur ve arayüzü protokolü
yönlendirir. gerçekleştirir.</p>
      <p>Şekil 1. İletişim Katmanı Yazılım Mimari Soyut Modeli
İKYM, bir taraftan taşınabilirlik, bakım yapılabilirlik, uyarlanabilirlik ve verimlilik
gibi bazı kalite niteliklerini sağlamayı hedeflerken diğer taraftan da mimari kararların
sonuçlarını ve muhtemel yan etkilerini de göz önüne alır.</p>
      <p>İKYM’nin tasarımında nesneye dayalı modelleme teknikleri kullanılmıştır.
Mimari, Object Management Group (OMG) öncülüğünde desteklenen Model Temelli
Mimari (Model Driven Architecture) temel alınarak Unified Modelling Language
(UML) ile modellenmiştir.</p>
      <p>Tasarımcılar İKYM’yi yeni ortamlara kolaylıkla taşıyabilir ve uyarlayabilir.
İKYM, mimari tasarıma geç katılmış tasarımcılar için bile anlaşılabilirlik ve
öğrenilebilirlik açısından kullanışlıdır. İKYM, Test veya Sistem Mühendisliği gibi
tasarımcıyla çalışan gruplar için çözümlenebilirlik, değiştirilebilirlik ve test edilebilirlik
açısından bakımı yapılabilirdir. Bu nedenle, nesneye dayalı İKYM kullanışlılık, bakım
yapılabilirlik ve taşınabilirlik gibi yazılım kalite niteliklerini sağlar.</p>
      <p>İKYM UML model, sınıflar ve bileşim (composition), türeme (realization),
birleşme (aggregation) tarzındaki ilişkiler gibi nesneye dayalı bileşenlerden oluşmuştur.
Mimarideki, bileşenler ve ilişkilerin ne olduğu hakkındaki kararlar katman ve
protokol terimlerinin nesneye dayalı söz dizimi ile tanımlanmasından elde edilebilir.
─ Katman: Üst ve altdaki katmanlara açtığı hizmetleri gerçekleştirir (realization)
ve onlar tarafından açılan hizmetleri kullanır (aggregation/1). Bir veya birden
çok protokole sahiptir (composition/1..*). Protokolleri ilgilendiren yapılandırma
bilgileri birimini içerir (composition/1).
─ Protokol: Bir veya birden çok protokol iletişim birimine (connection, session,
circuit, logical channel vs.) sahip olabilir(aggregation/1..*). An itibariyla alınan
paketi (aggregation/1) kontrol eder ve gerekiyorsa ilgili iletişim birimine
yönlendirir ve protokol iletişim birimlerinden gelen (bidirectional) bilgileri sahip olduğu
(composition/1) monitör birimine bildirir. Standarda uygun şekilde oluşan olaylara
göre bir veya birden çok durum kullanarak (aggregation/1..*) protokolü işletir.
Standartta tanımlıysa, protokolle ilgili bilgilerin tutulduğu bir protokol tablosu
vardır (aggregation/1). Standartta tanımlıysa, paketlerin QoS gereksinimlerini
sağlayan bir Quality of Service (QoS) birimi vardır (aggregation/1). Standartta
tanımlıysa, üst katmandan gelen büyük paketleri parçalayan veya alt katmandan
gelen protokol paketlerini gerekiyorsa birleştirdiği Fregmantation Reassembly (FR)
birimi vardır (aggregation/1). Standartta tanımlıysa, güvenilir paket iletimini
sağlayan Automatic Repeat Request (ARQ) birimi vardır (aggregation/1). QoS, FR,
ARQ birimlerinin katmana gelen protokol paketlerini ortak olarak işledikleri bir
veri paket kuyruk yöneticisi vardır(aggregation/1). Veri paket kuyruk
yöneticisinin sıfır veya daha çok sayıda hem alma hem gönderme yönünde kuyruk
elemanları vardır (aggregation/*). Alma ve gönderme kuyruk elemanı protokol
paketlerini biriktirdiğinden aynı zamanda bir protokol paketidir (generalization).
Veri paket kuyruk yöneticisi an itibariyle gelen protokol paketini kullanarak
(aggregation/1) gerekli işlemleri yapar.
İKYM’nin bileşenleri, ilişkileri ve ilişkilerin yönleri yukarıda anlatıldığı gibi
belirlenir. Yukarıdaki tanımlarda, bileşenler ve ilişkilerini belirten kelimeler sırasıyla italik
ve koyu yazılmıştır. Sonuç olarak, Rhapsody aracı kullanılarak Şekil 2’de gösterilen
UML Sınıf Modeli elde edilmiştir.</p>
      <p>1
cur entPacket
paket hazırlama,
paketleme,
ayrıştırma,
denetleme,
sarmalama, bel ek
tahsis etme ve
serbest bırakma</p>
      <p>PACKET
ProtocolPacket
1
cur entPacket
cur entPacket 1
ProtocolCommunicationUnit</p>
      <p>Durumları kul anarak
protokolü işler ve ihtiyaç
duyulduğunda tekrar için
otomatik istek veya hizmet
niteliği mekanizmalarını işler
LAYER L+1
LAYER L
1
1
1
1
Bu il şkiler protokolden
bağımsızdır ( 0,1 ),
ProtocolControlUnit
üzerinde çalışır ve çift
yönlüdür.</p>
      <p>
        2. İletişim Katmanı Yazılım Mimari Modeli
Protokolün durum makinelerini
temsil
etmek için, Gang
of Four
tarafından tanıml
anan Durum Tasarım Şablonu kullanılmıştır. Tasarım şablonları [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
problemlere
ortak
çözümlerdir. Fakat bu çalışmada,
      </p>
      <p>Durum Tasarım Şablonunda (SDP) ProtocolCo
mmunicationUnit
and</p>
      <p>ConcreteState
birimleri
arasında
bileşim
(composition)
ilişkisi
kullanarak bir değişiklik yapılmıştır.</p>
      <p>
        Katman ve protokollerin
ortak yönleri [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] ve [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
gibi bazı çalışmalar tarafından ele
alınmıştır. Fakat önceki çalışmalar
yazılım
sistemlerini
tasarım
şablonu
seviyesinde
ele
almamakta ve daha detaylı
      </p>
      <p>bir tasarım sunmamaktadırlar. İ KYM, tasarım
şablonlarına göre daha detaylı</p>
      <p>bir model sunmakta ve bu nedenle gerçeklemeye doğru adım
adım ilerleyebilmemizi sağlamaktadır.</p>
      <p>İKYM ile İletişim Katman Tasarımı
Tasarımcıların, standartları ve yazılım gereksinimlerini okuyarak söz konusu protokol
ve katman gereksinimleri hakkında detaylı bir anlayışa sahip olmaları şarttır. Daha
sonra, söz konusu katman için aşağıdakilerin uygulanabilir olup olmadığı tespit
edilmelidir:
Yukarıdakilere ve ilgili gereksinimlere dikkatlice karar verdikten sonra, tasarımcılar
söz konusu mimarilerini, İKYM kullanarak modelleyebilirler. Daha sonra, bileşen ve
ilişkilerin işlem ve değişken detaylarını tespit ederek detaylı tasarıma başlanabilir.</p>
      <p>İKYM’nin iletişim katman ve protokollerine uygulanması, ilgili protokollerin ve
bulundukları katmanların detaylı bir şekilde irdelenmesine bağlıdır. Ancak, farklı
ekipler tarafından tasarlanan aynı katman mimarileri, hedeflenen standardın ilgili
ekipler tarafından anlaşılması ve yorumlanması şekline göre farklılıklar
gösterebilecektir. Bu nedenle, bu bölümde örneklendirilen TCP/IP taşıma katmanı modeli,
farklılık yaratmayacak ölçüde basit tutulmuş ve bu kapsamda iki ana protokol, TCP ve
UDP, için Şekil 3 TCP/IP Taşıma Katmanı Modeli’nde gösterilen mimari tasarım
yapılmıştır.</p>
      <p>1</p>
      <p>1
1 1</p>
      <p>TCPManager
1
«Interface»
ServicesProvidedToIPLayer</p>
      <p>«Interface» 1
ServicesUsedFromIPLayer
1
1</p>
      <p>TCPSt1ate
IPLAYER
1
1
curentTCPPacket1</p>
      <p>TCPPacket</p>
      <p>TCPOutgoingQueueElement
*</p>
      <p>TCPIncomingQueueElement</p>
      <p>*
curentTCPPacket 1</p>
      <p>TCPDataQueueManager
1 1. *</p>
      <p>TCPSession
1</p>
      <p>1 TCPAutomaticRepeatRequest 1
Closed</p>
      <p>Listen</p>
      <p>SynSent</p>
      <p>SynRcvd</p>
      <p>Estab</p>
      <p>CloseWait</p>
      <p>LastAck</p>
      <p>Closing</p>
      <p>FinWait1</p>
      <p>FinWait2</p>
      <p>TimeWait
1
1
1
1
1
1
1
1
1
«Interface»
ServicesProvidedToApplicationLayer</p>
      <p>«Interface»
ServicesUsedFromApplicationLayer</p>
      <p>1
TransportLayerManager</p>
      <p>curentUDPPacket1
UDPManager
UDPPacket
Şekil 3. TCP/ IP Taşıma Katmanı Modeli
TCP/IP modeli taşıma katmanı, uygulama ve internet katmanı arasında
bulunmaktadır. Örnek kapsamındaki internet katmanı IP protokolü ile gerçeklenmiş olup, taşıma
katmanı ile IP protokolü hizmet alınan ve verilen ara yüzlerle birbirine bağlanmıştır.
Diğer yandan, uygulama katmanı çok çeşitli uygulamalar barındırabilmesi sebebiyle
genel ismiyle tanımlanmıştır. Taşıma katmanının uygulama katmanı ile bağlantısı
yine hizmet alınan ve verilen ara yüzlerle yapılmıştır. Katmanlar arası iletişim,
İKYM’de önerilen katman yöneticisi ile yapılmakta olup taşıma katmanı yöneticisi
(TransportLayerManager) sınıfı olarak isimlendirilmiştir.</p>
      <p>TCP/IP modeliyle uyumlu olarak belirtildiği üzere, bir iletişim katmanında bir ya
da daha fazla protokol bulunabilmektedir. Şekil 3’de gösterilen modelde taşıma
katmanı yöneticisine bağlanmış iki farklı taşıma katmanı protokolü (TCP ve UDP)
bulunmaktadır. Her iki protokol de kendi yöneticilerine (TCPManager, UDPManager)
sahip olmakla beraber, uygulama katmanındaki olası bileşenlerden gelebilecek
değişik gereksinimleri karşılayacak şekilde çalışmaktadır. TCP bağlantılı, güvenilir ve
durum makinesi bulunan bir protokoldür. Bunun yanında, UDP bağlantısız, güvensiz
ve durum makinesi bulunmayan basit bir protokoldür. Dolayısıyla, Şekil 3’de
modellenmiş her iki protokol de özellikleri doğrultusunda seçilmiş İKYM bileşenleri
kullanılarak tasarlanmıştır.</p>
      <p>TCP’nin ana sınıfı olan TCPManager, TCP doğası gereği bu sınıfa bağlı kendi
durum geçişleri olan oturumlarla etkileşim içindedir. TCP’nin bağlantılı bir protokol
olması sebebiyle, sayısı gerçekleme yapılacak hedef platforma göre değişiklik
gösterebilen oturumlara (TCPSession sınıfı) ihtiyaç duymaktadır. Ayrıca durum makinesi
olan bir protokol olarak, her TCP oturumu, Durum Tasarım Şablonu esas alınarak
tasarlanmış çeşitli TCP durum sınıfları ile bağlantılıdır. Protokolün güvenilirlik
gereksinimleri, otomatik tekrar isteği mantığını çalıştıran TCPAutomaticRepeatRequest
sınıfı ve bu kapsamda ihtiyaç duyulan paket kuyruklama amaçlı
TCPDataQueueManager sınıfı ile sağlanır. Öte yandan, IP katmanından gelen TCP paketleri ve
uygulama katmanından gelen bağlantı veya veri iletim isteklerinin işlenmesi,
kodlanması veya çözülmesi işlemi yönetici, durum ve veri kuyruklama sınıflarına hizmet veren
TCPPacket sınıfı tarafından yapılmaktadır.</p>
      <p>UDP, TCP’den farklı olarak, sadece bir yönetici sınıfı ve bu sınıfa eşlik eden
UDPPacket sınıfından oluşmaktadır. UDP’nin basit işlevselliği ve sınırlı yetenekleri
nedeniyle, bu protokol az sayıda İKYM bileşeni ile modellenmiştir.</p>
      <p>Sonuç olarak, çok basitten çok karmaşığa kadar çeşitli protokollerden oluşan
iletişim katmanları, İKYM ve bu modelde kullanılan bileşenler kullanılarak kolaylıkla
tasarlanabilir.
5</p>
      <p>Sonuç
Yazılım mimarileri, yazılım sisteminin iç ve dış bileşenlerini, bileşenlerinin
arasındaki ilişkileri tanımlar. Yanlış veya eksik mimari kararların ve mimarilerin çok maliyetli
olduğu bilinmektedir. Tasarımcının doğru mimari kararlar aldığından ve yazılım
gereksinimlerinin karşılandığından emin olmak için, modeller oluşturulur. Modeller
kullanılarak da, var olan mimariler, tasarımlar analiz edilir, değişiklikler tartışılır ve
paydaşlarla iletişim kurulur.</p>
      <p>İKYM, protokol yazılım mühendislerinin ihtiyaçlarını karşılayacak bir iletişim
katmanı tasarım modeli olmasının yanı sıra az deneyime sahip mühendisler için de
belirsizlikleri ve karmaşıklığı ortadan kaldırarak faydalı olmayı hedefler. İKYM,
mimari tasarım bileşenlerini, mimari tasarım kararlarını, iletişim protokollerinin ortak
özelliklerini içerir.</p>
      <p>Öncül çalışmalardan farklı olarak, İKYM, yazılım sistemini tasarım şablonu
seviyesinde ele almakta ve daha detaylı bir mimari model önermektedir. İKYM,
kolaylıkla uygulanabilir, taşınabilir, bakım yapılabilir ve uyarlanabilir bir mimari modeldir.
Ayrıca, İKYM kullanılan yazılım tasarımlarında, adı geçen yazılım kalite
niteliklerinin sağlanması ve yazılım kalitesinin arttırılması hedeflenmektedir. İKYM
kullanımının, yazılım geliştirme maliyetlerini büyük oranlarda azaltacağı düşünülmektedir.</p>
      <p>Makalede, TCP ve UDP içeren TCP/IP taşıma katmanının, İKYM ile
tasarlanabildiği gösterilmiştir.</p>
      <p>Bir sonraki çalışmada ise İKYM’nin, yazılım geliştirme süreci ve yazılım kalitesi
üzerindeki etkilerinin karşılaştırmalı olarak tartışılması yazarlar tarafından
planlanmaktadır.</p>
      <p>Kaynaklar</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>1. The Institute of Electrical and Electronics Engineers (IEEE) Standards Board</article-title>
          .
          <article-title>Recommended Practice for Architectural Description of Software-Intensive Systems (IEEE-</article-title>
          <string-name>
            <surname>Std-</surname>
          </string-name>
          1471- 2000) ,
          <article-title>September 2000</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>International</given-names>
            <surname>Standards Organization: Information Technology - Software Product</surname>
          </string-name>
          Quality - Part 1:
          <string-name>
            <surname>Quality</surname>
            <given-names>Model</given-names>
          </string-name>
          ,
          <source>ISO/IEC FDIS 9126-1</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Francisca</given-names>
            <surname>Losavio</surname>
          </string-name>
          and
          <string-name>
            <given-names>Ledis</given-names>
            <surname>Chirinos</surname>
          </string-name>
          , Nicole Lévy and
          <string-name>
            <given-names>Amar</given-names>
            <surname>Ramdane-Cherif</surname>
          </string-name>
          ,
          <source>France “Quality Characteristics for Software Architecture” in Journal of Object Technology</source>
          , vol.
          <volume>2</volume>
          , no.
          <issue>2</issue>
          ,
          <string-name>
            <surname>March</surname>
            <given-names>-April</given-names>
          </string-name>
          <year>2003</year>
          , pp.
          <fpage>133</fpage>
          -
          <lpage>150</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Neil</surname>
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Harrison</surname>
            and Paris Avgeriou, “Leveraging Architecture Patterns to Satisfy Quality Attributes”
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Oquendo</surname>
          </string-name>
          (Ed.):
          <source>ECSA</source>
          <year>2007</year>
          , LNCS 4758, pp.
          <fpage>263</fpage>
          -
          <lpage>270</lpage>
          ,
          <year>2007</year>
          © SpringerVerlag Berlin Heidelberg 2007
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Liliana</given-names>
            <surname>Dobrica</surname>
          </string-name>
          and Eila NiemelaÈ , Member, IEEE Computer Society, “
          <source>A Survey on Software Architecture Analysis Methods”</source>
          <fpage>0098</fpage>
          -
          <lpage>5589</lpage>
          /02/$17.00. IEEE 2002
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>F.</given-names>
            <surname>Buschmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Meunier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Rohnert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Sornmerlad</surname>
          </string-name>
          , M. Stal, “
          <article-title>Pattern-Oriented Software Architecture, A system of Patterns”, Volume1, February 2001</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>E.</given-names>
            <surname>Gamma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Helm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Johnson</surname>
          </string-name>
          and J. Vlissides, “
          <article-title>Design Patterns: Elements of Reusable Object-Oriented Software”</article-title>
          ,
          <source>Addson Wesley</source>
          ,
          <year>1995</year>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Juha</given-names>
            <surname>Parsinen</surname>
          </string-name>
          and Markku Turunen , “
          <article-title>Patterns for Protocol System Architecture”, 2000</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Youngjoon</given-names>
            <surname>Byun</surname>
          </string-name>
          , “
          <article-title>Pattern-Based Design</article-title>
          and Validation of Communication Protocols”,
          <year>2003</year>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Andrew S. Tanenbaum</surname>
          </string-name>
          , “Computer Networks Ed.
          <volume>4</volume>
          ”, Prentice Hall,
          <year>2003</year>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>