<!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>Genel Amaçlı Haberleşme Arayüzü Simülatör Yazılımı</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mustafa GEVHER</string-name>
        </contrib>
      </contrib-group>
      <fpage>295</fpage>
      <lpage>301</lpage>
      <abstract>
        <p>Generic Simulator was developed in order to provide a common framework for generating simulation software which are used to test communication interfaces used by the software units developed for various projects. This paper evaluates the design and usage of Generic Simulator Software which provides a framework that defines common message definition templates for various interfaces and protocols (TCP/UDP IP, ARINC 429, CAN Bus, Discrete line, RS 232/422, MIL-STD-1553B) and also enables the user to define and update the graphical user interface (GUI) dynamically. Anahtar Kelimeler: simülatör, protokol, yazılım test ve doğrulama Günümüzde yazılımlar yalnızca kullanıcı ile etkileşim halindeki bağımsız yapılar olmakla kalmayıp, donanım ve diğer yazılımlar ile iletişim içerisinde çoğunlukla karmaşık sistemlerin parçalarını oluştururlar. Web ya da masaüstü uygulamaları genellikle TCP veya UDP protokolleri üzerinde çalışan FTP ve HTTP gibi yaygın uygulama katmanı haberleşme protokollerini kullanır. Diğer taraftan gömülü sistem yazılımları, bunlar gibi yaygın haberleşme protokollerinin yanı sıra MIL-STD-1553B, RS-232, RS-422, ARINC-429, CAN Bus ve dijital/analog girdi/çıktı hatları gibi daha az yaygın olan ve kullanım alanına göre özelleşmiş haberleşme yöntemlerine de ihtiyaç duyabilmektedir.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Metin TEKKALMAZ 2 BİLGİN4</title>
    </sec>
    <sec id="sec-2">
      <title>Hakan YAMANYAR 3</title>
      <p>Ömer</p>
      <sec id="sec-2-1">
        <title>Giriş</title>
        <p>Yazılım testlerinde kullanılan arayüz simülatörlerini hazırlamak, yazılımın arayüz
sayısına ve arayüzlerin karmaşıklığına göre uzun süren bir faaliyet olabilmektedir.
Yukarıda bahsi geçen farklı haberleşme protokollerinin ele alınması, simülatör
kullanıcı arayüzünün hazırlanması, alınan ve gönderilen verinin bu kullanıcı arayüzü
üzerinden sunulması farklı arayüz simülatörlerinde tekrarlanan ancak simülatörün
geliştirilmesinde kayda değer yer tutan faaliyetlerdir.</p>
        <p>Genel Amaçlı Simülatör (GAS), arayüz simülatörlerinin hazırlanması işini
hızlandırma hedefi ile ortaya çıkan bir çalışma olmuştur. Bu amaçla GAS kapsamında
aşağıdaki hedefler belirlenmiştir:
 Simülatör geliştiricisi, alt tarafta kullanılan haberleşme protokollerinden
mümkün olduğunca soyutlanmalıdır,
 Kullanıcı arayüzünün hazırlanması için standart bir yöntem kullanılmalıdır,
 Haberleşme esnasında alınan/gönderilen verinin kullanıcı arayüzü ile
ilişkilendirilmesi işleri kolay ve ortak bir yöntemle yapılabilmelidir,
 Simülatörü hazırlanan yazılımın/birimin davranışını tanımlamak için bir
yöntem sunulmalıdır.</p>
        <p>Bu makalede GAS, gerek tasarımı gerekse kullanımı açılarından tanıtılmaktadır.
Bölüm 2’de, GAS yetenekleri, GAS’a ait genel yazılım mimarisi, temel sınıflar arası
ilişkiler, kullanıcı arayüzünün hazırlanması için sunulan altyapı yukarıda bahsi geçen
hedefler gözetilerek verilmektedir. Bölüm 3’te GAS kullanıcı deneyimleri, gelişmeye
açık olası konular ile birlikte sunulmaktadır. Son olarak genel bir değerlendirme
sunularak makale tamamlanmaktadır.
2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Simülatör Yazılımı Tasarımı</title>
        <p>
          Bu bölümde Genel Amaçlı Simülatörü oluşturan temel yapıtaşları tanımlanmaktadır.
