<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://aviyonikyazilim.com/blog</id>
    <title>Aviyonik Yazılım Blog</title>
    <updated>2026-07-03T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://aviyonikyazilim.com/blog"/>
    <subtitle>Aviyonik yazılım, test ve sertifikasyon üzerine yazılar</subtitle>
    <icon>https://aviyonikyazilim.com/img/favicon.svg</icon>
    <entry>
        <title type="html"><![CDATA[Gerçek Zamanlı Sistemler: Hız Değil, Garanti]]></title>
        <id>https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler</id>
        <link href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler"/>
        <updated>2026-07-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Akşam dizi izlerken görüntü yarım saniye donar, sonra kendine gelir. Sinir olursunuz, geçer. Aynı yarım saniye, bir kaza anında hava yastığını ateşleyecek sinyalin gecikmesi olduğunda ise ortada sinir değil, bir trajedi vardır.]]></summary>
        <content type="html"><![CDATA[<p>Akşam dizi izlerken görüntü yarım saniye donar, sonra kendine gelir. Sinir olursunuz, geçer. Aynı yarım saniye, bir kaza anında hava yastığını ateşleyecek sinyalin gecikmesi olduğunda ise ortada sinir değil, bir trajedi vardır.</p>
<p>İki olayda da sistem geç kaldı; ama birinde bedeli bir homurtu, diğerinde bir hayat. Gerçek zamanlı sistemler (real-time systems) kavramı tam da bu farkın üzerine kuruludur. İşin teknik tanımı da bunu söyler: gerçek zamanlılık, bir sistemin <strong>her bağımsız işlevi için tanımlanmış zaman sınırına uyma kabiliyetidir.</strong> Bir fonksiyonu doğru yerine getirmek kadar, onu istenen zaman çerçevesinde yerine getirmek de gerekir; gerçek zamanlılık bu ikincisini dert edinir. Geç gelen doğru yanıt çoğu zaman yanlış yanıttır.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gerçek-zamanlı-hızlı-demek-değil">Gerçek Zamanlı, Hızlı Demek Değil<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#ger%C3%A7ek-zamanl%C4%B1-h%C4%B1zl%C4%B1-demek-de%C4%9Fil" class="hash-link" aria-label="Gerçek Zamanlı, Hızlı Demek Değil doğrudan bağlantı" title="Gerçek Zamanlı, Hızlı Demek Değil doğrudan bağlantı" translate="no">​</a></h2>
<p>Önce en sık yapılan hatayı dağıtalım: gerçek zamanlı sistem; hızlı, çok hızlı, inanılmaz hızlı sistem demek <strong>değildir.</strong> Saniyede milyarlarca işlem yapan bir sunucu gerçek zamanlı olmayabilir; saniyede yüz işlem yapan ufak bir mikrodenetleyici kusursuz biçimde gerçek zamanlı olabilir.</p>
<p>Fark hızda değil, <strong>determinizmde</strong> (öngörülebilirlik). Bir durum ve giriş kümesine karşı sistemin doğru yanıtı doğru zaman çerçevesi içinde üretmesi ne kadar öngörülebilirse, sistem o kadar deterministiktir. Buradaki anahtar, ortalama değil <strong>en kötü durumdur:</strong> bir işlem çoğu zaman 1 ms'de bitip nadiren 100 ms'ye çıkıyorsa, ortalaması ne kadar iyi olursa olsun o sistem güvenilmezdir. Çünkü sizi vuran şey ortalama değil, o ender görülen en kötü andır.</p>
<p>Üç kavram işin sözlüğünü oluşturur:</p>
<ul>
<li class=""><strong>Zaman sınırı</strong> (<em>deadline</em>): İşin tamamlanmış olması gereken an.</li>
<li class=""><strong>Gecikme</strong> (<em>latency</em>): Bir olay ile sistemin ona verdiği yanıt arasındaki süre.</li>
<li class=""><strong>Seğirme</strong> (<em>jitter</em>): Bu gecikmenin ölçümden ölçüme ne kadar oynadığı. Her döngüde tam 10 ms'de yanıt veren bir sistem iyidir; bazen 8 bazen 14 ms diyen sistem kötüdür. Kontrol döngülerinde seğirme çoğu zaman ham hızdan daha kıymetlidir.</li>
</ul>
<p>Bir sistem bu öngörülebilirliği ne kadar çok talep ediyorsa, aşağıdaki sınıflandırmada o kadar katı uca düşer.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sınıflar-mutlak-katı-esnek-gerçek-zamanlı-olmayan">Sınıflar: Mutlak, Katı, Esnek, Gerçek Zamanlı Olmayan<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#s%C4%B1n%C4%B1flar-mutlak-kat%C4%B1-esnek-ger%C3%A7ek-zamanl%C4%B1-olmayan" class="hash-link" aria-label="Sınıflar: Mutlak, Katı, Esnek, Gerçek Zamanlı Olmayan doğrudan bağlantı" title="Sınıflar: Mutlak, Katı, Esnek, Gerçek Zamanlı Olmayan doğrudan bağlantı" translate="no">​</a></h2>
<p>Sınıfları birbirinden ayıran soru tektir: bir yanıt tanımlı zamandan <strong>sonra</strong> gelirse ne olur? Cevap, hem sistemin gerçek zamanlılık sınıfını hem de ondan beklenen determinizm seviyesini belirler.</p>
<!-- -->
<p>Soldan sağa zaman sınırının sertliği azalır; ters yönde, sağdan sola talep edilen <strong>determinizm seviyesi</strong> artar. En yüksek öngörülebilirlik en solda, mutlak uçta gerekir.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mutlak-hard-gerçek-zamanlı">Mutlak (Hard) Gerçek Zamanlı<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#mutlak-hard-ger%C3%A7ek-zamanl%C4%B1" class="hash-link" aria-label="Mutlak (Hard) Gerçek Zamanlı doğrudan bağlantı" title="Mutlak (Hard) Gerçek Zamanlı doğrudan bağlantı" translate="no">​</a></h3>
<p>En tavizsiz uç. Yanıtların hep tanımlı zamandan önce gelmesi gerekir; herhangi bir yanıtın geç gelmesi kabul edilemez ve bütün sistemi başarısız kılar. Burada "geç gelen doğru yanıt" yalnızca yararsız değil, tehlikelidir. En yüksek determinizm bu uçta talep edilir.</p>
<p>Tipik örnekler: otomotiv güvenlik sistemleri (ABS, hava yastığı, ESP), yaşam destek amaçlı tıbbi cihazlar (kalp pili, solunum destek sistemleri) ve insansız hava aracı (İHA) otopilotu. Hava yastığı milisaniyeler içinde açılmazsa hiç açılmamış sayılır.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="katı-firm-gerçek-zamanlı">Katı (Firm) Gerçek Zamanlı<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#kat%C4%B1-firm-ger%C3%A7ek-zamanl%C4%B1" class="hash-link" aria-label="Katı (Firm) Gerçek Zamanlı doğrudan bağlantı" title="Katı (Firm) Gerçek Zamanlı doğrudan bağlantı" translate="no">​</a></h3>
<p>Bir adım gevşemiştir. Yanıt yalnızca nadiren tanımlı zamandan sonra gelebilir. Geç gelen yanıt artık faydasızdır, atılır; ama bu sistemi yıkmaz, etkisi hizmet kalitesinin düşmesidir. Mutlak uçtan farkı, gecikmiş yanıtın bedelinin sıfır olması, negatif olmamasıdır.</p>
<p>Tipik örnekler: insansız kara aracı otopilotu, insansız seri üretim tezgâhları ve robotik otomasyon. Aynı otopilotun havada mutlak, karada katı olması anlamlıdır: karadaki araç durdurulabilir, geç gelen bir komutun bedeli genellikle ölümcül değildir.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="esnek-soft-gerçek-zamanlı">Esnek (Soft) Gerçek Zamanlı<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#esnek-soft-ger%C3%A7ek-zamanl%C4%B1" class="hash-link" aria-label="Esnek (Soft) Gerçek Zamanlı doğrudan bağlantı" title="Esnek (Soft) Gerçek Zamanlı doğrudan bağlantı" translate="no">​</a></h3>
<p>Burada zaman sınırı keskin bir uçurum değil, yumuşak bir yokuştur. Yanıtların gecikmesi daha sık görülür; geç gelen yanıt hâlâ işe yarar, ama tanımlı zamandan uzaklaştıkça faydası azalır. Etkisi yine hizmet kalitesinin düşmesidir.</p>
<p>Tipik örnekler: sesli/görüntülü bilgi ve eğlence akış sistemleri (TV, radyo, video oyunları), iletişim sistemleri (telefon, telekonferans, görüntülü görüşme) ve konfora dönük ev otomasyonu. Bir görüntülü görüşmede karenin biraz geç gelmesi rahatsız edicidir ama yıkıcı değildir.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="gerçek-zamanlı-olmayan-non-real-time">Gerçek Zamanlı Olmayan (Non-Real-Time)<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#ger%C3%A7ek-zamanl%C4%B1-olmayan-non-real-time" class="hash-link" aria-label="Gerçek Zamanlı Olmayan (Non-Real-Time) doğrudan bağlantı" title="Gerçek Zamanlı Olmayan (Non-Real-Time) doğrudan bağlantı" translate="no">​</a></h3>
<p>En gevşek uç. Yanıtlar için tanımlı bir zaman yoktur; yanıt ne zaman gelirse gelsin faydalıdır ve sistemin hizmet kalitesi yanıt sürelerinden etkilenmez.</p>
<p>Tipik örnekler: ödeme sistemleri (POS cihazları), endüstriyel otomasyon izleme sistemleri ve yığın (<em>batch</em>) işlem sistemleri (rapor/veri/kayıt üretimi, çevrim dışı sinyal analizi). Bunların mühendislik anlamında tanımlı bir zaman sınırı yoktur.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="hepsi-bir-arada">Hepsi Bir Arada<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#hepsi-bir-arada" class="hash-link" aria-label="Hepsi Bir Arada doğrudan bağlantı" title="Hepsi Bir Arada doğrudan bağlantı" translate="no">​</a></h3>






























<table><thead><tr><th>Sınıf</th><th>Geç yanıt gelirse</th><th>Tipik örnek</th></tr></thead><tbody><tr><td><strong>Mutlak (Hard)</strong></td><td>Kabul edilemez; bütün sistem başarısız olur</td><td>ABS, hava yastığı, ESP; kalp pili, solunum desteği; İHA otopilotu</td></tr><tr><td><strong>Katı (Firm)</strong></td><td>Yanıt faydasız olur (atılır); hizmet kalitesi düşer</td><td>İnsansız kara aracı otopilotu; robotik üretim ve otomasyon</td></tr><tr><td><strong>Esnek (Soft)</strong></td><td>Yanıtın faydası geciktikçe azalır; hizmet kalitesi düşer</td><td>TV/radyo/video akışı, oyunlar; telefon, telekonferans; ev otomasyonu</td></tr><tr><td><strong>Gerçek Zamanlı Olmayan</strong></td><td>Önemsiz; zaman sınırı tanımlı değil</td><td>POS/ödeme; endüstriyel izleme; yığın raporlama, sinyal analizi</td></tr></tbody></table>
<p>Önemli bir nokta: bu sınıflar koca bir cihazı bütün olarak değil, sistemin her <strong>bağımsız işlevini</strong> ayrı ayrı etiketler. Aynı İHA'nın içinde uçuş kontrolü mutlak (hard), telemetri akışı esnek (soft), uçuş sonrası kayıt indirme ise gerçek zamanlı olmayan bir işlev olabilir. Doğru soru "bu sistem hangi sınıf?" değil, "bu <em>işlevin</em> zaman sınırı kaçarsa ne olur?"dur.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="garantiyi-nasıl-veriyoruz">Garantiyi Nasıl Veriyoruz?<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#garantiyi-nas%C4%B1l-veriyoruz" class="hash-link" aria-label="Garantiyi Nasıl Veriyoruz? doğrudan bağlantı" title="Garantiyi Nasıl Veriyoruz? doğrudan bağlantı" translate="no">​</a></h2>
<p>Madem hız değil, bir işlevi gerçek zamanlı yapan ne? Tek kelimeyle <strong>garanti</strong>: en kötü senaryoda bile zaman sınırına uyacağını önceden kanıtlayabilmek. Bu birkaç araca dayanır.</p>
<p><strong>WCET</strong> (en kötü durum yürütme süresi, <em>worst-case execution time</em>). Mühendis ortalamayla değil bu en kötü değerle çalışır; çünkü garanti ancak en kötü duruma göre verilebilir. Bu yüzden önbellek (<em>cache</em>) ve dallanma tahmini gibi "ortalamayı iyileştiren ama en kötü durumu öngörülemez kılan" mekanizmalar gerçek zamanlı tasarımda göze batar. Performans burada yalnızca fonksiyonel olmayan bir gereksinim (<em>non-functional requirement</em>) değil, doğruluğun ayrılmaz bir parçasıdır.</p>
<p><strong>RTOS.</strong> Masaüstü Linux ya da Windows verimi ve adilliği önceler; bir görevin tam olarak ne zaman çalışacağını garanti etmez. Bir gerçek zamanlı işletim sistemi (real-time operating system, RTOS) — FreeRTOS, VxWorks, QNX, Zephyr ya da <code>PREEMPT_RT</code> özellikli Linux (uzun yıllar ayrı bir yama setiydi; Linux 6.12'den beri ana akım çekirdeğin bir parçası) — ise öngörülebilirliği öne koyar: en yüksek öncelikli görevin sınırlı ve bilinen bir süre içinde işlemciye kavuşacağını taahhüt eder. RTOS'un emniyet-kritik aviyonik projelerdeki yeri için kitaptaki <a href="https://aviyonikyazilim.com/kitap/ozel-konular/gercek-zamanli-isletim-sistemleri" target="_blank" rel="noopener noreferrer" class="">Gerçek Zamanlı İşletim Sistemleri</a> bölümüne, sertifikasyon gözüyle dikkat edilecek noktalar için de <a href="https://aviyonikyazilim.com/kitap/ekler/ek-b-rtos-endise-alanlari" target="_blank" rel="noopener noreferrer" class="">Ek B'deki endişe alanları listesine</a> bakabilirsiniz.</p>
<p><strong>Zamanlama.</strong> Görevlere öncelik verilir; öncelikli bir görev hazır olunca, çalışan düşük öncelikli görev anında durdurulur (<em>preemption</em>). Hangi görevin ne zaman çalışacağına karar veren kurala zamanlama algoritması (<em>scheduling algorithm</em>) denir. İki klasiği: RMS (<em>Rate-Monotonic Scheduling</em>), daha sık tekrarlanan görevi daha öncelikli sayar; EDF (<em>Earliest Deadline First</em>), zaman sınırı en yakın olanı önce çalıştırır. Bu algoritmaların matematiksel "zamanlanabilirlik" ispatları başlı başına bir konudur.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="marstaki-hata-öncelik-tersinmesi">Mars'taki Hata: Öncelik Tersinmesi<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#marstaki-hata-%C3%B6ncelik-tersinmesi" class="hash-link" aria-label="Mars'taki Hata: Öncelik Tersinmesi doğrudan bağlantı" title="Mars'taki Hata: Öncelik Tersinmesi doğrudan bağlantı" translate="no">​</a></h3>
<p>Bu mekanizmaların ne kadar ince olduğunu en iyi anlatan hikâye, NASA'nın 1997'de Mars'a indirdiği Pathfinder aracından gelir. Araç yüzeye indikten birkaç gün sonra, meteoroloji verisi toplamaya başlamasının hemen ardından bilgisayarı tekrar tekrar yeniden başlar; milyonlarca kilometre öteden ayıklanması gereken bir kâbus.</p>
<p>Suçlu, gerçek zamanlı sistemlerin meşhur tuzağı <strong>öncelik tersinmesidir</strong> (<em>priority inversion</em>). Yüksek öncelikli bir görev, düşük öncelikli bir görevin tuttuğu paylaşılan bir kaynağı bekler. Tam o sırada araya giren orta öncelikli ve uzun süren bir görev, düşük öncelikli görevin çalışmasını engeller. Sonuçta yüksek öncelikli görev, kendisinden önemsiz bir göreve dolaylı yoldan takılıp kalır; öncelikler sanki tersine dönmüştür. Çözüm öncelik miras almadır (<em>priority inheritance</em>): paylaşılan kaynağı tutan düşük öncelikli görev, onu bırakana dek geçici olarak yüksek önceliğe terfi ettirilir. Pathfinder ekibi bu özelliği uzaktan etkinleştirip aracı kurtardı.</p>
<p>Pathfinder'ın hatırlattığı şey şu: gerçek zamanlı sistemlerde hatalar çoğu zaman bileşenlerin içinde değil, <a href="https://aviyonikyazilim.com/kitap/do178c-ile-gelistirme/yazilim-tasarimi" target="_blank" rel="noopener noreferrer" class="">paylaştıkları kaynaklarda ve aralarındaki etkileşimde</a> saklanır; bağlaşımı (coupling) düşük tutma öğüdünün gerçek zamanlı dünyadaki karşılığı budur.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tek-eksen-değil">Tek Eksen Değil<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#tek-eksen-de%C4%9Fil" class="hash-link" aria-label="Tek Eksen Değil doğrudan bağlantı" title="Tek Eksen Değil doğrudan bağlantı" translate="no">​</a></h2>
<p>Mutlak/katı/esnek ayrımı sistemleri tek bir eksende dizer: zaman sınırı kaçarsa ne olur? Oysa gerçek zamanlı sistemler başka eksenlerde de ayrışır. Görevler saatin yönettiği önceden belirlenmiş bir çizelgeye göre mi tetikleniyor (zaman tetiklemeli, <em>time-triggered</em>), yoksa dış olaylar geldikçe mi (olay tetiklemeli, <em>event-triggered</em>)? Emniyet-kritik tasarım, öngörülebilirlik uğruna çoğu zaman ilkini seçer. Garanti tek bir bilgisayarda mı kalıyor, yoksa ağ üzerinden mi taşınıyor? Sıradan Ethernet "elinden geldiğince" (<em>best-effort</em>) çalıştığından, yani her paketi taşıdığı hâlde zamanında teslimi garanti etmediğinden, otomotivde CAN ve FlexRay, aviyonikte <a class="" href="https://aviyonikyazilim.com/blog/afdx-nedir">AFDX/ARINC 664</a>, yeni sistemlerde TSN gibi gerçek zamanlı ağlar bu yükü üstlenir. Bir de modern eğilim: farklı kritiklikteki işlevleri aynı donanımda koşturmak (<em>mixed-criticality</em>). Aviyonikte bunun çözümü ARINC 653'ün getirdiği <a href="https://aviyonikyazilim.com/kitap/ozel-konular/yazilim-bolumlemesi" target="_blank" rel="noopener noreferrer" class="">zaman ve uzay bölümlemesidir</a>; önemsiz bir işlevdeki hata, hayati komşusuna sıçrayamasın diye. Bu, emniyet-kritik yazılım disiplininin gerçek zamanlılıkla buluştuğu noktadır.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sonuç">Sonuç<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#sonu%C3%A7" class="hash-link" aria-label="Sonuç doğrudan bağlantı" title="Sonuç doğrudan bağlantı" translate="no">​</a></h2>
<p>İyi mühendis bir işlevle karşılaştığında "bunu ne kadar hızlı yaparım?" diye değil, önce şunu sorar: bunun tanımlı bir zaman sınırı var mı, kaçırırsam ne olur? Felaket mi (mutlak/hard), faydasız bir yanıt mı (katı/firm), geciktikçe azalan bir fayda mı (esnek/soft), yoksa hiçbir şey mi (gerçek zamanlı olmayan)? Cevap; işletim sistemini, zamanlamayı, ağı ve gereken titizliği belirler.</p>
<p>Bir uyarı da yerinde olur: günlük dilde "real-time analytics", "canlı pano", "anlık bildirim" diye geçen şeylerin neredeyse tamamı, bu mühendislik anlamıyla en fazla esnek (soft) düzeydedir; birkaç saniyelik gecikme kimseyi incitmez. Gerçek bir mutlak (hard) sistemde ise milisaniyeler sayılır ve zaman sınırını kaçırmanın bedeli ölçülebilir bir felakettir. Sonuçta gerçek zamanlılığı belirleyen şey, sistemin iyi günlerde ne kadar hızlı olduğu değil, en kötü gününde bile sözünü tutacağına dair verebildiği garantidir.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kaynaklar">Kaynaklar<a href="https://aviyonikyazilim.com/blog/gercek-zamanli-sistemler#kaynaklar" class="hash-link" aria-label="Kaynaklar doğrudan bağlantı" title="Kaynaklar doğrudan bağlantı" translate="no">​</a></h2>
<ul>
<li class="">C. L. Liu, James W. Layland — "Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment," <em>Journal of the ACM</em>, vol. 20, no. 1, 1973. DOI: 10.1145/321738.321743.</li>
<li class="">Giorgio C. Buttazzo — <em>Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications</em> (Springer).</li>
<li class="">Hermann Kopetz — <em>Real-Time Systems: Design Principles for Distributed Embedded Applications</em> (Springer).</li>
<li class="">Mike Jones — <a href="https://www.cs.cornell.edu/courses/cs614/1999sp/papers/pathfinder.html" target="_blank" rel="noopener noreferrer" class="">"What Really Happened on Mars?"</a> (Mars Pathfinder öncelik tersinmesi olayının, Wind River CTO'su David Wilner'ın bir konuşmasına dayanan anlatımı).</li>
<li class="">ARINC 653 — <em>Avionics Application Software Standard Interface</em> (zaman ve uzay bölümlemesi); genel bakış: <a href="https://en.wikipedia.org/wiki/ARINC_653" target="_blank" rel="noopener noreferrer" class="">ARINC 653 (Wikipedia)</a>.</li>
<li class="">The Linux Foundation — <a href="https://wiki.linuxfoundation.org/realtime/start" target="_blank" rel="noopener noreferrer" class="">Real-Time Linux (<code>PREEMPT_RT</code>)</a>.</li>
</ul>]]></content>
        <author>
            <name>M. Serdar Karaman</name>
            <uri>https://github.com/Mavrikant</uri>
        </author>
        <category label="gerçek zamanlı sistemler" term="gerçek zamanlı sistemler"/>
        <category label="RTOS" term="RTOS"/>
        <category label="aviyonik" term="aviyonik"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Yapısal kapsam analizi (structural coverage analysis)]]></title>
        <id>https://aviyonikyazilim.com/blog/yapisal-kapsam-analizi</id>
        <link href="https://aviyonikyazilim.com/blog/yapisal-kapsam-analizi"/>
        <updated>2024-03-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Yapısal kapsam analizi (structural coverage analysis) ya da bilindik kisa adiyla SCA'yi incelemeden once yapisal programlamanin ne oldugunu tekrar hatirlayalim.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://aviyonikyazilim.com/assets/images/gorsel-1-08882d2c734c71d26f132b59eab051b4.jpg" width="1024" height="1024" class="img_ev3q"></p>
