EMNİYET KRİTİK YAZILIMLAR VE SERTİFİKASYON
Hatalı çalışmaları durumunda can kaybına, ciddi yaralanmalara veya çevrenin ciddi zarar görmesine yol açabilecek olan sistemler emniyet kritik sistemler olarak sınıflandırılmaktadırlar. Bu sistemlerde kullanılan yazılımlar da emniyet kritik yazılım olarak nitelendirilmektedirler. Aviyonik sistemlerde kullanılan yazılımlar da hatalı çalışmaları durumunda can kaybına ve ciddi yaralanmalara sebebiyet verebilecekleri için, emniyet kritik yazılımlar olarak sınıflandırılmaktadırlar.
Yazılım hataları, yazılım geliştirme esnasında ortaya çıkan sistematik hatalardan kaynaklanmaktadırlar [1]. Yazılım hataları, fiziksel parçalarda görülebilen ve kullanıma bağlı yıpranma-aşınma kaynaklı oluşan rastsal hatalardan(Random Failure) farklıdırlar. Emniyet kritik yazılım geliştirme standartları da bu durumu göz önüne alarak, sistematik hataları önlemek üzere yazılım geliştirme süreçlerine yönelik belirli gereksinim ve kısıtlamaları tanımlayacak şekilde geliştirilmiştir [1]. Bu yaklaşıma göre, öncelikle sistem emniyet analizleri yapılarak yazılımın içinde çalışacağı sistem açısından emniyet kritiklik seviyesi belirlenmekte, sonrasında ise bu kritiklik seviyesini sağlamak üzere kullanılacak olan standardın istediği yazılım yaşamdöngüsü süreçleri işletilmektedir.
Yazılımların güvenirliğini testler veya güvenilirlik analizleri ile tespit etmek mümkün olmadığı için, tasarım teminatı kavramı ortaya atılmıştır [2]. Tasarım teminatı ile gereksinim, tasarım ve geliştirme aşamalarında ortaya çıkabilecek hataların sistem emniyeti açısından kabul edilebilir seviyeye indirildiğini garanti altına almak için uygulanan planlı ve sistematik aktiviteler kastedilmektedir[3]. Tasarım teminatı yaklaşımı, yazılım geliştirme esnasında uygulanacak süreçler ne kadar titiz ve sıkı olursa yazılımda o derece az hata kalacağı varsayımına dayanmaktadır[2]. Bu yaklaşımda, yazılımın kritiklik seviyesi yükseldikçe, uygulanan geliştirme ve doğrulama aktiviteleri nicelik ve nitelik açısından artmaktadır.
Aviyonik yazılım sertifikasyonunda kullanılan DO-178B/C rehber dokümanı da, bu yaklaşım çerçevesinde hazırlanmış bir dokümandır. DO-178B/C dokümanında, sistem seviyesi emniyet analizlerinden gelen yazılım tasarım teminatı seviyelerine ilişkin yazılım yaşamdöngüsü boyunca karşılanması gereken amaçlar belirlenmiştir. Bu sebeple, DO-178B/C’ye uyumlu olarak yazılım geliştirilmesi, ilgili yazılımın kendisine atanmış olan fonksiyonları, yine kendisine atanmış olan tasarım teminatı seviyesinin beklediği güvenilirlik seviyesinde sağladığını garanti altına almaktadır [4].
DO-178B/C rehber dokümanının tanımladığı yazılım yaşamdöngüsü amaçlarının emniyet ile doğrudan bir ilişkisi yoktur [4]. Yazılım emniyetine ilişkin analizler, sistem seviyesinde sistem emniyet analizleri ile yapılmaktadır. Dolayısıyla, sistem seviyesinde yapılan bu emniyet analizlerinin yanlış yapılması durumunda, yazılıma yanlış emniyet seviyesi atanabilir ve ilgili yazılım DO-178B/C'de yer alan amaçları sağlayacak şekilde geliştirilse bile aslında emniyetsiz olacaktır.
DO-178B/C rehber dokümanında, yazılıma sistem seviyesinden atanmış olan gereksinimlerin doğruluğunu sorgulayan bir amaç tanımlı değildir [4]. Yazılım tarafından karşılaması gereken sistem gereksinimlerinin doğrulanması konusu SAE ARP4754A, “Guidelines for Development of Civil Aircraft and Systems” standardı tarafından sistem seviyesinde adreslenmektedir. Bu sebeple, sistem seviyesinde ilgili süreçlerin sağlıklı işletilmemesi sonucunda, sistem gereksinimleri belirlenirken hatalar yapılabilir ve yazılımın karşılaması gereken gereksinimler yanlış olarak atanabilir. Bu durumda da, DO-178B/C tam olarak uygulansa bile bu yanlış gereksinimler doğru şekilde yazılıma kodlanmış olacaktır. Bu örneklerden hareketle, sadece DO-178B/C rehber dokümanında yer alan amaçları tam olarak sağlamanın geliştirilecek olan yazılımı emniyetli kılmaya yetmediği görülmektedir.
SONUÇ
DO-178B/C rehber dokümanı, aviyonik yazılım geliştirmede dünya genelinde kabul görmüş ve kullanılan bir dokümandır. Geçmişte gerçekleşmiş uçak kazası verileri incelendiğinde, doğrudan yazılım kaynaklı bir uçak kazası olmaması sebebiyle, sektör genelinde sadece DO-178B/C rehber dokümanında yer alan amaçları sağlamanın, bir yazılımı emniyetli yapacağına ilişkin yanlış bir algı oluşmuştur. DO-178B/C diğer emniyet kritik yazılım geliştirme standartları gibi, tasarım teminatı yaklaşımını temel alarak hazırlanmış bir rehber dokümandır. DO-178B/C, yazılım yaşamdöngüsüne ilişkin karşılanması gereken amaçları yazılıma atanmış olan tasarım teminatı seviyelerine göre tanımlamaktadır. DO-178B/C rehber dokümanında tanımlanmış olan amaçların hiçbiri doğrudan emniyet ile ilişkili değildir. Bu sebeple, bir yazılımın emniyetli olabilmesi için öncelikli koşul, sistem seviyesinde yapılacak olan emniyet analizlerinin doğru yapılıp yazılıma ilişkin emniyet seviyesinin doğru belirlenmesi ve yazılımın karşılaması istenen gereksinimlerin sistem seviyesinde doğru olarak belirlenmesidir. Ancak bu şartlar sağlandıktan sonra, DO-178B/C doğru olarak uygulanırsa, emniyetli bir yazılım ortaya çıkacaktır. Sonuç olarak, DO-178B/C rehber dokümanı, sistem seviyesinden gelen emniyet ile ilişkili gereksinimlere uygun bir yazılım üretilmesini sağlayan yardımcı bir doküman olarak düşünülmelidir. Sistem seviyesi süreçlerin sağlıklı olarak işletilmediği durumda, sadece DO-178B/C'yi uygulamak üretilecek yazılımın emniyetli olmasını sağlamayacaktır.
Kaynaklar:
[1] Ian Dodd, Ibrahim Habli, “Safety Certification of Airborne Software:An Empirical Study”, Reliability Engineering and System Safety, 98, Sayfa 7–23, 2012.
[2] Leanna Rierson, “Developing Safety-Critical Software”, CRC Press, 1st Edition, 2013.
[3] SAE ARP4754A, “Guidelines for Development of Civil Aircraft and Systems”, 2010.
[4] Cary R. Spitzer, Uma Ferrell, Thomas Ferrell, “Digital Avionics Handbook”, Third Edition, CRC Press, 2015.
Yorumlar