top of page
Yazarın fotoğrafıUmut Pisken

Patriot Füze Sistemi Yazılım Hatası

Güncelleme tarihi: 10 Kas 2023

Teknolojik gelişmeler arttıkça, askeri amaçlı kullanılan silah sistemlerinde yazılımın kullanım oranı ve önemi de artmaktadır. Örneğin M1 Abrams tankında 1,4 milyon satır yazılım kodu mevcuttur [1]. Yeni geliştirilen F-35 savaş uçağında ise yaklaşık 8 milyon satır yazılım kodu bulunmaktadır [2]. Silah sistemlerinde yer alan yazılımlar, emniyet-kritik yazılım sınıfına dahil edilmemekle birlikte, gerçekleştirdikleri görevlerin kritikliği sebebiyle görev-kritik yazılımlar olarak sınıflandırılmaktadırlar. Hatalı çalışmaları durumunda, ilgili görevin başarısızlıkla sonuçlanmasına yol açabilecek olan sistemler görev-kritik sistemler olarak sınıflandırılırken, bu sistemlerde yer alan yazılımlar da görev-kritik yazılımlar olarak tanımlanmaktadır. Bazı durumlarda, görev-kritik sistemlerin hatalı çalışması da can kaybına sebebiyet verebilmektedir. 1991 yılında Körfez Savaşı esnasında Patriot Füze bataryası kaynaklı yaşanan olay bu duruma örnek olarak bu yazıda incelenecektir.


25 Şubat 1991 tarihinde Körfez Savaşı esnasında Patriot Füze Bataryasındaki yazılım hatası sebebiyle, Irak tarafından ateşlenen Scud füzesi vurulamamış ve Scud füzesinin askeri barakalara isabet etmesi sonucunda 97 kişi yaralanırken, 28 asker ölmüştür [3]. Kazaya ilişkin yapılan incelemeler sonucunda, olayın sebebinin Patriot füze sistemindeki bir yazılım hatası olduğu ortaya çıkmıştır.


Patriot füze sistemi, 1960’ların ortalarında geliştirilmiş olan bir hava savunma sistemidir. Her bir bataryada bulunan radar sistemleri ile vurulması hedeflenen füzelerin otomatik takibi yapılmaktadır. Patriot füze sisteminde yer alan yazılım, oldukça hassas hesaplamalar yapıp hedefe hangi zamanda ve hangi noktada atış yapılmasına yönelik kararları verdiği için, sistemin en kritik bileşenidir. Körfez Savaşı esnasında, Patriot bataryaları, taktik balistik füzeleri (Scud füzesi gibi) tespit edip engellemek amacıyla kullanılmıştır. Sistemde yer alan yazılım, radarlardan gelen bilgiler ışığında, Scud füzelerinin karakteristik özelliklerini de dikkate alarak, bir algoritma çalıştırmakta, bu algoritmanın hesaplamalarına göre, vurulması hedeflenen füzenin bir sonraki zaman diliminde hangi bölgede olacağını hesaplamaktadır. Bu hesaplamalar sonucunda, radarlar sadece hesaplanan bölgeye odaklanmakta ve bu bölgede yer alan nesneleri takibe almaktadır. Hesaplamalar yapılırken, Scud füzesinin radar tarafından ilk tespit edildiği andaki konumu, füzenin hızı ve geçen zaman parametre olarak alınıp hesaplamalar gerçekleştirilmektedir. Zaman bilgisi, sistemin içinde yer alan saat tarafından saniyenin onda biri hassasiyetinde tutulmakta, ancak sistem hafızasında tam sayı (integer) olacak şekilde saklanmaktadır. Hesaplamalar esnasında, tamsayı(integer) olarak saklanan zaman değeri alınıp, gerçek sayıya (real number) çevrilmekte ve hesaplamalar gerçekleştirilmektedir. Sistemde 24 bit uzunluğunda yazmaçlar (register) kullanıldığı için, tamsayıdan (integer) gerçek sayıya (real number) yapılan çevrimlerde duyarlılık 24 bit seviyesinde olabilmektedir.

