top of page

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

Yazarın fotoğrafı: Umut Pisken
Umut Pisken
26 Eki 2022
3 dakikada okunur

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.

 
 
 

4 Yorum


bentiecesav.a.ge54.62
2 gün önce

https://soicaulodechuan.mobi/du-doan-so-de-hom-nay mình thấy bài này có mục lục đánh số nên đọc lướt cũng tiện ghê. Thường gặp bài dài là mình hơi lười, chỉ muốn biết có những phần gì trước rồi mới đọc tiếp, chứ kéo mãi mà chưa gặp đoạn cần tìm thì dễ bỏ ngang lắm. Ở đây nhìn tên mục là hình dung được thứ tự nội dung, không phải dò từng đoạn. Mình chưa xem kỹ phần dự đoán nên không nói chuyện đúng sai của các con số nhé. Có để ý là bài cho xem kết quả miền Bắc hôm qua rồi mới tới phần dự đoán hôm nay, cách đặt vậy đọc thấy liền mạch hơn. Riêng trong mục lục, phần…

Beğen

melaniemarshall6592
27 Ağu

kèo nhà cái hôm nay mình thấy bạn bè nhắc nhiều quá nên tiện tay vào thử coi sao. Mình không rảnh đọc kỹ từng dòng đâu, chủ yếu xem giao diện có dễ dùng không thôi. Vào cái là thấy trang sắp xếp khá gọn, chia khối nhìn rõ ràng nên kéo xuống không bị rối. Mình thích nhất là cách họ trình bày thông tin theo dạng bảng cột, nhìn một phát là hiểu ý chính, khỏi phải nheo mắt tìm. Menu cũng để chỗ dễ thấy, bấm qua lại vài mục thấy phản hồi nhanh, không kiểu lạc đường. Nói chung lướt nhanh đã thấy ổn vì các khối nội dung và bảng cột trên trang nhìn…

Beğen

bentiecesav.a.ge54.62
21 Ağu

Bài viết dễ thương và đọc cuốn, cảm ơn bạn đã chia sẻ. Mình cũng hay theo dõi chủ đề này, nhất là cách người ta giữ nhịp và không khí khi tập luyện hay lên sân khấu. Dạo này mình có gom vài ghi chú và ví dụ vào một trang riêng để tiện xem lại và khỏi thất lạc. Bạn nào cần tra nhanh có thể xem thêm tại https://www.intensedebate.com/people/Soicauxsmbpro1

Beğen

Melih Inal
Melih Inal
04 Ağu 2023

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

Beğen

Copyright © Mehmet Umut Pişken | 2026 © HER HAKKI SAKLIDIR

bottom of page