Baykar: Stajyer Bilgisayar Mühendisi

2015
Baykar: Stajyer Bilgisayar Mühendisi

2015 — İkitelli'de TMS570/lwIP gömülü ağ çalışmalarıyla başlayıp Keşan'da gerçek İHA sistemleri, aviyonik hata ayıklama, C/C# statik analiz ve yer kontrol telemetrisiyle devam eden yazılım stajı.

2015 yazındaki Baykar stajım İstanbul İkitelli'deki Yazılım Birimi'nde başladı ve ilerleyen haftalarda Keşan'daki saha ortamında gerçek İHA sistemlerini görerek devam etti. Staj kapsamında donanım, haberleşme, aviyonik, ölçüm ve kullanıcı arayüzü katmanlarının bütünleşik değerlendirildiği kritik sistem yazılımı çalışmalarına katıldım.

2015 tarihli staj kayıtları, gömülü yazılım ve arayüz çalışmalarının belirli ayrıntılarının kurumsal gizlilik kapsamında değerlendirildiğini göstermektedir. Bu mesleki deneyim metninde doğrulanabilen çalışma alanları, mühendislik yöntemleri ve paylaşılabilir teknik sonuçlar esas alınmıştır.

Teknik Değerlendirme Süreci

Staja kabul sürecinde bilgisayar mühendisliği temelleri; gömülü sistemler, havacılık ve güvenilirlik gereksinimleri yüksek sistemlerin mühendislik disiplinleriyle birlikte değerlendirildi.

İşletim sistemlerinde süreç ve eşzamanlılık, mutex ve senkronizasyon, mikrodenetleyiciler, gömülü yazılım ve algoritmik problem çözme bu değerlendirmenin bir bölümünü oluşturuyordu. Algoritma tarafında, dört basamaklı bir sayının rakamlarına verilen doğrusal bir koşulu sağlayan olası değerleri sistematik biçimde bulmayı gerektiren kombinatoryal bir problem gibi sorular vardı. Bu tür sorularda kaba kuvvetle sonuç üretmekten çok, arama uzayını nasıl modellediğiniz ve çözümü nasıl gerekçelendirdiğiniz önemliydi.

Teknik değerlendirme aynı zamanda aviyonik sistem standartları, MIL-STD ailesi, kritik yazılım, Türkiye ve dünyada İHA teknolojilerinin tarihsel gelişimi, havacılık ve savunma sanayii gibi tek bir üniversite dersinin sınırına sığmayan alanlara uzanıyordu.

Bu süreç daha staja başlamadan önemli bir çerçeve çizmişti: kritik bir sistemde çalışan yazılımı anlamak için yalnız dil sözdizimi yeterli değildir. İşletim sistemi, zamanlama, elektronik, haberleşme ve sistemin tabi olduğu mühendislik disiplinleri de aynı problemin parçalarıdır.

TMS570 ve lwIP Üzerinde Gömülü Ağ Haberleşmesi

İkitelli'deki ilk ciddi çalışmalarım Texas Instruments TMS570 geliştirme kartı üzerinde oldu. lwIP ağ yığınının yapılandırılması, kart üzerinde TCP ve UDP iletişiminin çalıştırılması ve echo senaryolarının güvenilir biçimde sonuçlandırılması üzerine çalıştım.

Masaüstünde birkaç satırlık socket koduyla kolay görünen bir TCP/UDP echo işlemi, mikrodenetleyici üzerinde ağ yığını, sürücü, bellek, interrupt davranışı ve donanım konfigürasyonunun birlikte doğru olmasını gerektiriyordu. Çalışma bu nedenle beklediğimden çok daha zorlayıcı oldu.

Hazır bir örneği çalıştırıp sonucu göstermek yerine yapılandırmanın hangi katmanda koptuğunu anlamaya çalıştım. Kaynakları, konfigürasyonları ve deneme sonuçlarını ayrıntılı not ettim. Sorunu sonuçlandırdığımda kullanılan kaynak kod ve teknik notların tamamı çalışma kapsamında teslim edildi.

İkitelli’deki geliştirme kartı çalışmasının ardından stajın sonraki aşaması Keşan’daki saha ortamında yürütüldü. Bu geçiş, kontrollü geliştirme ortamıyla gerçek İHA sistemlerinin bulunduğu çalışma koşullarını karşılaştırma olanağı sağladı.

Geliştirme ve Saha Ortamlarında Sistem İncelemesi