Simülatör yazılımının hazırlanması için ayrıca GAS Konfigürasyon Tanımlama
Yazılımı (KTY) geliştirilmiştir. Bu araç ile kullanıcı arayüzü (KA) ve haberleşme
arayüzü arasındaki ilişkiler tanımlanabilir. Kullanıcının ihtiyaç duyması halinde
değerlendirme ve kontrol kodlarını yazması için arayüz sağlar. Bunun yanı sıra SOAP
[
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], ASN1 [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], CORBA [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] gibi standartların kullanılması için gereken altyapıların
simülatöre eklenmesi için arayüz de sağlamaktadır.
2.1
        </p>
        <p>Kullanıcı-Haberleşme Arayüzlerinin Senkronizasyonu
Yazılımların testlerinde kullanılan simülatörlerin temel olarak gerçekleştirmesi
gereken işlevlerden birisi kullanıcı arayüzü (KA) giriş kontrollerinin gönderilecek
mesajlara ait alanları güncelleyebilmesi ve gelen mesajların içerisinde bulunan
alanlardaki bilgilerin KA gösterim kontrollerini güncelleyebilmesidir. Bu amaçla
birbiri ile etkileşecek olan KA ve haberleşme mesaj alanları öznitelikler (attribute)
aracılığıyla birbirine bağlanmıştır (Şekil 1). Güncellenen mesaj alanlarına/(KA
kontrollerine) bağlı oldukları KA kontrollerinin/(mesaj alanlarının) değerleri otomatik
olarak güncellenmesinin yanı sıra, yazılım içinde ihtiyaç duyulması halinde
kullanıcının “business logic” olarak tanımlanan, yeni olaylar ve güncellenen değerlere
göre karar verilmesi gereken durumları yönetebilmesi için C# dili ile kodlama
altyapısı KTY tarafından sağlanmıştır.</p>
        <p>Şekil 1 Genel Amaçlı Simülatör İşleyişi
GAS yazılımı temel olarak 3 olay kaynağını kullanır:
1. Kullanıcı Arayüzü: Kullanıcının (form üzerindeki) yaptığı değişiklikler ya da
gelen mesajlara ait alanlar, bağlı bulunduğu özniteliği değiştirir. Buna bağlı
diğer KA kontrolleri ya da mesaj alanları var ise bunlar da otomatik değişir.
Bununla beraber “OnUpdate” fonksiyonu çağrılarak güncellenen öznitelik ile
beraber yapılması gereken başka işlemler de tanımlanabilir.
2. Zamanlayıcılar: Zamanlayıcılar tanımlandığı zaman aralığı sonunda
“OnTick()” fonksiyonunu çağırır. Bu fonksiyon içerisinde istenilen işlevi
yerine getirmek üzere kullanıcı kodlama yapabilir.
3. Haberleşme arayüzü: GAS aracılığıyla geliştirilmekte olan simülatör
yazılımının kullandığı haberleşme arayüzü bağlantıya dayalı
(connectionoriented) bir protokol ise, bağlantı sağlandığında yapılacak işlemlerin
tanımlanması “OnConnect” fonksiyonu içerisinde yapılır. Bunun yanında
“OnError” fonksiyonu ile arayüzde oluşacak hatalar için gereken işlemlerin
yapılmasına olanak sağlanır. Ayrıca, “OnReceive” fonksiyonu ile arayüz
kapsamında gelen mesaj tipinde tanımlanmış mesajların alınması durumunda
yapılması gereken işlemler tanımlanabilir. “OnReceive” fonksiyonu ile mesaj
alanına ait KA kontrolleri varsa bunlar da otomatik olarak güncellenip,
kontrolun “OnUpdate” fonksiyonu çağrılır.</p>
        <p>GAS yazılımının çekirdeğini oluşturan temel sınıfların ilişkileri ve içerikleri
