Yazılım hataları, yazılımın yaşam döngüsü içerisinde çok önemli yer tutan unsurlardan biridir.
Teorik olarak bir program tüm ayrıntıları ile sınanabilir ancak pratikte bu imkansıza yakın (imkansız diyebiliriz) bir durumdur. Çok basit bir örnek vermek gerekirse şöyle bir program düşünelim.
Kod: Tümünü seç
procedure TForm1.btnToplaClick(Sender: TObject);
var
Sayi1,Sayi2,Sonuc:Real;
begin
Sayi1 := StrToFloat(Edit1.Text);
Sayi2 := StrToFloat(Edit2.Text);
Sonuc := Sayi1 + Sayi2;
end;
Programı her bir çalıştırmanın ve çıkan sonucun doğru olup olmadığının araştırma süresi en az 10 saniye sürdüğü varsayılırsa bu tür bir işin hemen hemen olanaksız olduğu ortaya çıkar.
Bu örnek basit bir toplama işi yapan bir yazılım içindi.
Kompleks bir yazılımda tüm olasılıkları hesaba katıp tam anlamıyla bir sınama işleminin olanaksızlığı daha net bir şekilde anlaşılabilir.
Bu durumda yazılım ancak ve ancak sınırlı sayıda veri ile sınanabilir.
Sonuç olarak işletmeye alınan ve üretimi tamamlanmış her yazılım %100 hatasız çalışıyor anlamına gelmez. Her zaman bir hatanın ortaya çıkma olasılığı vardır.
Yazılım üretimi sırasında hataların, üretimin hangi aşamalarında meydana geldiğini aşağıdaki tabloda görebiliriz.
Sırasıyla:
Kod: Tümünü seç
Mantıksal Tasarım = % 20
İşlevsel Tasarım = % 15
Kodlama = % 30
Belgeleme ve Diğerleri = % 35
Yazılım üretiminde hatalar Yayılma özelliğini içerir. Yazılım üretimi aşamalı bir üretim ve her bir aşamanın çıktısı bir sonraki aşamaya girdi olduğundan ötürü herhangi bir aşamada yapılan yanlış, izleyen aşamalara otomatik olarak yansır. Bu nedenle hata düzeltme maliyetleri ilerleyen aşamalarda giderek artar. Aşağıda Çözümleme aşamasındaki birim hata düzeltme maliyeti 1 olarak alınarak, göreli olarak izleyen aşamalardaki hata düzeltme maliyetleri verilmiştir.
Kod: Tümünü seç
Çözümleme = 1
Tasarım = 5
Kodlama = 10
Test = 25
Kabul Testi = 50
İşletim = 100
