27 Mayıs 2011 Cuma

Yazılım Geliştirirken Kara Kutu Kullanmak

Öncelikle izlediğim bir belgeselden bahsetmek istiyorum. 1984 yılında Rusya’da bir yolcu uçağı hiç acil durum rapor etmeden düşmüş. Uçaktan kurtulan olmamış. Uçağın kara kutusundaki ses kayıtlarından kaptanın, koltuğuna 15 yaşındaki oğlunu oturttuğu belirlenmiş. Kazanın nedeni bir çocuk gibi gözükmesine rağmen, hava yolu şirketi bu kadar deneyimli bir kaptanın bu şekildeki ufak bir hata ile uçağı düşürebileceğine inanmayarak tarafsız bir kaza kırım heyeti oluşturarak araştırma başlatmış.

Heyet, sadece ses kayıtlarından yola çıkarak uzman bir kaptan ve bir simülasyon yardımı ile uçağı çocuk gibi uçurmaya çalışırlar. Sonundaki bulgular aslında hayret vericidir. Çocuğun farkında olmadan yaptığı hareket, pilotun güvendiği otomatik pilotu hiç uyarı vermeden devre dışı bırakmış fakat bütün göstergelerin otomatik pilotta gibi gözükmesine sebep olmuştur. Aslında o çocuk uçak tasarlanırken ya da pilotlara eğitim verilirken gözden kaçan bir olasılığı bulmuş ve bir kazaya sebebiyet vermiş.

Geliştirdiğimiz programlar da bunun gibi değil mi? Bizler geliştirirken bir sistem dahilinde geliştiririz. Bazı hataları yazılım aşamasında kontrol ederek önleriz. Fakat, kullanıcı farkında olmadan sistem dışarısına çıkar ve hata oluşmasına sebebiyet verir. Hataları kaydediyorsanız bir nevi olayı çözmeniz kolaylaşacaktır fakat bazı zamanlar oluşan hatadan daha çok hata öncesinde nelerin olduğudur. Aynen uçak kazasındaki gibi…

Try

‘kodlar burada

Catch ex As Exception
Hata_Kaydet("form","bölüm",ex.tostring)
End Try

şeklinde yazar ve oluşan hataları Hata_Kaydet fonksiyonu ile bir log dosyasına kayıt ederim.

Bundan sonra kod öbeğine başlarken kullanıcının neler yaptığını ve ilgili bazı değişkenlerin durumlarını kaydeden bir fonksiyonla başlayacağım. Bu da benim kara kutu mantığım olacak :)

Kompleks tasarımlar yapılırken ne kadar dikkat edilse de gözden kaçan olasılıklar olabiliyor ve bazı durumlarda geri dönülemez zararlar verebiliyor. Sanırım, bu hataları bulmanın en önemli noktası da sistemi bilmeyen ve farklı kişilere güvenli bir şekilde test ettirmek olsa gerek ;)

Hiç yorum yok:

Yorum Gönder