Keşan'da artık soyut bir laboratuvar senaryosu yerine farklı elektronik ve yazılım bileşenlerinin birlikte çalıştığı gerçek sistemleri görme imkânım vardı. Staj dosyamın sonuç bölümünde de ilk haftadaki geliştirme kartı ve haberleşme çalışmalarından sonra Keşan'daki havaalanında İHA yazılımlarının, gömülü yazılımın ve arayüz uygulamalarının incelendiği kayıtlıdır.

Bu geçiş hata ayıklamanın biçimini değiştirdi. Geliştirme kartında yalnız kod ve konfigürasyon üzerinde düşünmek mümkünken gerçek aviyonik sistemde kaynak kod, elektronik devre, fiziksel sinyal ve sistem davranışı aynı anda değerlendirilmek zorundaydı.

SPI/I2C Dönüşüm Modülünde Donanım-Yazılım Hata Ayıklama

Keşan'daki çalışmalardan birinde aktif İHA sisteminde kullanılan bir aviyonik haberleşme bileşeninin SPI/I2C dönüşüm davranışıyla ilişkili yazılım problemini inceleme fırsatı buldum.

Bu çalışma yalnız C kaynak kodunu okuyarak çözülebilecek bir hata değildi. Gömülü yazılım tarafını incelerken Altium Designer üzerinde ilgili elektronik bölgeleri takip ediyor, yazılımın dokunduğu çevre birimlerinin devredeki karşılığını anlamaya çalışıyordum. Tektronix osiloskop ve sinyal analiz ekipmanlarıyla haberleşme hatlarının fiziksel davranışını gözlemleyerek yazılım akışı ile gerçek sinyali karşılaştırdım.

Aviyonik hata ayıklama çalışmasının kamuya açık teknik karşılığı, C kaynak kodu -> çevre birimi -> PCB -> fiziksel sinyal zincirini aynı hata ayıklama oturumunda izleyebilmekti. Devre topolojisi ve ayırt edici sistem ayrıntıları bu kapsamın dışındadır.

Sorunun kaynağı bu katmanlar arasında izlenerek ilgili yazılım davranışının düzeltilmesine yönelik çalışma tamamlandı. Daha sonraki yıllarda donanım-yazılım sınırındaki problemlerde log veya exception'ın tek başına nihai kanıt olmadığını düşünmemin nedenlerinden biri bu deneyimdir. Fiziksel sistem söz konusuysa ölçülebilen davranış temel referanstır.

Telemetri Yazılımında Çok Eksenli Görselleştirme

Stajın en kapsamlı bireysel çalışması, telemetri verilerinin incelenmesi için geliştirdiğim masaüstü yazılımı oldu. Uygulamayı C# ve .NET Windows Forms üzerinde geliştirdim; grafik katmanında GDI+ ve özel UserControl bileşenleri kullandım.

İlk problem farklı ölçeklerdeki çok sayıda telemetri veri kalemini ortak zaman ekseninde anlamlı biçimde göstermekti. Tek Y eksenine zorlanan serilerden biri görünürken diğeri neredeyse düz çizgiye dönüşebiliyordu. Bu nedenle çoklu eksen destekli bir grafik yapısı geliştirdim.

Grafik bileşeninde yalnız çizgi üretmeye odaklanmadım. Yakınlaştırma, farklı veri kalemlerini birlikte izleme, zaman aralığı üzerinde gezinme ve raporlama gibi kullanım senaryolarını da düşünerek bileşeni ayrı bir modül olarak tasarladım.

Telemetri Verilerinin Analizi

Görselleştirme tek başına yeterli değildi. Telemetri verisindeki mühendislik açısından anlamlı davranışları daha hızlı bulabilmek için analiz işlevleri ekledim.

Uygulama içinde minimum ve maksimum noktaların bulunması, sıra dışı veya ekstrem değerlerin belirlenmesi, belirli zaman aralıklarının incelenmesi ve iki veri kaleminin birlikte değerlendirilmesi gibi işlevler geliştirdim. İki seri arasındaki doğrusal ilişkinin korelasyon üzerinden incelenmesi de bu çalışmanın parçalarından biriydi.

Korelasyon özelliğinin amacı görsel benzerliği matematiksel kesinlik gibi sunmak değildi. İki değişkenin birlikte nasıl hareket ettiğine ilişkin nicel bir gösterge sağlıyor, asıl mühendislik yorumunun daha hedefli yapılmasına yardımcı oluyordu.

Bu yaklaşım daha sonraki sinyal işleme ve veri analizi çalışmalarımda da devam etti: grafik son ürün değildir; ham veride hangi bölgeye ve hangi değişken ilişkisine bakılması gerektiğini gösteren araçlardan biridir.

Telemetri Verilerinin Zaman Eksenli Değerlendirilmesi