sadeleştirilmiş olarak Şekil 2 de gösterilmiştir.</p>
        <p>Discrete
-DeviceNo
-ModuleNo
-ThresholdLevel
-PinIOConfig</p>
        <p>MessageArinc429
-SSM
-SDI
-Label</p>
        <p>GUIControl
-Enabled
-Display Format
-ChangesValueTo **
+OnUpdate()</p>
        <p>attribute
-Type
-IntialValue</p>
        <p>TCP
-IsServer
-RxPort
-TxPort
-TxIPAddress</p>
        <p>UDP
-RxPort
-TxPort
-TxIpAddress</p>
        <p>CAN BUS
-Baudrate
-Port</p>
        <p>Interface
+OnConnect()
+OnError()
+Open*()
+Close*()</p>
        <p>Message
-Direction
-EnableLog
+OnReceive()
+Identification()
+CalculateLength()
+CalculateCheksum()
+Send*()
1
*
1
*</p>
        <p>Field
** -BitLength
-Endianness
-Encoding
-FieldType</p>
        <p>RS 232/422
-Port
-Baudrate</p>
        <p>Message1555
-Target RT
-Target SA
-Mode Code/Code Word
MessageAnalog
-ChannelNo</p>
        <p>Timer
-Interval
-Enabled
+OnTick()
Şekil 2 GAS Temel Tasarımı
2.2</p>
        <sec id="sec-2-2-1">
          <title>Kullanıcı Arayüzünün Tanımlanması</title>
          <p>
            GAS kullanıcı arayüzünün hazırlanması Microsoft firması tarafından geliştirilmiş olan
XAML (Extensible Application Markup Language[
            <xref ref-type="bibr" rid="ref11">11</xref>
            ]) standardına göre hazırlanan
KA tanım dosyası ile sağlanmaktadır. GAS, kullanıcı tarafından yazılan XAML
dosyasını işler, buna göre kullanıcı arayüzünü otomatik oluşturur. XAML içinde
tanımlı KA kontrolleri özniteliklere bağlanarak olay fonksiyonları içinde KA
kontrollerinin girdi/çıktı ve gerekiyorsa güncelleme işlemleri KTY aracılığıyla
tanımlanır.
2.3
          </p>
          <p>Haberleşme Arayüzlerinin Ortak Şablonda Tanımlanması
Test edilecek yazılım ve birimler çok farklı arayüz ve protokolleri içerebilmektedir.
Bu amaçla KTY kullanıcı arayüzü kullanarak haberleşme arayüz tanımının ortak bir
şablon içerisinde tanımlanması, arayüze özel bilgilerin de bu ekranları kullanarak
ayarlanması sağlanmıştır. Desteklenen protokol ve haberleşme/donanım arayüzleri
şunlardır: RS-232/422, TCP IP, UDP IP, MIL-STD-1553B, ARINC-429, CAN Bus,
Analog Giriş/Çıkış Sinyalleri, Ayrık Hat (Sayısal) Giriş/Çıkış Sinyalleri.</p>
          <p>Kullanıcı, ihtiyacı olan haberleşme/protokol/sinyal arayüzünü ilgili arayüz
ayarlarını da girerek tanımlar. Daha sonra arayüz içindeki gelen ve giden mesajları
arayüz tanımının altına ekler. Mesaj ayarları girildikten sonra her mesaj için ilgili
mesajı oluşturan mesaj alanlarını tanımlar. Tanımlanan alanları özniteliklere bağlar.
Böylece gönderilecek mesaj alanına bağlı özniteliklerin değiştirilmesi sonrasında
“MesajYolla” fonksiyonunun çağrılmasıyla özniteliklere bağlı alanlar güncellenerek
gönderilir. Benzer şekilde dış arayüzlerden gelen mesajları oluşturan alanlar da bağlı
bulundukları özniteliklerin değerlerini günceller.</p>
          <p>Haberleşme arayüzü/protokolü/sinyali ne olursa olsun kullanıcı her arayüz için
