MISRA – C nedir?

Emniyet-Kritik Sistemler

Farkında olalım veya olmayalım artık hayatımızın büyük bölümünü “akıllı” diye adlandırdığımız sistemler yönetiyor. Hatta bu durum sanılanın aksine akıllı telefonların yaygınlaşması veya son dönemde gittikçe hızlanan diğer teknolojik gelişmelerden çok daha önceden başladı. Elektronik kontrollü sistemle çok uzun zamandır hayatımızda.

Örneğin otomobillerin yeni geliştirilen “kendi kendine giden (otonom)” otomobiller ile “yazılımlara” kavuşacağını veya sadece Tesla gibi firmaların ürettiği son model otomobillerin içerisinde bir bilgisayar bulunduğunu düşünüyorsanız yanılıyorsunuz. Çok uzun zamandır kullandığımız otomobilleri büyük oranda “yazılımlar” yönetiyor. Bu yönetim işi otomatik anahtarla uzaktan kapıları açıp otomobilinizin içerisinde oturduğunuz ilk anda başlıyor. Bugün ortalama bir otomobilde 40-50 bilgisayar  / işlemci sessiz sedasız çalışıyor.

Yazılımların olduğu her yerde artık hepimizin aşina olduğu gibi “yazılım hataları” da söz konusu. Bu hataları günlük hayatımızda bilgisayarımızda aniden kapanan bir yazılım, telefonumuzun şarj süresinin birden çok kısalması ya da kitlenen ve “tekrar aç kapa” yapıp kendine getirdiğimiz cihazlarla yaşıyoruz.

Peki otomobilinizle yolda giderken aniden karşınıza çıkan bir hayvana çarpmamak için frene asıldığınızda devreye giren ABS (anti-blokaj fren sistemi) sisteminin yazılımında bir hata oluştuğunu, belki de kilitlendiğini düşünebiliyor musunuz? “Şu ABS sistemini bir kapatıp tekrar açalım” deme şansımız olmadığına göre durumun vehametini görebiliyoruz değil mi? İşte bu tür sistemlere “emniyet-kritik” (safety critical) sistemler diyoruz. Yani sorun yaşadığında bunun ciddi sonuçlar oluşturabileceği ve hatta can kaybı ile sonuçlanabileceği sistemler. Tabi ki bu tür sistemlerin geliştirilmesi de ayrı bir özen ve belirli standartları zorunlu kılıyor.

MISRA C Standardı

İşte bu nedenle yazılım projelerinde özellikle de havacılık, otomotiv, savunma sanayii ve sağlık teknolojileri gibi kritik alanlarda çeşitli standartlar bulunuyor. İşte MISRA-C de otomotiv alanında ortaya çıkmış ve C programlama dilinin güvenli kullanımı amaçlanarak oluşturulmuş bir alt-kümesidir (subset).

MISRA, İngiltere Motor (otomotiv) Endüstrisi Yazılım Güvenilirliği Derneği’nin (Motor Industry Reliability Association) ilk olarak 1998 yılında yayınladığı MISRA-C adlı , C programlama dilininin güvenlik-kritik sistemlerde kullanımına yönelik kurallar rehberidir. Şu anda en güncel sürümü MISRA – C 2012’dir (MISRA C3). Bu rehber bugün otomotiv sektöründe genel kabul görmüş durumda. Ayrıca farklı sektörlerde C programlama dilinin güvenli olarak kullanımı için bu standardı temel alıyor.

C programlama dili bugün gömülü yazılımların geliştirilmesinde en çok kullanılan dildir. C dilinin sahip olduğu özellikler sayesinde donanıma yakın bir şekilde alt seviye işlemleri rahatlıkla gerçekleştirebiliyoruz. C dilinin sağladığı esneklikler aynı zamanda birçok hatanın ortaya çıkmasına da sebep olabiliyor. İşte bu nedenle C dilinin güvenli kullanım için kullanımında MISRA-C standardı ile kullanımına dair  bazı kısıtlamalar getiriliyor. Bunlara dinamik bellek kullanılmaması, makrolarla fonksiyon benzeri işlemler yapılmaması,  işaretçilerle 2 seviyeden daha fazla referanslama yapılmaması, otomatik değişkenlere başlangıç değeri atanması, bit işlemlerinin sadece işaretsiz tiplerde uygulanması gibi kuralları örnek verebiliriz.

Özellikle otomotiv konusunda çalışan firmalarımızın MISRA-C standartlarına uyum sağlamaları hem geliştirdikleri ürünlerin güvenilirliği hem de uluslararası alanda kabul görmeleri için almaları gereken standart sertifikasyonları için önemli bir konu. Ayrıca emniyet-kritik sistemlere dair sektörler dışında çalışma yapan firmalar da yazılım kaliteleri açısından MISRA-C standardından faydalanabilirler.

MISRA-C (ve C++) standardının son versiyonuna ait dökümanlar MISRA’nın kendi web sitesinden ücret karşılığı edinilebiliyor.

MISRA-C ‘nin kurallarına uyumu test etmek için statik analiz araçları kullanılabiliyor. Bu araçlar kaynak kodlarınızı tarayarak kural ihlali bulunan noktaları ve hangi kuralı ihlal ettiğini size gösterebiliyor. Buradaki önemli nokta statik analiz araçlarının sadece kodunuzun mevcut durumuna göre analiz yapabildiğini ve çalışma zamanında (runtime) oluşabilecek hataları göstermediğini bilmek.

Yerli otomobil çalışmalarının da gündemde olduğu şu günlerde endüstrideki güvenli yazılım geliştirme standartları daha da önem kazanıyor. Bu sektörde çalışan arkadaşların yazılım geliştirmenin yanında yazdığımız kodların nasıl daha güvenli olmasının sağlanacağı ve uyulması gereken standartlar hakkında bilgi sahibi olması da çok kritik. Ayrıca üreticilerin de geliştirdikleri ürünlerin uluslararası sahada kabul görmesi için bu standartların uygulanıp gerekli sertifikasyonları edinmeleri gerekiyor.

Gömülü yazılımlar giderek daha yaygın hale geldiği şu dönemde bu alandaki çalışmalara yönelik bilgilerimi paylaştığım yazımın faydalı olmasını diliyorum. Lütfen daha fazla kişiye ulaşması için yazıyı sosyal medya hesaplarınızdan paylaşmayı unutmayın.

Kaynaklar:

MISRA Web Sitesi: https://www.misra.org.uk/

Introduction to MISRA C: https://www.embedded.com/electronics-blogs/beginner-s-corner/4023981/Introduction-to-MISRA-C

Tutorial: Achieve reliable embedded code with MISRA C: https://www.embedded.com/design/prototyping-and-development/4006475/Tutorial-Achieve-reliable-embedded-code-with-MISRA-C