Çok eksenli grafikleme ve zaman aralığı seçimi, farklı ölçüm ölçeklerine sahip telemetri değişkenlerinin ortak bir inceleme bağlamında karşılaştırılmasını sağladı. Ölçüm değerlerinin minimum ve maksimum noktaları, olağan dışı değişimleri ve seçilen aralıklardaki birlikte hareketi, veri analizi işlevlerinin temelini oluşturdu.

Korelasyonun değerlendirilmesinde değişkenlerin ölçeği, seçilen zaman aralığı ve ölçümün fiziksel anlamı birlikte dikkate alındı. Böylece grafikleme bileşeni, zaman serilerinin mühendislik açısından yorumlanmasına yardımcı olan analiz araçlarıyla bütünleşti.

Telemetri Yazılımının Mevcut Sisteme Entegrasyonu

Telemetri uygulamasının benim için en önemli sonucu staj sonunda sunulup bırakılan bağımsız bir öğrenci projesi olarak kalmamasıydı. Geliştirdiğim bölüm modüler hale getirilerek mevcut telemetri yazılımına dahil edildi ve aktif İHA projesinin yer kontrol istasyonu yazılımında kullanılan yapının parçası oldu.

Bu süreç çalışan kod ile entegre edilebilir kod arasındaki farkı erken dönemde gösterdi. Bir modülün algoritması doğru olabilir; ancak mevcut sistemin parçası olabilmesi için veri giriş-çıkış sınırları, kullanıcı etkileşimi, hata davranışı, performansı ve diğer bileşenlerle ilişkisi de belirli olmalıdır.

Prototipten güvenilir bileşene geçiş sorunuyla ilk kez bu çalışmada karşılaştım. Aynı mühendislik problemi sonraki yıllarda geliştirdiğim üretim sistemlerinde de karşıma çıktı.

Programlama Standartları ve Statik Kod Analizi

Stajın kamuya açık biçimde en ayrıntılı belgelenmiş bölümlerinden biri programlama standartları ve statik analiz çalışmalarıdır. İlk günlerde ANSI, ISO ve özellikle MISRA C kuralları üzerinde çalışarak ayrı bir teknik doküman hazırladım.

Bu çalışma benim açımdan statik analizin sonradan eklenen bir kalite kapısı olmadığını da gösteriyordu. Statik analiz projesini MISRA C kurallarını inceleyip belgeleyerek başlatmış olmam, geliştirdiğim yazılımda uygulanabilir MISRA denetimlerini ilk önceliklerden biri hâline getirdi. Önce kuralın neyi sınırlandırdığını belgeledim; ardından tekrarlanabilir olan kontrolleri yazılım içinde gerçekledim. Böylece belgelendirme, gerçekleme ve analiz aynı geliştirme akışının parçaları oldu.

Daha sonra bu kuralların bir bölümünü otomatik kontrol etmeyi amaçlayan C tabanlı bir kaynak kod analiz programı geliştirdim. Çözüm yalnız metin içinde kelime aramıyordu. Kaynak kodu karakter karakter işlerken yorum, string/character literal, preprocessor ve normal kod durumlarını ayırmaya çalışıyordu.

Aynı karakter dizisinin bulunduğu bağlama göre farklı anlam taşıması bu ayrımı zorunlu kılıyordu. // bir string içinde görülüyorsa yorum değildir; = bir koşul ifadesinde bulunduğunda farklı bir kontrol gerektirebilir; switch bloklarında durum takibi yapılmadan break davranışı doğru yorumlanamaz.

Çalışma daha sonra C# ile kapsamlı bir masaüstü analiz aracına dönüştü. Dosya sistemi izleme, kaynak dosyaları arasında gezinme, kural ihlallerini dosya ve satır bazında gösterme, filtreleme, arka planda tarama, farklı thread'den kullanıcı arayüzü güncelleme, external process yönetimi ve zaman aşımı davranışları eklendi.

Kendi kontrollerimin yanında cppcheck ve splint gibi araçların çıktıları da process üzerinden alınarak ortak bir sonuç modeline dönüştürüldü. Böylece farklı analiz motorlarının bulguları tek bir arayüzde incelenebiliyordu.

Bu çalışma bugün güvenli yazılım mühendisliğinde kullandığım temel yaklaşımın erken bir örneğidir: tekrarlanabilir bir kural mümkünse insan hafızasına bırakılmamalı, otomatik ve denetlenebilir hale getirilmelidir.

Yazılım Doğrulama ve Entegrasyon Disiplini