<p>Yapısal kapsam analizi (structural coverage analysis) ya da bilindik kisa adiyla <strong>SCA</strong>'yi incelemeden once yapisal programlamanin ne oldugunu tekrar hatirlayalim.&nbsp;&nbsp;</p>
<p>Bu yazıyı okurken, <a href="https://aviyonikyazilim.com/kitap/do178c-ile-gelistirme/yazilim-dogrulama" target="_blank" rel="noopener noreferrer" class="">Yazılım Doğrulama</a> bölümündeki kapsam yaklaşımı ve <a href="https://aviyonikyazilim.com/kitap/ozel-konular/kapsanmayan-kodlar" target="_blank" rel="noopener noreferrer" class="">Kapsanmayan Kodlar</a> bölümündeki kod türleriyle birlikte düşünmek faydalıdır.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="yapısal-programlama-structured-programming-nedir">Yapısal Programlama (Structured Programming) nedir?<a href="https://aviyonikyazilim.com/blog/yapisal-kapsam-analizi#yap%C4%B1sal-programlama-structured-programming-nedir" class="hash-link" aria-label="Yapısal Programlama (Structured Programming) nedir? doğrudan bağlantı" title="Yapısal Programlama (Structured Programming) nedir? doğrudan bağlantı" translate="no">​</a></h2>
<p>Yapısal programlama, 1960'larda, bilgisayar biliminde programların daha anlaşılır, daha etkili ve hata yapma olasılığı daha düşük bir şekilde yazılabilmesi için geliştirilen bir programlama paradigmasıdır. Yapısal programlama, büyük ve karmaşık yazılım sistemlerinin geliştirilmesinde önemli bir dönüm noktası olmuştur. Bu yaklaşımın temelleri, Edsger W. Dijkstra'nın 1968'de yayınladığı "Go To Statement Considered Harmful" (Goto Deyimi Zararlıdır)[1] başlıklı makalesiyle atılmıştır. Dijkstra, bu makalesinde, program akışının kontrolünü sağlamak için "goto" deyiminin kullanımına karşı çıkarak daha düzenli ve modüler programlama tekniklerinin benimsenmesi gerektiğini savunmuştur.</p>
<p>Yapısal programlama, programları anlaşılır bir şekilde modüllere ayırma, tekrar kullanılabilir kod blokları(fonksiyonlar) oluşturma ve program akışını kontrol etmek için sıralı, seçim (if/else) ve yineleme (döngüler) yapılarını kullanma prensiplerine dayanır. Bu yaklaşım, programların daha kolay anlaşılır, test edilir ve bakımı yapılır hale gelmesine yardımcı olmuştur.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="yapısal-kapsama-analizi-structural-coverage-analysis-nedir">Yapısal kapsama analizi (structural coverage analysis) nedir?<a href="https://aviyonikyazilim.com/blog/yapisal-kapsam-analizi#yap%C4%B1sal-kapsama-analizi-structural-coverage-analysis-nedir" class="hash-link" aria-label="Yapısal kapsama analizi (structural coverage analysis) nedir? doğrudan bağlantı" title="Yapısal kapsama analizi (structural coverage analysis) nedir? doğrudan bağlantı" translate="no">​</a></h2>
<p>Yapısal kapsama analizi, özellikle havacılık ve uzay mühendisliğinde, bir yazılımın test sürecinde kullanılan bir tekniktir. Bu teknik, yazılımın test edilmesi sırasında kodun hangi bölümlerinin çalıştırıldığını ve hangi bölümlerinin çalıştırılmadığını belirlemek için kullanılır. Yapısal kapsam analizi, yazılımın farklı bölümlerinin yeterince test edilip edilmediğini kontrol etmek amacıyla kullanılan bir dizi metriği içerir. Bu analiz, yazılımın güvenilirliğini ve kalitesini artırmak için önemlidir.</p>
<p>Havacılık ve uzay endüstrisinde, yapısal kapsam analizi özellikle kritik öneme sahiptir çünkü bu alanlarda kullanılan sistemlerin yüksek güvenilirlik ve güvenlik standartlarına uygun olması gerekir. Bu nedenle, yazılımın her bir satırının, şartının veya karar noktasının test edilmesi gerekebilir.</p>
<p>Yapısal kapsam analizinin temel türleri şunlardır:</p>
<ol>
<li class=""><strong>Satır Kapsama (Statement Coverage):</strong> Yazılımın her bir satırının en az bir kez çalıştırılıp çalıştırılmadığını kontrol eder. Bu, en temel kapsam analizi türüdür.</li>
<li class=""><strong>Karar Kapsama (Decision Coverage):</strong> Yazılım içerisindeki her bir karar noktasının (if-else blokları gibi) tüm olası çıktılarının test edilip edilmediğini kontrol eder.</li>
<li class=""><strong>Kosul Kapsama (Condition Coverage):</strong> Karar noktalarındaki her bir kosulun tüm olası değerlerinin test edilip edilmediğini kontrol eder.</li>
<li class=""><strong>Kosul/Karar Kapsama (Condition/Decision Coverage):</strong> Hem karar kapsamını hem de kosul kapsamını bir araya getirerek, karar noktalarının ve içerdikleri kosuların tüm olası kombinasyonlarının test edilmesini sağlar.</li>
<li class=""><strong>Degistirilmis Kosul/Karar Kapsama (Modified Condition/Decision Coverage, MC/DC):</strong> MC/DC, belirli bir kararın sonucu üzerinde her bir koşulun bağımsız etkisini doğrulamayı amaçlar. Bu, hem her giriş ve çıkış noktasının en az bir kez çağrıldığından hem de programdaki bir karardaki her koşulun en az bir kez tüm olası sonuçları aldığından emin olmayı içerir. Daha da önemlisi, her bir koşulun, diğer tüm olası koşullar sabit tutulurken, karar sonucunu bağımsız olarak etkilediği gösterilir. n+1 test senaryosu gerektirir.</li>
<li class=""><strong>Coklu kosul kapsama:</strong> Olasi butun kosul kombinasyonlarinin test edildigini dogrular. Gerekli senaryo sayisi:&nbsp;2n</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="basit-bir-örnek">Basit bir örnek<a href="https://aviyonikyazilim.com/blog/yapisal-kapsam-analizi#basit-bir-%C3%B6rnek" class="hash-link" aria-label="Basit bir örnek doğrudan bağlantı" title="Basit bir örnek doğrudan bağlantı" translate="no">​</a></h2>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">motor_calisti </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> yakit_basinci</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> yedek_mod</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">ucusa_devam_et</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">else</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">guvenli_kapat</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Bu küçük örnekte:</p>
<ul>
<li class=""><strong>Satır kapsama</strong>, her iki dalın da en az bir kez çalıştırılmasını ister.</li>
<li class=""><strong>Karar kapsama</strong>, hem <code>true</code> hem <code>false</code> sonucunun görülmesini ister.</li>
<li class=""><strong>Koşul kapsama</strong>, <code>motor_calisti</code>, <code>yakit_basinci</code> ve <code>yedek_mod</code> koşullarının
değerlerini tek tek değiştirerek etkisini ölçer.</li>
<li class=""><strong>MC/DC</strong>, her koşulun karar sonucunu bağımsız biçimde etkilediğini gösteren en az
sayıda testi arar.</li>
</ul>
<p>Bu nedenle yapısal kapsam analizi, "kaç satır çalıştı" sorusundan daha fazlasını sorar;
mantığın gerçekten kontrol edildiğini kanıtlamaya yaklaşır.</p>



































