1962 yılında uzay yarışı tüm hızıyla devam ediyordu. ABD, gezegenler arası ilk görevlerinden birini gerçekleştirmeye hazırlanıyordu. Hedef, Venus’ün yakınından geçerek bilimsel veri toplayacak insansız bir uzay aracı göndermekti.
Bu görev için geliştirilen araç Mariner 1 idi ve proje NASA tarafından yürütülüyordu.
Ancak bu görev, yazılım mühendisliği tarihinin en ünlü hatalarından biriyle sonuçlanacaktı.
Press enter or click to view image in full size

Fırlatma Gecesi
Mariner 1’in fırlatılması 21 Temmuz 1962 sabahı planlanmıştı. Ancak menzil güvenlik sistemlerinde yaşanan teknik sorunlar nedeniyle geri sayım birkaç kez durduruldu.
- Geri sayım 23:33'te yeniden başlatıldı
- Fırlatmadan 79 dakika önce bir sigorta attı
- Fırlatma iptal edildi ve süreç tekrar başlatıldı
Bir gün süren gecikmelerden sonra roket nihayet 22 Temmuz 1962 saat 09:21:23’te Cape Canaveral Launch Complex 12’den havalandı.
İlk dakikalar tamamen planlandığı gibi ilerledi.
Ancak birkaç dakika sonra işler ters gitmeye başladı.

Roketin Rotadan Sapması
Roket, Atlas-Agena taşıyıcı sistemiyle fırlatılmıştı.
İtici roket aşaması tamamlandıktan sonra yönlendirme sistemi garip davranmaya başladı:
- Roket sağa sola savrulmaya başladı
- Uçuş yolu planlanan rotadan aşağı ve sola kaydı
- Atlantik üzerindeki yoğun gemi trafiği için risk oluştu
Saat 09:26:16’da, ikinci aşamanın ayrılmasına yalnızca 6 saniye kala, menzil güvenlik görevlisi kritik kararı verdi.
Roket kendi kendini imha etti.

Sorunun Araştırılması
Roketin patlatılmasının ardından mühendisler hemen soruşturmaya başladı.
Başlangıçta sorun donanım arızası gibi görünüyordu.
Ancak Jet Propulsion Laboratory mühendisleri yalnızca 5 gün içinde gerçek nedeni ortaya çıkardı:
Bir yazılım mantık hatası.
Hatanın Teknik Sebebi
Atlas roketi uçuş sırasında iki farklı veri kaynağı kullanıyordu:
- Yer radarlarından gelen verile
- Roket üzerindeki hız sensörleri
Sistem normalde radar sinyalinde kısa süreli kesinti olursa şu şekilde davranmalıydı:
- Radar verisini geçici olarak yok saymak
- Önceden hesaplanmış uçuş yoluna devam etmek
Bunu sağlayan şey uçuş algoritmasındaki bir işaretti:
R-bar
Bu işaret, verinin filtrelenmesini sağlıyordu.
Fakat yazılım programa aktarılırken bu karakter yanlışlıkla silindi.
Sonuç:
Radar verisindeki küçük gürültüler gerçek yön değişimi sanıldı.
Roket sürekli yanlış düzeltmeler yapmaya başladı.
Bu durum giderek büyüyen bir kontrol kaybına yol açtı.
Farazi Kod Örneği
Gerçek uçuş yazılımı çok daha karmaşık olsa da mantık şu şekilde özetlenebilir.
Doğru Mantık
velocity = radar_measurement()
# R-bar filtresi (veri gürültüsünü filtreler)
filtered_velocity = smooth(velocity)
if guidance_lock_lost:
ignore(filtered_velocity)
else:
course_correction(filtered_velocity)
Bu durumda radar verisi filtrelenir ve sistem stabil çalışır.
Hatalı Mantık (Mariner 1)
Filtreyi temsil eden karakter yanlışlıkla silinince sistem şu hale geldi:
velocity = radar_measurement()
# filtre yok!
filtered_velocity = velocity
if guidance_lock_lost:
ignore(filtered_velocity)
else:
course_correction(filtered_velocity)
Radar sinyalindeki küçük dalgalanmalar bile gerçek yön değişimi gibi algılandı.
Sonuç:
küçük gürültü -> yanlış düzeltme yanlış düzeltme -> yeni hata yeni hata -> daha büyük düzeltme
Bu geri besleme döngüsü roketin giderek kararsız hareket etmesine neden oldu.
Tarihin En Pahalı Karakterlerinden Biri
Bu küçük hata Amerika’nın ilk gezegenler arası görevini yok etti.
Toplam maliyet:
- 18.5 milyon dolar (1962)
- Günümüz değeriyle yaklaşık 196 milyon dolar
Bilim kurgu yazarı Arthur C. Clarke bu olay için şu ifadeyi kullandı:
“Tarihin en pahalı tire işareti.”
Aslında eksik karakter bir R-bar olsa da bu olay yıllarca böyle anıldı.
Press enter or click to view image in full size

Arthur C. Clarke
İlginç Bir Tesadüf
Bu tür bir yazılım hatası daha sonra tekrar yaşandı.
1988 yılında Sovyet uzay aracı Phobos 1 de yanlış yazılmış bir komut yüzünden kontrolünü kaybetti.
Yani uzay görevlerinde yazılım hatalarının etkisi çok uzun süre hissedildi.
Press enter or click to view image in full size

Phobos 1
Mariner Programının Devamı
Neyse ki görev tamamen iptal edilmedi.
Mariner 1’in kardeş aracı Mariner 2 hazırdı.
- 27 Ağustos 1962’de fırlatıldı
- 14 Aralık 1962’de Venüs’ün yakınından geçen ilk uzay aracı oldu
- Dünya’ya önemli bilimsel veriler gönderdi

Yazılım Mühendisliği İçin Çıkarılan Dersler
Mariner 1 kazası yazılım mühendisliğinde önemli değişikliklere yol açtı.
Bu olaydan sonra:
- Kritik yazılımlar için çok katmanlı doğrulama
- bağımsız kod incelemesi
- simülasyon tabanlı test
- fail-safe yazılım tasarımı
gibi yöntemler standart hale geldi.
Bu prosedürler daha sonra Apollo Program görevlerinde de kullanıldı ve Ay inişlerinin güvenli bir şekilde gerçekleşmesine katkı sağladı.

Yorumlar (0)
Yorum yapmak için giriş yapın veya kayıt olun.
Henüz yorum yok. İlk yorumu siz yapın!