Gömülü ağ haberleşmesi, aviyonik donanım-yazılım incelemesi, telemetri görselleştirmesi ve statik analiz çalışmaları farklı doğrulama düzeylerini kapsadı. Çalışma sonuçları; iletişim davranışının gözlemlenmesi, fiziksel sinyallerin incelenmesi, ölçüm verilerinin değerlendirilmesi ve kaynak kodun programlama kurallarına göre denetlenmesi üzerinden takip edildi.

Bu uygulamalar, geliştirme ve doğrulama sürecinin teknik kayıtlarla desteklenmesi, bileşen sınırlarının belirginleştirilmesi ve üretilen modüllerin mevcut yazılım yapısına uyumunun değerlendirilmesi bakımından sistem mühendisliği deneyimi sağladı.

Java ile Metadata Tabanlı Veri Tabanı Aracı

Stajın son bölümünde Java ile genel amaçlı bir veri tabanı yönetim uygulaması da geliştirdim. JDBC metadata üzerinden tabloların, sütunların ve birincil anahtarların okunması; veri türüne göre düzenleme bileşenlerinin oluşturulması ve kayıtların dinamik biçimde gösterilmesi üzerine çalıştım.

Bu çalışma doğrudan İHA sistemiyle ilgili bir ayrıntı taşımıyordu; fakat aynı dönemde farklı programlama dilleri ve problem alanları arasında geçiş yapabilmenin önemli bir parçasıydı.

Staj Çalışmalarının Sonuçları

Baykar stajı İkitelli'de gömülü ağ haberleşmesiyle başladı; TMS570/lwIP probleminin sonuçlandırılmasının ardından Keşan'da gerçek İHA sistemleri üzerinde gözlem ve geliştirme ortamına geçti. Kaynak kodun elektronik devre ve fiziksel sinyalle birlikte incelendiği bir aviyonik hata ayıklama çalışmasına katıldım; geliştirdiğim telemetri modülü de mevcut yer kontrol istasyonu yazılımına alındı.

Bu deneyim bana kritik sistemlerde güvenilirliğin tek bir kod kalitesi metriği olmadığını gösterdi. Algoritma, işletim sistemi, eşzamanlılık, haberleşme, elektronik, ölçüm, veri analizi ve kullanıcı arayüzü aynı sistemin farklı parçalarıdır.

2015'te tuttuğum staj dosyası, kamuya açık biçimde aktarılabilen çalışmaların gün gün teknik kaydını içeriyor. Buradaki özet, o kayıtlardaki gömülü ağ, aviyonik hata ayıklama, telemetri ve statik analiz çalışmalarını mühendislik bağlamlarıyla bir araya getiriyor.

2015 teknik staj dosyası (PDF)

Gömülü Sistemlerle İlgili Akademik Konular

Bu deneyimin kamuya açık teknik bağlamı mikrodenetleyiciler, işletim sistemleri ve bilgisayar mimarisi çalışmalarındaki düşük seviyeli sistem kavramlarıyla doğrudan ilişkilidir.

Aviyonik Sistemlerle İlgili Teknik İçerikler

Baykar stajındaki gömülü ağ ve aviyonik hata ayıklama deneyimi, sonraki gerçek zamanlı sistem çalışmalarım için erken bir bağlamdır. Safety-critical yazılımda zaman ve alan izolasyonunun standartlaşmış karşılığını ARINC 653 ile Zamansal ve Mekansal Bölümlendirme notunda ele alıyorum.

Stajdaki uçuş kontrolü, gömülü ağ, telemetri, statik analiz ve hata ayıklama deneyiminin daha geniş sistem bağlamını Aviyonik Sistemler ve İnsansız Hava Araçları ders notunda bir araya getiriyorum.

2015 Dönemi ve Stajın Teknik Kapsamı

2015 yılına ilişkin kurumsal program gelişmeleri, stajın gerçekleştirildiği dönemin genel tarihsel bağlamını oluşturur. Bu sayfada staj kapsamında belgelenen gömülü ağ, aviyonik hata ayıklama, telemetri ve statik analiz çalışmaları ile kurumun genel program faaliyetleri ayrı kapsamlar olarak değerlendirilmiştir.

Bu ayrım özellikle aviyonik içerikte önemlidir. Burada TMS570/lwIP çalışması, C/C# statik analiz, MISRA C incelemesi, yer kontrol telemetrisi ve hata ayıklama gibi doğrudan çalışma kayıtları korunur. Uçuş fiziği, sensör füzyonu, uçuş kontrolü, aviyonik veri yolları, DO-178C, hata toleransı ve doğrulama ise Aviyonik Sistemler ve İnsansız Hava Araçları ders notunda platformdan bağımsız akademik çerçevede ele alınır.