<table><thead><tr><th>Kapsama türü</th><th>Kısa amaç</th><th>Ne zaman güçlüdür?</th></tr></thead><tbody><tr><td>Satır kapsama</td><td>Kodun çalışıp çalışmadığını görmek</td><td>Temel yürütme kontrolü gerektiğinde</td></tr><tr><td>Karar kapsama</td><td>Her karar dalını görmek</td><td><code>if/else</code> akışları kontrol edilirken</td></tr><tr><td>Koşul kapsama</td><td>Her koşulun değerlerini görmek</td><td>Karmaşık karar ifadeleri test edilirken</td></tr><tr><td>Koşul/karar kapsama</td><td>Koşullar ve kararların birleşik kontrolü</td><td>Orta düzey mantık doğrulamasında</td></tr><tr><td>MC/DC</td><td>Koşulların bağımsız etkisini göstermek</td><td>Emniyet-kritik sertifikasyon kanıtında</td></tr></tbody></table>
<p>Uzerinde calsitiginiz projenin DAL seviyesine gore DO178C Table A7'den saglamaniz gereken SCA tipini kontrol edebirlisiniz. DAL A seviyesi aviyonik yazilimlar icin her 3 tip kapasama analizi de bagimsiz ekip tarafindan yapilmasi gerekiyor.&nbsp;</p>
<p>Yapisal kapsama analizinin yazilim dogrulamasina sagladiklari:</p>
<ol>
<li class=""><strong>Tüm kodun en az bir kez çalıştırıldığını garanti eder:</strong> Yapısal kapsam, test sırasında kod tabanının her satırının çalıştırılmasını gerektirerek, kodun hiçbir bölümünün test edilmemiş bırakılmadığını sağlar. Bu, her kod satırının sistem operasyonunun güvenliğini etkileyebileceği güvenlik kritik sistemlerde hayati öneme sahiptir.</li>
<li class=""><strong>İstenmeyen işlevselliği ve test edilmemiş işlevselliği bulur:</strong>&nbsp;Kod tabanının kapsamlı bir şekilde çalıştırılmasıyla, testçiler başlangıçta amaçlanmayan veya yetersiz test nedeniyle önceden tanımlanamayan işlevselliği ortaya çıkarabilir. Bu, farklı operasyonel senaryolar altında sistem davranışı ile ilgili beklenmeyen riskleri azaltmaya yardımcı olur.</li>
<li class=""><strong>Ölü kodu veya gereksiz kodu tanımlar:</strong> Ölü kod, herhangi bir operasyonel senaryoda çalıştırılmayan kod segmentlerini ifade eder. Bu tür kodu tanımlamak önemlidir çünkü yazılımın verimliliğini düşürebilir, boyutunu gereksiz yere artırabilir ve tespit edilmemiş güvenlik açıklarına yol açabilir.</li>
<li class=""><strong>Devre dışı bırakılan kodun gerçekten devre dışı bırakıldığını doğrular:</strong> Bazen, çeşitli nedenlerle kod devre dışı bırakılır ancak kaldırılmaz. Yapısal kapsam, bu kodun mevcut yazılım yapılandırmasında çalıştırılamayacağını doğrulayarak, varlığının sistemin operasyonunu etkilemediğinden emin olmamıza yardımcı olur.</li>
<li class=""><strong>Test için minimal kombinasyon setini tanımlar (yani, exhaustive test gerektirmez):</strong> Yapısal kapsam, tüm kodu kapsayan ancak kaynak ve zaman kısıtlamaları nedeniyle tüm olası girdi kombinasyonlarının tüketici testinin pratik olmadığı karmaşık sistemlerde, yeterli ancak minimal bir test vakası seti belirlemeye yardımcı olur.</li>
<li class=""><strong>Yanlış mantığı belirler:</strong> Kodun her parçasının çalıştırılmasını sağlayarak, testçiler yazılımın çeşitli koşullar ve girdiler altında beklenen gibi davrandığını doğrulayabilir. Bu, yazılımın mantıksal doğruluğunu kontrol etmeyi içerir.</li>
<li class=""><strong>Test çabasının ne kadar tamamlandigi hakkinda ongoru saglar:</strong> Yapısal kapsam, yazılımın ne kadar kapsamlı test edildiğinin nicel bir ölçüsünü sağlar. Önemli bir metrik olmasına rağmen, <em>%100 yapısal kapsama ulaşmak hata olmadığını garanti etmez.</em> Ayrıca, yazılımın anormal veya beklenmedik koşullar altındaki davranışını tam olarak ele almaz, bu tipik olarak sağlamlık testi ile değerlendirilir.</li>
</ol>
<p>Havacılık ve uzay alanında, başarısızlığın maliyeti olağanüstü yüksek olduğunda, yazılım doğrulama ve onaylama sürecinin bir parçası olarak yapısal kapsamın kullanılması vazgeçilmezdir. Uçuş operasyonlarını kontrol eden veya destekleyen yazılımın güvenilir, güvenli olduğunu ve tüm beklenen koşullar altında amaçlandığı gibi performans gösterdiğinden emin olunur.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kaynakca">Kaynakca<a href="https://aviyonikyazilim.com/blog/yapisal-kapsam-analizi#kaynakca" class="hash-link" aria-label="Kaynakca doğrudan bağlantı" title="Kaynakca doğrudan bağlantı" translate="no">​</a></h2>
<blockquote>
<p>[1]&nbsp;&nbsp;<a href="https://en.wikipedia.org/wiki/Edsger_Dijkstra" target="_blank" rel="noopener noreferrer" class="">Edsger Dijkstra</a> (March 1968). <a href="https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf" target="_blank" rel="noopener noreferrer" class="">"Go To Statement Considered Harmful"</a> (PDF). Communications of the ACM. 11 (3): 147–148.&nbsp;</p>
</blockquote>
<blockquote>
<p>[2] <strong>A Practical Tutorial on Modified Condition/ Decision Coverage</strong>, <a href="https://shemesh.larc.nasa.gov/fm/papers/Hayhurst-2001-tm210876-MCDC.pdf" target="_blank" rel="noopener noreferrer" class="">https://shemesh.larc.nasa.gov/fm/papers/Hayhurst-2001-tm210876-MCDC.pdf</a>&nbsp;&nbsp;</p>
</blockquote>
<blockquote>
<p>[3] <strong>Comments on Modified Condition/Decision Coverage for Software Testing</strong>, <a href="https://doi.org/10.1109/aero.2001.931302" target="_blank" rel="noopener noreferrer" class="">https://doi.org/10.1109/aero.2001.931302</a>&nbsp;
[4] John Joseph Chilenski and Steven P. Miller, "<strong>Applicability of Modified Condition/Decision Coverage to Software Testing</strong>", Software Engineering Journal, September 1994. <a href="https://doi.org/10.1049/sej.1994.0025" target="_blank" rel="noopener noreferrer" class="">https://doi.org/10.1049/sej.1994.0025</a>&nbsp;</p>
</blockquote>
<blockquote>
<p>[5] <strong>A PRACTICAL APPROACH TO MODIFIED CONDITION/DECISION COVERAGE,</strong> <a href="https://ntrs.nasa.gov/api/citations/20040086014/downloads/20040086014.pdf" target="_blank" rel="noopener noreferrer" class="">https://ntrs.nasa.gov/api/citations/20040086014/downloads/20040086014.pdf</a></p>
</blockquote>]]></content>
        <author>
            <name>M. Serdar Karaman</name>
            <uri>https://github.com/Mavrikant</uri>
        </author>
        <category label="SCA" term="SCA"/>
        <category label="Yapısal kapsam analizi" term="Yapısal kapsam analizi"/>
        <category label="structural coverage analysis" term="structural coverage analysis"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SCA'da cover edilemeyen kodlar: Ölü, Gereksiz ve Devre Dışı Bırakılmış Kodlar]]></title>
        <id>https://aviyonikyazilim.com/blog/sca-cover-edilemeyen-kodlar</id>
        <link href="https://aviyonikyazilim.com/blog/sca-cover-edilemeyen-kodlar"/>
        <updated>2023-11-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA["yazılım geliştirmede 'ölü kod' konsepti" konusunu mizahi bir şekilde tasvir eden resim. Bu tasvir, bilgisayar kodlarından oluşan mezarlık sahnesi, farklı yazılarla süslenmiş mezar taşları ve hayaletimsi kod figürleri içermekte. Sahne aydınlık ve çizgi film tarzında tasarlanmış.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="&amp;quot;yazılım geliştirmede &amp;#39;ölü kod&amp;#39; konsepti&amp;quot; konusunu mizahi bir şekilde tasvir eden resim. Bu tasvir, bilgisayar kodlarından oluşan mezarlık sahnesi, farklı yazılarla süslenmiş mezar taşları ve hayaletimsi kod figürleri içermekte. Sahne aydınlık ve çizgi film tarzında tasarlanmış." src="https://aviyonikyazilim.com/assets/images/gorsel-1-cdec6ca048cbfa52b030f608bc7900dd.png" title="Olu kodlar mezarligi" width="1024" height="1024" class="img_ev3q"></p>
<p>Yapısal kapsama analizi(Structural Coverage Analysis - SCA) , yazılım test süreçlerinde hayati role sahip bir yöntemdir. Bu analiz, yazılımın kod kapsamını değerlendirerek hangi kod bölümlerinin testler sırasında çalıştırıldığını veya çalıştırılmadığını belirlemeye yardımcı olur. Ana hedef, yazılımın her bir satırının (statement), dalının (branch) ve koşulunun (condition) uygun şekilde test edilip edilmediğini kontrol etmektir.</p>
<p>Bu konu özellikle <a href="https://aviyonikyazilim.com/kitap/do178c-ile-gelistirme/yazilim-dogrulama" target="_blank" rel="noopener noreferrer" class="">Yazılım Doğrulama</a> ve <a href="https://aviyonikyazilim.com/kitap/ozel-konular/kapsanmayan-kodlar" target="_blank" rel="noopener noreferrer" class="">Kapsanmayan Kodlar</a> bölümleriyle birlikte okunursa, hangi kodun neden kapsanmadığı daha net görünür.</p>
<!-- -->
<p>Kapsama verisi toplama sürecinde, yapısal kapsama analiz aracı önemli bir rol oynar. İlk olarak, bu araçlar kaynak koda enstrümantasyon adı verilen ek kod parçalarını ekler. Bu ekleme, gereksinim tabanlı testler sırasında hangi kod parçalarının kullanıldığını takip etmek için yapılır. Test sırasında toplanan kapsama verisi, daha sonra yapısal kapsama analiz araçları tarafından incelenir. Bu inceleme sonucunda, testlerde kullanılmayan yani 'kapsanmamış' kod satırları tespit edilir ve bir kapsama analizi raporu oluşturulur.</p>
<p>Bu analiz sonucunda, bazı kodların kapsanmadığı görülebilir. Aşağıdaki yazılimda, bu tür kodlara ait bazı örnekler sunulmuştur. Bu kodlar üç kategoriye ayrılabilir.</p>

























<table><thead><tr><th>Kod türü</th><th>Ne demektir?</th><th>SCA açısından ne anlatır?</th></tr></thead><tbody><tr><td>Ölü kod</td><td>Hiçbir koşulda çalışmayan kod</td><td>Temizlenmesi veya gerekçelendirilmesi gerekir</td></tr><tr><td>Gereksiz kod</td><td>Sonuç üzerinde etkisi olmayan çalışan kod</td><td>Basitleştirme ve bakım açısından risk oluşturabilir</td></tr><tr><td>Devre dışı bırakılmış kod</td><td>Bilinçli olarak aktif olmayan kod</td><td>Tasarım niyeti ve doğrulama kanıtı ile yönetilmelidir</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ölü-kod-dead-code">Ölü Kod (Dead Code)<a href="https://aviyonikyazilim.com/blog/sca-cover-edilemeyen-kodlar#%C3%B6l%C3%BC-kod-dead-code" class="hash-link" aria-label="Ölü Kod (Dead Code) doğrudan bağlantı" title="Ölü Kod (Dead Code) doğrudan bağlantı" translate="no">​</a></h2>
<p>Ölü kod, yazılımın normal akışı içinde hiçbir zaman çalıştırılmayan kod bölümleridir. Genellikle yazılımın eski sürümlerinden kalan, artık kullanılmayan veya yanlış tanimlanmis koşullu blokları içeren kodlardır. Yapısal kapsama analizinde, ölü kod testler sırasında hiç çalıştırılmaz, çünkü bu kodun çalışması için gerekli koşullar asla sağlanamaz. Yapısal kapsama analiziyle bu kodlar kolayca tespit edilir ve kaldırılır. Ayrıca, çeşitli derleyiciler, statik kod analiz araçları [3] ve IDE'ler bu tür kodlama hatalarını belirleyerek uyarıda bulunur.</p>
<p>GNU C Compiler (GCC) için, aşağıda belirtilen derleyici parametrelerini projenize ekleyerek geliştirme aşamasında ölü kodları tespit edebilirsiniz[2]:</p>
<p>&nbsp;-Wunreachable-code</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gereksiz-kod-extraneous-code">Gereksiz Kod (Extraneous Code)<a href="https://aviyonikyazilim.com/blog/sca-cover-edilemeyen-kodlar#gereksiz-kod-extraneous-code" class="hash-link" aria-label="Gereksiz Kod (Extraneous Code) doğrudan bağlantı" title="Gereksiz Kod (Extraneous Code) doğrudan bağlantı" translate="no">​</a></h2>
<p>Gereksiz kod, yazılımın işlevselliği için zorunlu olmayan, ancak çalıştırılabilir durumda olan kod parçalarıdır. Bu tür kod, gereksiz hesaplamalar, kullanılmayan değişkenler veya fonksiyonlar gibi unsurları içerebilir. Yapısal kapsama analizinde, gereksiz kod testler sırasında çalıştırılabilir, ancak bu çalıştırmanın programın genel işleyişi veya çıktıları üzerinde bir etkisi olmayabilir.</p>
<p>GNU C Compiler (GCC) için, aşağıdaki derleyici parametrelerini kullanarak bazı gereksiz kodları tespit etmek mümkündür[2]:</p>
<p>-Wunused-variable&nbsp;&nbsp;-Wunused-value</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="devre-dışı-bırakılmış-kod-deactivated-code">Devre Dışı Bırakılmış Kod (Deactivated Code)<a href="https://aviyonikyazilim.com/blog/sca-cover-edilemeyen-kodlar#devre-d%C4%B1%C5%9F%C4%B1-b%C4%B1rak%C4%B1lm%C4%B1%C5%9F-kod-deactivated-code" class="hash-link" aria-label="Devre Dışı Bırakılmış Kod (Deactivated Code) doğrudan bağlantı" title="Devre Dışı Bırakılmış Kod (Deactivated Code) doğrudan bağlantı" translate="no">​</a></h2>
<p>Devre dışı bırakılmış kod, yazılım geliştirme sürecinde bilinçli bir şekilde planlanmış ve tasarlanmış koddur. Bu, yazılımın belirli bir konfigürasyonda aktif olmayan ancak başka bir konfigürasyonda kullanılabilecek kod parçalarını ifade eder. Örneğin, hem askeri hem de sivil konfigürasyona sahip bir helikopterin yazılımında, sadece sivil konfigürasyonda gerçekleştirilen testler sırasında askeri konfigürasyona ait kod satırları aktif olmayacaktır. Bu tür kod, yapısal kapsama analizinde genellikle kapsanmayan kod olarak görünebilir. Ancak, extraneous (gereksiz) veya ölü kodun aksine, devre dışı bırakılmış kod tasarım aşamasında öngörülen ve amaçlanan bir özelliktir. Bu kodlar için gereksinimler belirlenmiş, izlenebilirligi saglanmis ve testlerle işlevselliği doğrulanmıştır.</p>
<p>Devre dışı bırakılmış kodun iki temel kategorisi bulunmaktadır:</p>
<ol>
<li class=""><strong>Hiçbir Zaman Aktive Edilmeyecek Kod:</strong> Bu kodlar genellikle yazılım geliştirme ve test süreçlerinde kullanılır ancak nihai ürün veya sistemde aktif olmazlar. Örneğin, hata ayıklama (debug) kodları bu kategoriye girer. Bu tür kodlar, yazılımın belirli bir parçasının sadece geliştirme aşamasında kullanılması ama üretim sürümünde devre dışı bırakılması gerektiğinde kullanılır.
Bu kodlar genellikle ön işlemci komutları (preprocessor directives) kullanılarak kontrol edilir. Ön işlemci komutları, C veya C++ gibi dillerde yaygın olarak kullanılan #ifdef, #ifndef, #endif gibi direktiflerdir. Bu direktifler, kodun belirli bölümlerinin yalnızca belirli koşullar altında derlenmesini sağlar. Örneğin, #ifdef DEBUG ve #endif arasına yazılan kodlar yalnızca DEBUG makrosu tanımlı olduğunda derlenir ve uygulamaya dahil edilir. Üretim sürümünde bu makro tanımlanmadığında, bu kod bloğu derlenmez ve son üründe yer almaz.</li>
<li class=""><strong>Bazı Konfigürasyonlarda Kullanılacak Kod:</strong> Belirli konfigürasyonlarda kullanılan, ancak diğerlerinde devre dışı bırakılan kodlar. Cift konfigurasyona sahip helikopter orneginden ilerlersek. Uçuş sırasında, yazılım sivil modda ise, askeri uçuş moduna özgü özellikler devre dışı bırakılır. Bu, yazılımın çalışma zamanında (run-time) dinamik olarak gerçekleşir. Örneğin, bir konfigürasyon dosyası, buton veya input olarak alinan bir ayrik (discrete) pin yazılımın hangi modda çalıştığını belirler ve buna göre askeri özellikleri devre dışı bırakır. Devre dışı bırakma mekanizmasının işlevselliği kanıtlanmalı, gereksinimleri ve testleri olmalıdır. Ayrıca, devre dışı bırakma yaklaşımı, aktif edilen yazılımın seviyesini desteklemelidir.</li>
</ol>
<p>Devre dışı bırakılmış kodun yönetimi ve kontrolü için Plan Software Aspects of Certification (PSAC), Software Verification Plan (SVP) ve Software Development Plan (SDP) gibi belgelerde özel hususların ele alınması gerekir.</p>
<p><strong>PSAC'te;</strong> Devre dışı bırakılmış kodun yazılım içindeki rolü, kullanım amacı ve hangi koşullar altında devre dışı kalacağı açıklanmalıdır. Bu kodun neden gerektiği ve yazılımın genel işlevselliği üzerindeki etkisi detaylandırılmalıdır.</p>
<p><strong>SDP'de;</strong>&nbsp;Devre dışı bırakılmış kodun geliştirilmesinde kullanılacak yöntemler ve teknikler detaylandırılmalıdır.</p>
<p><strong>SVP'de;</strong>&nbsp;Devre dışı bırakılmış kodun doğru şekilde işlediğinin doğrulanması için uygulanacak test stratejileri ve metodolojileri açıklanmalıdır.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kaynakça">Kaynakça<a href="https://aviyonikyazilim.com/blog/sca-cover-edilemeyen-kodlar#kaynak%C3%A7a" class="hash-link" aria-label="Kaynakça doğrudan bağlantı" title="Kaynakça doğrudan bağlantı" translate="no">​</a></h2>
<ol>
<li class=""><em>Developing Safety-Critical Software: A Practical Guide for Aviation Software and DO-178C Compliance</em>,&nbsp;<strong>Leanna Rierson</strong>, Chapter 17 Noncovered Code (Dead, Extraneous, and Deactivated Code)</li>
<li class=""><a href="https://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Warning-Options.html" target="_blank" rel="noopener noreferrer" class="">GCC, Options to Request or Suppress Warnings</a></li>
<li class=""><a href="https://wiki.sei.cmu.edu/confluence/display/c/MSC12-C.+Detect+and+remove+code+that+has+no+effect+or+is+never+executed" target="_blank" rel="noopener noreferrer" class="">Carnegie Mellon University Software Engineering Institute, MSC12-C. Detect and remove code that has no effect or is never executed</a></li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ileri-okuma">Ileri Okuma<a href="https://aviyonikyazilim.com/blog/sca-cover-edilemeyen-kodlar#ileri-okuma" class="hash-link" aria-label="Ileri Okuma doğrudan bağlantı" title="Ileri Okuma doğrudan bağlantı" translate="no">​</a></h2>
<ol>
<li class=""><em>Developing Safety-Critical Software: A Practical Guide for Aviation Software and DO-178C Compliance</em>, <strong>Leanna Rierson</strong>,&nbsp;</li>
<li class=""><em>Avionics Certification - Complete Guide to DO-178, DO-178C, DO-254</em>;&nbsp;<strong>Vance Hilderman ve Tony Baghai</strong></li>
</ol>]]></content>
        <author>
            <name>M. Serdar Karaman</name>
            <uri>https://github.com/Mavrikant</uri>
        </author>
        <category label="DO-178C" term="DO-178C"/>
        <category label="Ölü Kod (Dead Code)" term="Ölü Kod (Dead Code)"/>
        <category label="Gereksiz Kod (Extraneous Code)" term="Gereksiz Kod (Extraneous Code)"/>
        <category label="Devre Dışı Bırakılmış Kod (Deactivated Code)" term="Devre Dışı Bırakılmış Kod (Deactivated Code)"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AFDX Nedir?]]></title>
        <id>https://aviyonikyazilim.com/blog/afdx-nedir</id>
        <link href="https://aviyonikyazilim.com/blog/afdx-nedir"/>
        <updated>2023-08-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AFDX]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="AFDX" src="https://aviyonikyazilim.com/assets/images/gorsel-1-e21700cf584c1af9e831af8e081d6aef.jpg" width="1024" height="1024" class="img_ev3q"></p>