ortak olan, “MesajYolla(SendMessage)” fonksiyonunu ve “MesajAlındı(OnReceive)”
fonksiyonunu standart olarak kullanır. Dolayısıyla, haberleşme arayüzlerinin protokol
seviyesindeki yazımının tekrarı engellenmiş ve kullanıcının yapacağı işlem arayüz
tanımı ve ilişkilerin kurulması şekline indirgenmiş olur.
2.4</p>
          <p>“Business Logic” Tanımlanması
GAS yazılımı ile oluşturulan simülatörlerin genel kullanımında, simülatörden sadece
ekran bilgileri ile mesajlaşma çoğu zaman yetersiz kalmaktadır. Bu durum karşısında
kullanıcının simülatörde gerçekleşen olaylarda değerlendirme, karar verme ve işlem
yapması gerekir. Bu kısımlar için kullanıcının C# dili ile kodlama yapabilmesi için
altyapı sağlanmıştır.
2.5</p>
          <p>Kullanıcıya Ait Bileşen Sınıf ve Fonksiyonların Eklenmesi
Daha önce yazılmış olan bileşen (*.dll), C# sınıfı ve fonksiyonları da istenirse
simülatör yazılımına eklenip çağrılabilmektedir. Böylece hazır bileşenlerin tekrar
kullanımı da sağlanmış olmaktadır. Bu amaçla KTY arayüzünde bileşen, sınıf ve
fonksiyon ekleme arayüzü sağlanmıştır.
2.6</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>SOAP,ASN.1 CORBA Desteği</title>
          <p>GAS yazılımı donanım arayüzleri, haberleşme protokollerinin yanı sıra objelere ait
verilerin belirli bir veri yapısı standardı ile ağ içerisinden aktarımını sağlayan SOAP,
CORBA, ASN.1 gibi standartları desteklemektedir.</p>
          <p>GAS ile kullanılabilen SOAP örneği Şekil 3’de, ASN.1 örneği Şekil 4’te, CORBA
örneği Şekil 5’te gösterilmektedir.</p>
          <p>Şekil 3 SOAP Örnek Kulanımı
Şekil 5 Örnek CORBA Kullanımı
3</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>Kullanıcı Değerlendirmesi</title>
        <p>GAS yazılımı, sunduğu modüler tasarımı ile kullanıcıya ihtiyacı olan simülatör
yazılımlarını daha kısa sürede hazırlama imkanı verir ve işgücünden kazanç sağlar.
GAS yazılımı, önceden hazırlanan derlenmiş bileşenleri (*.dll) kullanabilme ve
derlenmeye dahil olacak C# sınıflarının gerekirse sahada dahi güncellenebilmesine
izin verme yeteneği ile, benzer görevlere sahip simülatör yazılımlarının çoğaltılmasını
kolaylaştırır.</p>
        <p>Test edilen yazılım ile gerçekleşen haberleşme sırasında alınan ve gönderilen
mesajlara test amaçlı kullanılan yapay hatalar (error injection) eklenebilir. GAS
yazılımı mesajlara, sağlama toplamı (checksum) hatası, artık veri (redundant bytes)
hatası, kayıp veri (missing bytes) hatası ve mesaj engelleme (block message) hatası
ekleyebilmektedir. Bu özellik test senaryosunda çeşitlilik oluşturulabilmesine imkân
sağlar.</p>
        <p>Kullanıcı arayüzü tasarımı sırasında, her bir kullanıcı arayüz kontrolü manuel
