Zio-6a-wyk-Slajd58
Rejestr defektów(1)
W 1992 roku Ram Chillarege i jego koledzy z firmy IBM opublikowali w renomowanym czasopiśmie amerykańskim IEEE Transactions on Software Engineering tzw. ortogonalną klasyfikację defektów programistycznych.
Wyróżnili dziesięć głównych klas defektów. Po pierwsze, defekty mogą być w dokumentacji związanej z oprogramowaniem. W przypadku samodokumentujących się programów informacja o charakterze dokumentacyjnym jest zawarta głównie w komentarzach, ale także w komunikatach generowanych przez program.
Po drugie, możemy mieć do czynienia z błędami o charakterze składniowym (np. brak średnika na końcu instrukcji języka C).
Mogą też być błędy dotyczące integracji oprogramowania. Mogą one dotyczyć biblioteki podprogramów, zarządzania wersjami i tym podobnych spraw.
Kolejną grupę stanowią defekty związane z instrukcją przypisania. Mogą polegać na niewłaściwej deklaracji zmiennej, czy też niewłaściwym rozumieniu zakresu zmiennej (która instancja zmiennej X jest w danym miejscu widoczna?).
Defekty interfejsu najczęściej dotyczą deklaracji nagłówka funkcji (lub, ogólnie mówiąc, podprogramu) i jej parametrów.
W programach występuje różnego rodzaju sprawdzanie (ang. checking ). Defekty dotyczące sprawdzania mogą polegać np. na niewłaściwych komunikatach o błędach lub niewłaściwym sposobie sprawdzania danej zależności.
Mogą też być błędy dotyczące struktur danych i ich zawartości.
Inną kategorią błędów wyodrębnioną przez Chillarege’a i jego kolegów są błędy dotyczące funkcji (podprogramów). Są to różnego rodzaju błędy w obrębie funkcji, które nie są błędami interfejsu (50), czy też błędami dotyczącymi instrukcji przypisania (40). Mogą to być np. defekty związane z logiką przetwarzania w obrębie funkcji, niewłaściwym zorganizowaniem wywołań rekurencyjnych, czy też defekty dotyczące pętli (np. pętle z nieskończoną liczbą powtórzeń).
Mogą też być defekty o charakterze systemowym. Na przykład mogą w opracowywanym programie (systemie) istnieć zależności czasowe. Defekt może polegać na tym, że czasami odpowiedź systemu zostaje wypracowana zbyt późno i któraś z tych zależności nie zostaje spełniona (jest to szczególnie ważne we wszelkiego typu systemach sterowania). Mogą też być problemy z dostępna pamięcią (program może żądać większej pamięci niż dostępna w systemie).
Ostatnia kategoria dotyczy defektów środowiska. Mogą to być błędy kompilatora (tak jest - zdarzają się błędy również w kompilatorach), czy też błędy zawarte w testach. Tutaj też Chillarege umieścił błędy związane z projektem (design) całego oprogramowania (np. niewłaściwy podział kodu na moduły).