<p>Havacılık endüstrisi, günümüzde giderek artan talepler ve karmaşık sistemlerle karşı karşıyadır. Bu sistemlerin etkin ve güvenilir bir şekilde iletişim kurması, uçuş güvenliği ve operasyonel verimlilik açısından kritik önem taşır. AFDX (Avionics Full-Duplex Switched Ethernet), havacılık endüstrisinde veri iletişimini iyileştirmek ve karmaşık sistemler arasında güvenilir bağlantılar sağlamak için kullanılan bir teknolojidir. Bu yazıda, AFDX'in ne olduğunu, nasıl çalıştığını, havacılık endüstrisindeki kullanım alanlarını, sağladığı avantajları ve teknik özelliklerini detaylı bir şekilde inceleyeceğiz.</p>
<!-- -->
<p><strong>AFDX Nedir?</strong></p>
<p>AFDX, uçak içi sistemler arasında güvenilir ve yüksek hızlı veri iletişimi sağlamak için kullanılan bir iletişim protokolüdür. Bu teknoloji, Ethernet tabanlı bir ağ kullanarak verilerin değişimini kolaylaştırır. AFDX, uçuş kontrol sistemleri, yolcu eğlence sistemleri, motor kontrol sistemleri ve daha birçok kritik uçak sistemlerinin entegrasyonunu destekler.</p>
<p><strong>AFDX'in Çalışma Prensibi</strong></p>
<p>AFDX, tam çift yönlü iletişimi destekleyen anahtarlama yapısıyla karakterizedir. Bu yapı, verilerin düşük gecikme ve yüksek bant genişliği ile iletilmesini sağlar. Temel olarak, AFDX birçok uçak sistemini birbirine bağlayan bir ağ topolojisi oluşturur. Bu topoloji, verilerin kesintisiz ve güvenilir bir şekilde iletilmesini garanti eder.</p>
<p><strong>AFDX'in Teknik Özellikleri</strong></p>
<p>Deterministik İletişim: AFDX, belirli bir zaman diliminde veri iletimini garanti eden deterministik bir iletişim sağlar. Bu sayede, kritik verilerin hızlı ve güvenilir bir şekilde iletilmesi mümkün olur.</p>
<p><strong>Redundans ve Güvenilirlik:</strong> AFDX, veri yollarında meydana gelebilecek kesintilere karşı yüksek düzeyde dayanıklılık ve güvenilirlik sunar. Çift hat ve çift anahtar yapısıyla ağın kesintisiz çalışması sağlanır.</p>
<p><strong>Geniş Bant Genişliği:</strong> AFDX ağı, yüksek bant genişliği sunar. Bu özellik, büyük veri miktarlarının hızlı ve etkili bir şekilde iletilmesini sağlar.</p>
<p><strong>Zaman Bölümlü Protokoller:</strong> AFDX, zaman bölümlü protokoller kullanarak veri iletimini düzenler. Bu, veri çarpışmalarını engeller ve veri iletimini daha verimli hale getirir.</p>
<p><strong>Quality of Service (QoS) Desteği:</strong> AFDX, farklı veri türlerinin farklı öncelik seviyelerine sahip olabileceği bir Quality of Service (Hizmet Kalitesi) desteği sunar. Bu, kritik verilerin öncelikli olarak iletilmesini sağlar.</p>
<p><strong>Etkin Bant Genişliği Kullanımı:</strong> AFDX, veri paketlerini düşük gecikme süreleriyle birleştirerek bant genişliğini daha etkili kullanır.</p>
<p><img decoding="async" loading="lazy" src="https://aviyonikyazilim.com/assets/images/gorsel-2-0022935f4266c42a178a6715a7e0d5d9.png" width="752" height="904" class="img_ev3q"></p>
<p><strong>Airbus A380 ucaginda AFDX topolojisi</strong></p>
<p>Boulanger, Frédéric &amp; Marcadet, Dominique &amp; Rayrole, Martin &amp; Taha, Safouan &amp; Valiron, Benoît. (2018). A time synchronization protocol for A664-P7. 1-9. 10.1109/DASC.2018.8569837.&nbsp;</p>
<p><strong>Kullanıldığı Uçaklar ve Avantajları</strong></p>
<p>AFDX teknolojisi, özellikle büyük ticari yolcu uçaklarında ve askeri uçaklarda geniş çapta kullanılmaktadır. Airbus A380, Boeing 787 Dreamliner gibi modern yolcu uçaklarında AFDX teknolojisi kullanılarak uçak içi sistemlerin entegrasyonu ve veri iletişimi sağlanmaktadır. AFDX'in sağladığı avantajlar şunlardır:</p>
<p><strong>Güvenilir Veri İletişimi:</strong> AFDX, kesintisiz ve güvenilir bir veri iletişimi sağlayarak uçak içi sistemlerin koordinasyonunu ve işbirliğini destekler.</p>
<p><strong>Düşük Gecikme Süresi:</strong> Deterministik iletişim yapısı, düşük gecikme süreleriyle kritik verilerin hızlı bir şekilde iletilmesini sağlar.</p>
<p><strong>Kablo ve Ağ Altyapısında Tasarruf:</strong> AFDX, tek bir Ethernet ağı üzerinden birden fazla sistem için iletişim sağladığı için kablo ve ağ altyapısı maliyetlerini düşürür.</p>
<p><strong>Kolay Entegrasyon:</strong> AFDX, farklı uçak sistemlerinin entegrasyonunu kolaylaştırır, bu da üretim sürecini hızlandırır ve maliyetleri düşürür.</p>
<p><strong>Bakım ve Onarım Kolaylığı:</strong> AFDX, hata izleme ve teşhis yetenekleri sayesinde bakım ekiplerinin sorunları tespit etmesini ve çözmesini kolaylaştırır.</p>
<p><strong>Sonuç</strong></p>
<p>AFDX teknolojisi, havacılık endüstrisinde veri iletişimini güvenilir, hızlı ve etkili bir şekilde sağlayarak uçuş güvenliği ve operasyonel verimliliği artırır. Kullanıldığı uçaklarda, uçuş kontrolünden yolcu eğlence sistemlerine kadar geniş bir yelpazede kritik roller üstlenir. Havacılık endüstrisi, AFDX sayesinde daha güvenli ve entegre bir şekilde faaliyet gösterebilirken, yolcular da daha keyifli ve konforlu bir uçuş deneyimi yaşayabilirler. Bu teknolojinin gelecekteki gelişmeleri ve daha fazla uygulama alanıyla havacılık sektöründe daha da büyük bir rol oynaması beklenmektedir.</p>]]></content>
        <author>
            <name>M. Serdar Karaman</name>
            <uri>https://github.com/Mavrikant</uri>
        </author>
        <category label="AFDX" term="AFDX"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Havacılığın Kalbindeki İletişim: ARINC 429 Protokolü]]></title>
        <id>https://aviyonikyazilim.com/blog/arinc-429</id>
        <link href="https://aviyonikyazilim.com/blog/arinc-429"/>
        <updated>2023-08-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Havacılık alanında, sorunsuz iletişim uçuşların güvenliği ve verimliliği açısından kritik bir rol oynar. Bu arenadaki önemli protokollerden biri de ARINC 429 protokolüdür. Yıllardır havacılık verilerinin iletişiminde temel bir rol oynamış olan bu protokol, aviyonik sistemler, enstrümanlar ve sensörler arasında hayati bir bağlantı sağlamaktadır. Bu blog yazısında, ARINC 429 dünyasına yüzeysel bir bakış atarak, önemini, çalışma prensiplerini ve modern havacılıktaki kalıcı önemini inceleyeceğiz.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://aviyonikyazilim.com/assets/images/gorsel-1-2820ee17bce6c85148077c92f13cdd9b.jpg" width="907" height="402" class="img_ev3q"></p>