1/10 sayısının ikilik sistemdeki karşılığı 0,0001100110011001100110011001100… şeklinde olup, “0011” kısmı sürekli tekrar etmektedir. Dolayısıyla, ilgili sayının 24 bitlik bir yazmaça (register) konulması durumunda, sayı 0,00011001100110011001100 şeklinde depolanmakta (*) ve ikilik sistemde “0,0000000000000000000000011001100...” kadar hataya (onluk sistemde 0,000000095) sebebiyet vermektedir. Dolayısıyla sistem 1 saat açık kaldığı durumda:

  • 1 saat = 3600 saniye

  • Sistemde depolanan değer= 3600 x 10 = 36.000 (Sistemde zaman saniyenin onda biri olarak saklandığı için)

  • 1 saatte oluşan hata = 36000 x 0,000000095 = 0,0034 saniye

Sistemin 1 saat boyunca açık kalması durumunda oluşan 0,0034 saniyelik hata, algoritmada yapılan hesaplamalar sonucunda, Scud füzesinin konumunun yaklaşık 7 metre kadar yanlış hesaplanmasına yol açıyordu [3]. Sistem 100 saat açık kaldığında ise (yaklaşık 4 gün), zaman hatası 0,34 saniyeye yükseliyor ve Scud füzesinin konumu 687 metre yanlış hesaplanıyordu [3]. Olayın gerçekleştiği 25 Şubat 1991 tarihinde Patriot Bataryası 100 saatten uzun süredir açık durumda olduğu için, Scud füzesinin yerini doğru tespit edememiş ve ilgili olay meydana gelmiştir. Yazılım güncellemesi yapılana kadar, zaman hatasının oluşmasını önlemek adına, bataryalardaki sistemler belirli periyotlarda kapatılıp yeniden açılarak problemin tekrar oluşması önlenmiştir.


Körfez Savaşı esnasında yaşanan yazılım hatası kaynaklı bu olay, görev-kritik sistemlerdeki yazılım geliştirme ve doğrulama aktivitelerinin de, emniyet-kritik sistemlerdekine benzer şekilde gerekli titizlikte yapılması gerektiğini ortaya koymaktadır. Gerçek zamanlı yazılımların testleri yapılırken, yazılımı gerçek çalışma koşullarına uygun şekilde test etmenin önemi de bu örnek olay özelinde daha iyi anlaşılmaktadır. Sahada günlerce açık kalacak sistemlerin, uzun süre açık kalmaları durumunda oluşabilecek hataları tespit edebilmek adına, zorlayıcı test senaryolarıyla test edilmesi gerekmektedir. Benzer yaklaşımın, emniyet-kritik yazılımların testlerinde de mutlaka göz önüne alınması gerekmektedir.



(*) Kayan noktalı (floating-point) sayıların artimetiğine yönelik geliştirilmiş olan IEEE 754 standardı 1985 yılında çıktığı için, 1960'larda geliştirilmiş olan Patriot Füze sistemi yazılımlarında bu standart kullanılmamaktadır.


Kaynaklar:

1. Mark Schauer, "Latest and greatest M1 tank tested at U.S. Army Yuma Proving Ground", https://www.army.mil/article/214733/latest_and_greatest_m1_tank_tested_at_u_s_army_yuma_proving_ground, Erişim tarihi: 20 Ekim 2022.

2. Software Testing News, "The Pentagon Sought Us University Experts To Fix Its F-35 Software", https://softwaretesting.news/the-pentagon-sought-us-university-experts-to-fix-its-f-35-software/, Erişim tarihi: 20 Ekim 2022.

3. “Software Problem Led to System Failure at Dhahran, Saudi Arabia”, United States General Accounting Office, Şubat 1992.

629 görüntüleme1 yorum

Son Yazılar

Hepsini Gör

1 Comment


Melih Inal
Melih Inal
Aug 04, 2023

Umut Bey siteyi ve paylaşımları çok değerli buldum. Emeğinize sağlık... Melih İnal

Like
bottom of page