230 likes | 444 Views
YZM 320 - Yazılım Doğrulama ve Geçerlileme. Hazırlayan:Emin BORANDAĞ. Bug nedir?. 1947 yılında Harvard Üniversitesi'nde bir oda büyüklüğünde bir bilgisayar (Mark II) olarak adlandırılan bir bilgisayar geliştirildi. Mekanik röleler değiştirildi. Bu arada parlayan vakum tüpler oldu. Bugs ….
E N D
YZM 320 - Yazılım Doğrulama ve Geçerlileme Hazırlayan:Emin BORANDAĞ
Bug nedir? • 1947 yılında Harvard Üniversitesi'nde bir oda büyüklüğünde bir bilgisayar (Mark II) olarak adlandırılan bir bilgisayar geliştirildi. • Mekanik röleler değiştirildi. • Bu arada parlayan vakum tüpler oldu.
Bugs… • Defect = Bozukluk yada noksanlık. • Fault = Kusur,Hata,Arıza • Problem • Error • Incident = Olay • Anomaly • Variance = Değişiklik
Hatalı Yazılım • Geliştirilen program içerisinde kaç çeşit ve kaç tane hata vardır. • Tahmin imkanı var mı? • Kesin olarak bilinebilir mi?
Problemlerin Kaynağı-1 • Gereksinimleri Belirle: Hatalı, eksik, tutarsız gereksinim belirleme. • Tasarım: Yazılımın Temel tasarım hataları. • Uygulama: Kodlama, programlama hataları, kalitesiz programlama. • Test: Yetersiz ve eksik test. • Destek Sistemleri: Zayıf programlama dilleri, hatalı derleyici ve debugger'lar.
Problemlerin Kaynağı-2 • Yetersiz yazılım Testi: Eksik test, kötü doğrulama, hata ayıklama sorunları. • Düzeltmeler: Yazılım geliştirme ya da bakım sırasında, bazı özellikleri geliştirmek isterken yapılan hatalar.(Düzeltmek içinyapılan çalışmalarda yeni kusurların ortaya çıkması.) • Karmaşıklık katsayısının azaltılamaması.
Hatalı Yazılımın Sonuçları • İletişim Kaybı. • Müşterinin yazılıma olan ilgisinin kaybı. • 2 Taraflı güven kaybı. • Maliyet Artışı. • Zaman Aşımı • İlave hatalar.
Hatalı Yazılımın Sonuçları… • Ulaşım: Ölümler, gecikmeler, ani hızlanma, fren yetersizlik. • Güvenlik kritik Uygulamalar: Ölüm, yaralanma. • Elektrik Güç: Ölüm, yaralanma, elektrik kesintileri, uzun vadeli sağlık tehlikeleri (radyasyon). • Para Yönetimi: Sahtekarlık, gizlilik ihlali, borsalar ve bankaların, negatif faiz oranları hesabı. • Yanlış sonuçlar seçimler kontrolü. • Hapishane Kontrolü: Kilitlerin açılması sonucu mahkumlar yanlışlıkla kaçması. • Kolluk: Yanlış tutuklamalar ve hapse.
Mariner 1 22 Haziran 1962 • DO I = 1.10 yerine I=1,10 Yazılımındaki bir hata fırlatma sırasında roketin istenen yörüngeden ayrılmasına yol açtı. Kontrol yönetimi tarafından roket Atlantik Okyanusu’nda yok edildi. Kazayla ilgili inceleme yapıldığında, bir kâğıda kurşun kalemle yazılmış bir formülün bilgisayara yanlış geçirilmiş olduğu ortaya çıktı. Böylece bilgisayar roketin yörüngesini yanlış hesaplamıştı.
1982 — Sovyet Gaz Hattı • CIA’e bağlı çalışan operatörler Sibirya gaz hattını kontrol etmek üzere satın alınan Kanada bilgisayar sistemine bir böcek yerleştirdiler. Bu böcek Sovyet incelemesinden geçecek, ama sonunda işletme anında başarısız kalacak bir ekipmanı araç olarak kullandı. Yerleştirilen böceğin hatalı çalışması sonucu gezegenin tarihinde en büyük nükleeer olmayan patlama meydana geldi.
1985-1987 — Therac-25 Tıp Kazası • Bir radyasyon terapi cihazı hatalı çalıştı ve çeşitli tıbbi tesislerde ölümcül düzeyde radyasyon verdi. • Daha önceki bir tasarım geliştirilerek yaratılmuş bulunan Therac-25 iki farklı tür radyasyon verilen “ileri” bir terapi sistemi idi. Ya düşük güçlü elektron ışını (beta parçacıklar) veya X-ışınları veriyordu. • Therac-25′in X-ışınları yüksek güçlü elektronların elektron silahı ile hasta arasına yerleştirilmiş bir metal hedefe çarptırılmaları ile yaratılıyordu. İkinci bir “ilerleme” de eski Therac-20 nin elektromekanik güvenlik bağlantılarının yazılım kontrolüyle yapılmasıydı. • Bu karara yazılımın daha güvenli olduğu düşüncesiyle varılmıştı. Mühendislerin bilmediği şey hem 20 hem 25′in hiçbir resmi eğitimi olmayan bir programcı tarafından yazılmış olduklarıydı. Bir görünmez hata nedeniyle, hızlı yazan bir klavye kullanıcısı kaza yaparak Therac-25′in elektron ışınını yüksek enerjili modda, fakat metal hedef yerinde olmadan, hastaya gönderecek şekilde çalışmasına yol açabilirdi. Böyle oldu ve en az 5 hasta öldü başkaları ciddi şekilde yaralandı.
1988 — Berkeley Unix Sisteminde Tampon Bellek Taşması: • Adına Morris Worm denen ilk İnternet solucanı bir tampon bellek yetersizliği sorunundan yararlanıp, bir günden az bir zaman içinde, 2000-6000 arası bilgisayara bulaştı. Bu konuyla ilgili kod gets() olarak ifade edilen bir standart girdi-çıktı kütüphanesi fonksiyonuydu. Bu fonksiyon ağ üzerinde bir metin satırı okur. Maalesef gets() fonksiyonunun girdiyi sınırlamayla ilgili bir kontrolü yoktur ve çok büyük bir girdi solucanın bağlanabildiği makinayı kontrolüne almasını sağlayabilir.
1988-1996 — Kerberos Rasgele Sayı Üreticisi Kazası: • Kerberos güvenlik sisteminin yazarları, programın rasgele sayı üreticisini uygun bir parametreyle beslemeyi ihmal edince, yetkilendirme için Kerberos’a dayanan bir bilgisayara izinsiz giriş yapmak mümkün hale geldi.
15 ocak 1990 — AT&T Bilgisayar Ağı Kazası • AT&T’nin #4ESS uzun mesafe şalterlerini kontrol eden yazılımının yeni sürümündeki bir görülmeyen bir hata, bu dev bilgisayarların komşu makinaların birinden belirli bir mesaj almaları durumunda çökmelerine neden oldu. Kısa süre sonra, her 6 saniyede 114 şalter çöküp yeniden çalışmaya başlar hale geldi. Böylece 9 saat boyunca 60 bin kadar kişi uzun mesafeli servis kullanamaz hale geldi. Sonuçta mühendisler yazılımın eski sürümünü yüklediler.
1993 - Intel Pentium İşlemcide Sorun • Bir silikon hatası Intel Pentium bilgisayar yongasının belli bir büyüklük aralığındaki ondalıklı sayıları bölerken hata yapmasına yol açıyordu. Örneğin 4195835.0 / 3145727.0 sonucu 1.33382 yerine 1.33374 olyordu. Bu yüzde 0.006 lık bir hataydı. Bu görünmez hata az sayıda kullanıcıyı etkiledi, ama halkla ilişkiler kâbusu yarattı. Piyasaya sürülmüş 3- 5 milyon arası yonga vardı. Başlangıçta Intel daha hassas hesaplamalara ihtiyacı olduğunu kanıtlayanlar için yonga değişişkliği yapmayı önerdi; ama sonunda teslim oldu, şikâyet eden herkesin yongasını değiştirmeyi kabul etti. Sonunda bu görünmez hata Intel’e 475 milyon dolara maloldu.
4 Haziran 1996 — Ariane 5 Flight 501 • Ariane 4 roketinin çalışma kodu Ariane 5′te yeniden kullanılmıştı. Fakat Ariane 5′in daha hızlı olan motoru, roketin uçuş bilgisayarındaki bir aritmetik işlemde bir hatanın ortaya çıkmasına yol açıyordu. Hata, bilgisayar ifadeleriyle, 64 bitlik ondalıklı sayıyı 16 bitlik işaretli tam sayıya dönüştüren kodda idi. Daha hızlı motor 64 bitlik sayıların Ariane 5′te, Ariane 4 de olduğundan daha büyük olmasına yol açıyor ve böylece sayısal taşma durumu yaratıyor, o da uçuş bilgisayarının çökmesini getiriyordu. Flight 501′in destek bilgisayarı çöktü, 0.05 saniye sonra da ana bilgisayar çöktü. Çöken bilgisayarlar sonucu, roketin ana işlemcisi motorlara aşırı güç yüklenmesine yol açtı ve roket, fırlatıldıktan 40 saniye sonra, parçalandı.
Kasım 2000 — National Cancer Institute, Panama • Bir dizi kaza sonucu bir ABD firması olan Multidata Systems International tarafından yazılmış olan terapi planlama yazılımı, radyasyon terapisine girecek hastaya yollanacak uygun radyasyon dozunu yanlış hesapladı. Multidata’nın yazılımı bir radyasyon terapistinin, “blok” denen, sağlam dokuların radyasyondan korunmasını sağlayan metal kalkanın yerini bilgisayar ekranında belirlemesine olanak veriyordu.
F-18 çarpışması… • F-16 kullanılan similasyon progamındaki paremetrelerin düzgün olarak F-18 similasyonua aktarılmaması.
Yıl belirsizlikleri… • Mary Bandar 1992 yılında '88 doğumlu diğer çocuklarla birlikte, Winona, Minnesota bir anaokulu katılmak üzere davet aldı. • Mary 104 yaşında idi • ----zaman.
Tarih,Zaman ve Tamsayılar… • A Washington D.C. Hastane bilgisayar sistemi çöktü 19 eylül, 1989. • 01.01.1900
Tarih,Zaman ve Tamsayılar… • 1979 yılında ABD'de, depremlere dayanacak şekilde bir nükleer santral tasarlandı. Ancak kullanılan bir simülasyon programındaki bir program hatası yüzünden reaktör kurulmadı.
Norwegian bank ATM… • 10 kat para eksilen bakiye yok… • İngiliz bankası… • Bir yazılım kusuru yarım saat içinde yaptığı tek yönlü para trasferleri nedeni ile 2 milyar İngiliz sterlini kaybetti! Bankayı sonunda fon kurtarıldı. • Merkez bankası kur hesabı… • Avustralyalı bir adam, Sri Lanka Rupisini 104.500 $ değerine satın aldı. Ertesi gün 440.258 $ a bir başka bankaya sattı. İlk bankanın yazılım Rupi pozisyonda yanlış döviz kuru göstermişti. Bankanın açtığı davayı dolandırıcılık olmadığından ilave olan 335,758 $ saklayabilirsiniz kararı verdi!
Tartışma… • Bildiğiniz yazılım hataları… • Medya. • Kendi deneyimleriniz.