<p>Havacılık alanında, sorunsuz iletişim uçuşların güvenliği ve verimliliği açısından kritik bir rol oynar. Bu arenadaki önemli protokollerden biri de ARINC 429 protokolüdür. Yıllardır havacılık verilerinin iletişiminde temel bir rol oynamış olan bu protokol, aviyonik sistemler, enstrümanlar ve sensörler arasında hayati bir bağlantı sağlamaktadır. Bu blog yazısında, ARINC 429 dünyasına yüzeysel bir bakış atarak, önemini, çalışma prensiplerini ve modern havacılıktaki kalıcı önemini inceleyeceğiz.</p>
<!-- -->
<p>Aeronautical Radio, Inc. (ARINC) tarafından geliştirilen ARINC 429, özellikle aviyonik uygulamalar için tasarlanmış seri veri iletişim protokolüdür. Bu protokol, aviyonik sistemler arasındaki veri iletişiminin fiziksel ve elektriksel özelliklerini tanımlar.</p>
<p><strong>ARINC 429’un Önemi</strong></p>
<p>Havacılığın merkezinde, hassasiyet ve doğruluk son derece önemlidir. ARINC 429, veri doğruluğunu ve bütünlüğünü sağlama konusundaki başarısıyla, aviyonik iletişimde vazgeçilmez bir araçtır. ARINC 429’un neden bu kadar önemli olduğuna bir bakalım:</p>
<p><strong>Güvenlik ve Güvenilirlik:</strong> Havacılıkta iletişim hataları felaket sonuçlara yol açabilir. ARINC 429’un sağlam hata kontrol mekanizmaları ve yerleşik yedekliliği, veri iletiminin güvenilir ve bozulmasız olmasını sağlar.</p>
<p><strong>Basitlik ve Evrensellik:</strong> ARINC 429’un basitliği, farklı üreticilerden gelen farklı aviyonik sistemler arasında etkileşim sağlamayı kolaylaştırır. Bu evrensellik, havacılık endüstrisinde geniş ölçüde benimsenmesine katkıda bulunmuştur.</p>
<p><strong>Gerçek Zamanlı Performans:</strong> ARINC 429, gerçek zamanlı olarak çalışır; bu da kritik uçuş verilerinin sistemler arasında hızlı ve doğru iletilmesini sağlar. Bu, uçuş kontrolü, navigasyon ve izleme gibi faaliyetler için elzemdir.</p>
<p><strong>ARINC 429 Nasıl Çalışır?</strong></p>
<p>ARINC 429, noktadan-noktaya iletişim modelini kullanır, yani bir verici bir veya daha fazla alıcıya veri gönderir. Veri 32 bitlik kelimelere (word) kodlanır; bu kelimeler 5 bölümden oluşur:</p>
<p><img decoding="async" loading="lazy" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkUAAABXCAMAAAA9IcFKAAAAA3NCSVQICAjb4U/gAAAAQlBMVEX////k5OTLy8twcHCqqqrr6+v39/d8fHyjo6PBwcHu7u6Pj4/X19cAAACYmJhSUlI3NzdhYWG6urqFhYWysrIZGRlth6iOAAAAX3pUWHRSYXcgcHJvZmlsZSB0eXBlIEFQUDEAAAiZ40pPzUstykxWKCjKT8vMSeVSAANjEy4TSxNLo0QDAwMLAwgwNDAwNgSSRkC2OVQo0QAFmJibpQGhuVmymSmIzwUAT7oVaBst2IwAAA7vSURBVHic7Z2Leqwos4Y5KCBnRO//VncV4KE1WZ0/05P0ms33zCQdVgkFvBZoIxLS1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1fUvS6jMiDbZEmGyJ8RnEP1tr7reQcLM5beWcia6kPGJpQ4ukdm5hfA1OUnimlKM4udc7XpbibVSE2JyjMaY0io/ttRhdcQjRWsilpEIBy5O/6CvXe8qEQtFdPVksjQOhPD0cXzRIawshXUBlOAHiQ5kftTZrjdVo4hIt1JCCxnDx5Y6JBjCPMQiwhyOaGGesrM/6GvXu0o3inCs8mPk0xTix1NmHbJyjrqZWEHUSiOMfNrNP+hr17tKxDIoaYgpadVREZhAfxxfxiBnlyjEIhdMiCTGbLjrF2ldGIuiMZkyl0wMYwwGAPl4xiyk0mkeAyNjCkEQCT/D9MPudr2lBEcYLLEhZDGWP3p46fr3NMiLeLqmhJsJf2qSnpvcs33rkl9i8gXn0o+1wtWEP8+F+48pul3V69vV3O1WE2NPTZbxaUG3G6F0eV7ybXZ3M1G3oftW89sx9HY5cS/51iz8eu/E3vz3V5P52nLiVtD8BV+et/9wa4Vb+/trW443k+VqQj+j6FpRqq4m36rFbQR9CUXT85LVlV/xnCL7hZ67NQu/dhS7+i/M1WS+TjkFv2a7vIQidW1/8ZwiejMZrgV9maKxU/SRyV9G0a39X0ORff9YdB8ROkUf+9Jj0a4ei8hfF4v+SJGWYSAmBeyAGouWkARUUewuUh4mIlM8apETH23gdjeZUpjBxOy1EHDVohMPqRRUsk3BEp4KQPWrPvzDp4Q5VorgDzg2L3u2lgcFx5TjK0Vw7aDnkNhjySQXVwpFGkoWA97s2CminIiQpv0Y+GWJSqWKjaLJQNaprGioJpqP6A8mNIoWRVhI5XOlSGDlWGGhUbQMmC16sVHEhQ61zo2iAabqrBTRKBJcg8vl80aRgho0P1sP8tA6tVFkE4/qwUTw0EjeYpEPqcJyUCRbAY0iIUNDY6MIKthy2Snyjf4/jmgjdC1lZEabGosmwrzm8UQRJYFK4petFmIi88KplrsJlJSmjJ3TKIJsPZjm4ktxcYaKKkYYtm5u2XLazsdCEWRrM7Fx2LNlAkpmYEYaRWCyLBOph20lB2HWgyIo2UxSlJ6qFLEQiGFE0u2YkQc7JqKwTStFKqBLiz/qnIJmnlg8plKUAejtHC4UUb6Ws6UUUfz3cEJC0yiyUTTyVVBbm6VSNEDtpliOqRSNKWoooDjXKILabSd+Q8TbQiw5x6LtNuB2XgjSurvFIrGReFBk4yNFI9uuNjeKJiHad/eNIqG2Y56MaOVsKi3a5kUiIxQHRdACElp0MqdazBPXIpxMoGUNzeNRC3TVVkiaiyJLWc/lbUSTNKTSI9u8yCqSzfCQLSSWcrYRDSAi1jyaCHNQVEqWgAHZKBI2YbAqZ2Y9RnArDC0HVYrEnPGLxaPOQnO9QFQrDVR8FgOExcBZrSv+HMEvpU6xSEC4IrrExS0WpXLSULJRJCYF/vDqRPU2iGGuZ/xGkcT/yKmKbGJbsNgoUtsw20JnSlu4arFIxCRre+wUyUssguwanMeIRuUDRQSdq//wZ4oGqCQt/drmRVYNF4pUhtN0ykctKBczz/FkIi01g8EKNIoYmMtqXV2E0A1jYBkGG0WDquFnnxeNkC1bzhThmrulHDPtJUMvjoeJwDP9gaLJjPxMEXY3TSYeFBGkSJ0oKpUbavVbtkkPvvZVG9Hgn2ehS7O3EQ2yxaLIMaIprDf6f6aoxPltRAOKyJUi9UgRnEj8QpHyrQ83isS+3KdRFDQJrT8bRTim1E8NEW/VlaJB1k8HRbLFgH1E25z644gmNFGLzcWBGotoQehEkRZE+lwjda0Fhi+q6TGiCTlhOCuDXq3FLEsz14JKLsACuFjAqhQp8EsTixlUiiwQwlMMem8csxAx1m6oFE1YcjvH2uwC088ULRk7yB4jGqGBaCqOEQ0pAnjLoHeiiJ+yRYqWpWBxomgs8edEEcwhVyz/oIhWk50iQZbaQ59TpKehVmDrMCrY44gGrjdENorsPjXfoisM/rXIbV6k6+hxUCR5TLWK27xIbyFto2jMO19Xiv4Yiyw32TpT1tnWWJQl/lFdqlMPMBHBly91Sy2ok2by3Bxz3BS9t3AKoUmhiLlsrG3xEl0UMfgBIkLhtVCknDdWmtK5hSLtOJZcK1ayzWgSzDEvwpIZmO0TGIEli/PseoLKWCPL98oHRSw+DJSJCWPSKRYB9Lr1QuuWQAWvFWoUAfRG5sLCThGpMW+jCECTWZaSG0VBLM6cRrRyRtjTvAhbmoZcIGkdJqCV2tjc3J1yvoxo7AgeLUHKdot9i0V8W0V/zK59mzg0iqA72gm5UQSd5B9HNDK0Y/48oolREK1H/NzmRRobQJxcRBNRUtvsutjrU6NDii5mWy2qSYu65mqSW8K4JdR5EaTAX0J8mO20l6y11o8mraBC0dm5RhHmqM+BBu1bhbYrfbFlcjapJTeKSi7tyktvJu1Ho+gw2SgStZrkuNIX+4H85EtJ2U77Vu7hy+b9aV6036W5mWyxaM/loEi0lG1E2002ikRr2hNF2zFfvuvY7xd9aNLvFxWT97933SlC9XvXp/I7Rf/FWPTpiHZNGF+yMmT4f7gy5EbRBytDbhTdCnrRypDn7f8Fir68MsR79SjPLwkqXBNyfmrCzVOTW4J5XrJ8XnK6VSi9pOS7ybWgfDO5+cLl1bl7y33Bl2su32r/dG1Lc8/lZvLJQ2aGjg/S1uvxknT9e56fmdwTXmOiv2DyeyV/w4Typyaa31Je0wr/u7uafXlEu00AbrpH1K5v6j4vuus2XP2e/sE12k2dopfpL6PoH9wvuqlT9DL9ZRT9ORbZEGNbq7LHIkjDu/tzjB4/W/z0+D3O+4pDddL+1xtvXnGmyMaYicCegMtXc7j/bYrselzvL6dnyfK3c3xCkeNKunIZusUiEcLiMngilWN2dYpI53aKtJqBtwmy9XCE97eL3N9ViEqt7btLssTfdeasesNLeUYWaDV6pkg47t0iVq68k3Ae7P/wfYpODzmr9bj25+kj6y/l+IQiBrUoKGyxSMSIX+Qz5/E79xXiUogHRdStxDsu0pyVXdm+9OlNFDh+F0wpnNhsci5TOMHfYguLstqDBRt1NBrizYki6rLQQqwDfkc9ytdR5GPkQFGCn0TFstj0uzk+i0VyuMQisuBOEURABJqBIr6yNZ8pclZGriMXEIlHEj7Zk+SXhBTBWWH9EhOL6zSpIb5FRCoUKSQlDjDKPIxo3kHALxTZ11I0ZMcGl41Tk1PZ/YsUrXGtIBzXaDQ6XGA0R+ftaiJ37ERRDDJKQNyt1q4hxdu90l9VpWgmWsYgcHCg+Y0oIivu8RM5gPQwu2YRphDYDeylFIkhAEVRkyS5gwGF/nsj2n5rfp8XKUryOlKo1BrsOieXHigyLuSykjVgLDLhu479KwrQ8oOj0BW8UJQ4SW9EEcR5XFk+OnuiyA4CZ0O4F5lc9WsoKguRHbUYi2DAyDKqQel/Lxbt85pjXgThicNpEaMbwI3s5jNFK0yYMh8DNRzmRZp/tnHk7yii11nAqbcGzZ2BX3H9badQnIuRqEwcjV5MkZ7nResanSHwExr8RbNrmA7CNRJkOA3lp3UhJDizvp3jHyka/T6b3+dFWnlVDvRwKaao9Zr60zWa8JTNhBkjRm/MJ7n/lhbv/YBnhLJKUD9Tr8a3cHGGtrLEmIkM5dN5RKN4qSvg0g3XX8/HRPPbFI2QlVdi8XaxVg14Ic08zHXvX/h+Vf3e9VvqP3XX8aR+7/on9ZdR9A+e07+pU/Qy/WUUfRqLrgn3VWo3dYpepv8KRfP0qCVPzwTTv67XaE5PTVhiP+DI1zR8skqNDlctt5SbxXOTri9qfonJj+ktvkbq6urq6urq6urq6urq6urq6urq6urq6urqaiovMKUrvv8WN7V2lnDcYJLiCygtJKZ9pSZueYsvyvXlPbhr25I24tMV5Vd9bq6t74Vf9QkoH/H5uxWyjLevG+vO27N7/lpm2d/a/M5iER8xoXGwlqZQKJJOYooFVgy1qe3pSSYXiEiJMmdF9HSub6jknC6Okshpe/Epr/1NR1KfWrAOdw+NwNz9ubq6m/0cmbX2jw+6iPQWa3K7PlFSSVVmMChUisLKSkoJHsLUYKRjBopwB9u0WFz+nrbFUgIQyRhr6pa40rkgCPflYTs8jpFJGnySXJCxhDIRkxsg/LV3IsxtwTtGvoXoNTq1cudocFEQHTA7UwJe15uKOj2VgSqkxNdcKTJLFCNQ5M4r5tK01N4WK6WAmV1bv/rY4kSNRdIxCsOT9MKpupmtQu4CWRI+WU4nyDVyq4Okpj4dM7uUkoESJVVuFBgAnbQhKrYuGOvoOo9BXteNdr2PcpiXdQaKeE5lBEKKYErDNVC0nla8eEMqRSKo8qjptoMFUXktG1C3AQtHtGkFitqIRhZOotWryIqM+LiUkSROxOLr41ssWmWGf2QQCUkYBIyPdKXEJ8gLt9pXGNM+ex1m1xtIR5zY8jJ+iYh9Wimy64yxqGBQ9m7XLvC4wngmauSxVoR9FwqPS1O30MTLU8wnisbAYCgME2BDkSLFcexjuEfKNqLV/bbxoTauINSBOztF3HEKjvV50RtL4QRHODvinIZit1eKyIIXbAbjBSswaJNzWD1hJT6JSbepFEGoDId4ssUtGcr/QFG7iiMB30ek8F3wGvOCI6A0HTECttl13V69BCF2oQj80T0WvbfW+r4ErsvMOK/1Sh+v1QN8oDHy5PY18LiBQnScw7Q6RB5r+gKTGpjpuBXSy5DGXeIAC1yab1uJZGSHOczVwIzaUZyOQ2Hw8UwRSZCyAjOVItxkCCb++Mg97syz9qca3lWiveRG1guxMZeXnJVdocfy+pC8v6uJ4LOfREtIwaS8vRQD34+hW3p9QRnz+EIbyITVt1QRXXhrbxKRcDUnytPCg2SqGNht0+EMAQx8GslodHm3zsDwbV1qUcTK99p+p6urq6urq6urq6urq6urq6urq6vrL9L/AQrs7vBWSnJfAAAAAElFTkSuQmCC" width="581" height="87" class="img_ev3q"></p>
<p><strong>Etiket (Label):</strong> Gönderilen verinin türünü belirleyen 8 bitlik bir alan. Farklı etiketler, irtifa, hava hızı ve motor parametreleri gibi çeşitli parametrelere karşılık gelir.</p>
<p><strong>Kaynak Hedef Göstergesi&nbsp;(SDI):</strong> 2 bitlik bir alandir. Verinin nereden geldiğini ve nereye gittiğini anlamak için kullanılır.</p>
<p><strong>Veri (Data):</strong> Gönderilen gerçek veriyi içeren 19 bitlik bir alan; bu veri alani BCD, BNR yada discrete tipinde olabilir.</p>
<p><strong>İşaret/Durum Matrisi (SSM):</strong> Verinin önemini belirten 2 bitlik bir alan; işaretini, geçerli veya geçersiz olup olmadığını ve diğer durum bilgilerini içerir.</p>
<p><strong>Parity:</strong> Istek uzerine Odd ya da Even tipinde olabilir. Tek bit hatayi tespit edebilir.</p>
<p><img decoding="async" loading="lazy" src="https://aviyonikyazilim.com/assets/images/gorsel-3-02653a91cb61fedee3e3a0e760ba983d.png" width="1885" height="470" class="img_ev3q"></p>
<p>Protokol sabit bir bit hızında (12.5 Kbps yada 100 Kbps) çalışır ve bir kelimenin her bir biti sırayla iletilir; en az anlamlı bit (LSB) ilk olarak iletilir. Veri kelimeleri sıralı bir şekilde gönderilir. 2 kelime arasinda en az 4 bit uzunlugunda bosluk olmalidir.</p>]]></content>
        <author>
            <name>M. Serdar Karaman</name>
            <uri>https://github.com/Mavrikant</uri>
        </author>
        <category label="A429" term="A429"/>
        <category label="aviyonik" term="aviyonik"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Aviyonik, aviyonik sistemler nedir?]]></title>
        <id>https://aviyonikyazilim.com/blog/aviyonik-nedir</id>
        <link href="https://aviyonikyazilim.com/blog/aviyonik-nedir"/>
        <updated>2023-08-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Photo of a modern aircraft cockpit showcasing various avionic systems.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Photo of a modern aircraft cockpit showcasing various avionic systems." src="https://aviyonikyazilim.com/assets/images/gorsel-1-2c04ca6db87f6cf7a3ea849053942a98.jpg" title="Photo of a modern aircraft cockpit showcasing various avionic systems." width="1024" height="1024" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="terimin-kökeni">Terimin Kökeni<a href="https://aviyonikyazilim.com/blog/aviyonik-nedir#terimin-k%C3%B6keni" class="hash-link" aria-label="Terimin Kökeni doğrudan bağlantı" title="Terimin Kökeni doğrudan bağlantı" translate="no">​</a></h3>