olarak yaratılması gereken bir özniteliğe bağlanmalıdır. Her ne kadar GAS yazılımı
ile bir simülatör yazılımının geliştirilmesi, manuel simülatör yazılımı geliştirmeye
göre daha hızlı olsa da, her bir kullanıcı arayüz kontrolü için manuel olarak öznitelik
yaratılması simülatör yazılımı geliştirme süresini uzatan en büyük faktördür. GAS
yazılımına eklenecek bir yetenek ile simülatör geliştirme işçilik süresinin daha da
düşürülmesi sağlanabilir.
4</p>
      </sec>
      <sec id="sec-2-4">
        <title>Sonuç</title>
        <p>Bu makalede yazılım testlerinde kullanılan arayüz simülatörlerini esnek bir altyapı
sunarak, kullanıcı ve haberleşme arayüzlerini mümkün olduğunca konfigürasyon
dosyaları ile tanımlamaya imkan veren Genel Amaçlı Simülatör yazılımın tanıtımı
yapılmıştır. Geliştirilen GAS yazılımı çeşitli projelerde kullanılmış ve yazılımın
haberleşme arayüz testlerinde kullanımak üzere ihtiyaç duyulan simülatörlerin
geliştirme süresini önemli ölçüde kısalttığı gözlemlenmiştir. Test yazılımı
geliştiricisinin, kullanması gereken arayüz ve protokol detaylarına boğulmadan genel
bir şablonu takip etmesini sağlayarak gereken simülatörün geliştirilmesi sürecini
kolaylaştırmıştır. Gelişen teknolojiye uygun olarak geliştirilen yeni donanıma göre
altyapının güncellenmesi ile kullanım alanının genişletilebileceği
değerlendirilmektedir.
5</p>
      </sec>
      <sec id="sec-2-5">
        <title>Kaynakça</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Vinton</surname>
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Cerf; Robert E. Kahn</surname>
          </string-name>
          (May
          <year>1974</year>
          ).
          <article-title>"A Protocol for Packet Network Intercommunication"</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Postel</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <article-title>"User Datagram Protocol"</article-title>
          ,
          <source>RFC 768</source>
          ,
          <year>August 1980</year>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>ARINC</given-names>
            <surname>Specification</surname>
          </string-name>
          429P1-
          <volume>15</volume>
          ,
          <year>September 1</year>
          ,
          <fpage>1995</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. BOSCH.
          <source>CAN Specification. Version 2.0</source>
          .
          <year>1991</year>
          ,
          <string-name>
            <given-names>Robert</given-names>
            <surname>Bosch</surname>
          </string-name>
          <string-name>
            <surname>GmbH</surname>
          </string-name>
          ,
          <source>Postfach</source>
          <volume>30</volume>
          02 40,
          <string-name>
            <given-names>D</given-names>
            <surname>-</surname>
          </string-name>
          70442 Stuttgart
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. EIA standard RS-232-C:
          <article-title>Interface between Data Terminal Equipment and Data Communication Equipment Employing Serial Binary Data Interchange</article-title>
          . Washington: Electronic Industries Association. Engineering Dept.
          <year>1969</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. TIA/EIA STANDARD,
          <article-title>Electrical Characteristics of Balanced Voltage Digital Interface Circuits</article-title>
          , TIA/EIA-422-B, May 1994
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. 1553:US Department Of Defense,
          <year>1978</year>
          ,
          <article-title>MIL-STD-1553B Aircraft Internal Time Division Command/Response Multiplex Data Bus</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>8. https://www.w3.org/TR/soap/</mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>9. http://www.itu.int/itu-t/recommendations/rec.aspx?rec=x.680</mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Object Management Group,
          <article-title>The Common Object Request Broker: Architecture and Specification (Draft)</article-title>
          .
          <source>Revision 1.1</source>
          , 1991
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>11. https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/xaml-overview</mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>12. https://github.com/thinkpixellab/kaxaml</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>