Bilgisayar mühendisliği ve elektronik mühendisliği öğrencilerinin en çok tartıştığı konu şudur: “Elektronik mühendislerinin yazılım ile uğraşmaları mantıklı mıdır?” ya da ” Proje çalışmalarında yazılım kısmı tamamen bilgisayar mühendislerine mi bırakılmalıdır?”
Geçmişte veya bugün, elektronik mühendisleri için yazılım bilgisine sahip olmak bir artı değildir. Aksine, elektronik mühendisi sıfatını taşıyabilmeniz için yazılım bilgisine sahip olmanız şarttır.
Elektronik Mühendisi kime denir?
Elektronik mühendisinin çalışma alanları çok değişkenlidir. Haberleşme, tıp, ulaşım, inşaat, bilgisayar , optik sistemler, mikrodalga sistemleri… Yani bilim uygulamalarının olduğu her alanda elektronik mühendisleri görev alır.
- Elektronik mühendisi görev aldığı projenin elektronik tasarımını, sistem tasarımını ya da sistem analizini yapabilir.
- Sistemlerin rutin kontrolünde görev alabilir ve ya bu sistemlerin geliştirilmesinde aktif rol alabilir.
- Kullanılan sistemle ya da kullanılacak olan sistemle ilgili ARGE faaliyetlerinde bulunabilir.
- Kalite kontrolünde bulunabilir.
Peki neden Elektronik Mühendisi yazılım becerisine sahip olmak zorunda?
Elektronik sistem tasarımlarında aktif rol alan elektronik mühendisi, doğal olarak kendi yarattığı sistemin donanımsal olarak yeteneklerini veya zaafiyetlerini en iyi bilen kişidir. Çoğu bilgisayar mühendisi ya da yazılım mühendisi, sizin yarattığınız elektronik kartın donanımsal becerisini tamamiyle çözümleyemez. Hali hazırda çözümlememelidir. Ve donanımsal bir tasarımdan ve ona yazılacak yazılımdan bahsediyorsak bunun adı gömülü sistemdir.
Elektronik mühendisini dünya piyasasında en aktif rolü üstlenmesini sağlayan becerisi gömülü sistem bilgisidir. Gömülü sistemlerin mantığı basittir. Belli görevleri yerine getirmek için programlanmış mikroişlemciler ya da mikrodenetleyiciler tamamiyle kullanıcıya istediği doğrultuda ve amaca yönelik hizmet eder. Gömülü sistem yazılımlarına firmware(donanım yazılımı) denir ve bu yazılımlar tamamen silinemez değildir. Ve bilin bakalım bu donanım yazılımlarının yaratıcıları kimlerdir? Tahmin edeceğiniz üzere sistem yazılımının sahibi elektronik mühendisidir.
Gömülü sistemler bir çok dil kullanılarak programlanabilir.
- Makine kodu
- Assembly
- C, C++, Java, Ada
- Visual Basic, Access
Bunların içinde elektronikçilerin en çok kullandığı dil C dilidir. Ve elektronikçiler buna Gömülü C (Embed C) derler. C dili orta seviye bir dildir ve donanım kontrolünde olduça başarılıdır. C dilinde hata ayıklamak çok daha basittir ve Gömülü C içerisine Assembly kod gömülmesini de destekler. Yani kritik görülen noktalarda Gömülü C içerisine lineer kod gömülmesine de olanak verir.
Başarılı bir elektronik mühendisi C ile yetinmeli midir? Tabi ki hayır. Bugün kablo testlerinden tutun donanım tarama testlerine, operasyonel testlerden güvenlik testlerine, batarya testlerinden bağlantı iletişim teslerine kadar tüm sistem testleri ve uygulamaları gömülü sistem yazılımlarıyla uygulanmakta. Tüm bunlar belli arayüzler hazırlanarak kullanıcıya sunulmakta. Ve maalesef Embed C ile arayüz hazırlayamazsınız. O zaman elektronik mühendisi ne yapacak? Nesne tabanlı programlama bilecek.
Tüm bu yazılım bilgisi yeterli mi? Tabi ki hayır. Elektronik mühendisi gömülü sistem projelerinde kullanmak üzere işletim sistemlerine de aşina olmalıdır. Embedded Linux en çok aranan özelliklerden bir tanesi. Ama benim öngörüm gelecekte tüm gömülü sistem projelerinde RTOS( gerçek zamanlı işletim sistemleri) kullanılacağı. Bugün çoğu savunma sanayi ve medikal projelerinde elektronik mühendisleri RTOS kullanmakta.
Bilgisayar Mühendisi vs Elektronik Mühendisi
İyi bir mühendislik projesinde iyi bir mühendis grubuyla çalıştığınızı varsayalım. İyi yazılım bilginiz olduğunu ve iyi bir elektronik mühendisi olduğunuzu varsayalım. Ne kadar iyi yazılım bilgisine sahip bir elektronik mühendisi olursanız olun, iyi bir bilgisayar mühendisinden her zaman yardım alabilirsiniz. Sizin kullandığınız Embed C ya da hangi dil olursa olsun, dil yapısına sizden daha çok hakim olacaktır. Algoritma oluşturmada ya da dil yapısında tıkandığınız noktalarda gurur meselesi yapmayın. Her zaman iyi bir bilgisayar mühendisi programlama altyapısına sizden daha tecrübeli olacaktır. Çünkü siz mühendislik veriminizin belki yüzde 20sini yazılım kısmına ayırırken, bilgisayar mühendisi tüm verimini yazılıma ayırmaktadır. Ve bu alanda sizden daha kolay çözüm getiren kişi olacağı kesin.
Proje için ürettiğiniz elektronik kartın gömülü sistem yazılımını asla bir bilgisayar mühendisine tamamen emanet etmeyin. Unutmayın çoğu bilgisayar mühendisi donanımdan bihaberdir. Örneğin bir motor sürülen devrede bazı yazılımsal hatalar motorların yanmasına ve ya motordan gelen ters akımla devrenin yanmasına sebep olabilir. Ve buna sebebiyet verebilecek yazılım hatalarını bir bilgisayar mühendisi tahmin edemez. Hatta devreniz yanıp kül olduktan sonra hata tespitini de yapamaz. Elinizde ki devrenin hangi hata durumunda hangi modülünün arızalanabileceği konusunda en iyi bilgi ve beceri sahibi siz elektronik mühendisleridir.
Eğer elektronik mühendisliği öğrencisiyseniz/yeni mezunsanız ve yazılım bilginizi eksik hissediyorsanız meraklanmayın. Sizler 7-8 senede kimsenin başaramayacağı şeyleri 4-5 senede başardınız. Herkes mühendis olamaz. Her mühendis elektronik mühendisi olamaz. İyi birer yazılımcı olmanız en fazla 2 senenizi alacaktır.