<p>Aviyonik terimi, gazeteci Philip J. Klass tarafından ilk kez 1950'lerde kullanılmıştır. Terim, İngilizce "Aviation" (Havacılık) ve "Electronics" (Elektronik) kelimelerinin birleşiminden oluşur, yani AVIation + electrONICS = AVIONICS. Türkçe'de "Aviyonik" olarak bilinir.</p>
<!-- -->
<p>Aviyonik, hava taşıtlarında kullanılan elektronik sistemleri genel bir terim olarak ifade eder. Temel olarak uçakların iletişim, navigasyon, gözetleme, ve gösterim işlevlerini yerine getirmek için tasarlanmışlardır. Aviyonik, sadece sivil ve askeri uçakları değil, aynı zamanda helikopterleri, insansız hava araçlarını (İHA), yapay uyduları ve uzay araçlarını da kapsar. Aviyonik sistemler, modern havacılıkta "uçağın beyni" olarak adlandırılır ve genellikle kokpitte bir araya getirilmişlerdir.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="aviyonik-sistemlerinin-bileşenleri">Aviyonik Sistemlerinin Bileşenleri<a href="https://aviyonikyazilim.com/blog/aviyonik-nedir#aviyonik-sistemlerinin-bile%C5%9Fenleri" class="hash-link" aria-label="Aviyonik Sistemlerinin Bileşenleri doğrudan bağlantı" title="Aviyonik Sistemlerinin Bileşenleri doğrudan bağlantı" translate="no">​</a></h3>
<p>*<em>İletişim Sistemleri:*</em>
Bu sistemler, VHF radyoları, uydu iletişim sistemleri ve transponderlar gibi ekipmanları içerir. Özellikle, uydu iletişimi sayesinde, uçaklar okyanuslar üzerindeyken bile sürekli iletişimde kalabilirler.</p>
<p>*<em>Seyrüsefer (Navigasyon) Sistemleri:*</em>
Küresel Konumlama Sistemi (GPS) bu kategorinin en bilinen örneğidir. Ancak, inertial navigasyon sistemleri (INS) ve VOR/DME gibi radyo frekansı tabanlı sistemler de önemlidir. Bu sistemler, uçağın konumunu hassas bir şekilde belirlemesini sağlar.</p>
<p>*<em>Uçuş Kontrol Sistemleri:*</em>
Bu kategoride otomatik pilotlar, uçuş yönetim sistemleri (FMS) ve fly-by-wire kontrol sistemleri yer alır. Özellikle fly-by-wire sistemleri, pilot komutlarını elektronik sinyallere dönüştürerek hidrolik sistemler yerine uçağın kontrolünü sağlar.</p>
<p>*<em>Gözetim Sistemleri:*</em>
Bu sistemler, uçak çevresindeki nesneleri ve hava şartlarını izlemek için radarlar ve hava durumu gözetleme sistemleri gibi bileşenleri içerir. Ayrıca, Trafik Çarpışma ve İzleme Sistemleri (TCAS), yakındaki diğer hava araçlarını izlemek için kullanılır.</p>
<p>*<em>Gösterim ve Kokpit Göstergeleri:*</em>
Elektronik uçuş çantaları (EFB), çok fonksiyonlu göstergeler (MFD) ve baş üstü göstergeler (HUD) bu kategoriyi oluşturur. Örneğin, HUD sistemi, pilotun göz seviyesine bilgileri yansıtarak, dışarıya bakarken bile kritik uçuş verilerini görmesini sağlar.</p>
<p>*<em>Veri Yönetimi ve İşleme:*</em>
Farklı sistemler ve sensörlerden gelen verileri birleştiren ve işleyen aviyonik bilgisayarlar, pilotlara ve yer ekiplerine gerektiğinde bilgi sağlar.</p>
<p>*<em>Eğlence Sistemleri:*</em>
Bu, genellikle ticari uçaklarda bulunan bir özelliktir. Eğlence sistemleri, film, müzik, internet bağlantısı gibi seçenekler sunar.</p>
<p><strong>Atış/Mühimmat Kontrol&nbsp;Sistemleri:</strong></p>
<p>Askeri uçaklarda, silah sistemlerinin etkin ve doğru bir şekilde kullanılabilmesi için elektronik sistemler kullanılır.</p>
<p>Aviyonik sistemleri, modern havacılığın vazgeçilmez bir parçasıdır. Uçakların güvenli, verimli ve etkili bir şekilde işlemesini sağlayan bu sistemler, giderek daha karmaşık ve ileri teknoloji ürünü hale gelmektedir.</p>]]></content>
        <author>
            <name>M. Serdar Karaman</name>
            <uri>https://github.com/Mavrikant</uri>
        </author>
        <category label="aviyonik" term="aviyonik"/>
        <category label="aviyonik sistemler" term="aviyonik sistemler"/>
    </entry>
</feed>