Yazılım hata kestirim yaklaşımları
Software defect prediction approaches
Yazar: ÖZKAN SARI
Danışman: PROF. DR. OYA KALIPSIZ
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Hata tahmini = Error estimation ; Kusur = Fault ; Lojistik regresyon analizi = Logistic regression analysis ; Sezimleme = Detection ; Yazılım güvenilirliği = Software reliability ; Yazılım metrikleri = Software metrics ; Ön kestirim modelleri = Prediction models

Özet:
Geliştirilen yazılımların bazı hatalar içermesi doğaldır. Önemli olan bu hataların tespit edilebilmesidir. Hataların tespitinde testler önemli bir yer tutmaktadır ancak her zaman bu yeterli değildir. Bu nedenle yazılım hatalarının ve kusurlarının tespit edilebilmesi için etkin yöntemlere ihtiyaç vardır. 
Yazılım hatalarının, yazılım geliştirme faaliyetlerinin erken safhalarında tespit edilmesinin daha az masraflı olduğu bilinmektedir. Araştırmalara göre, yazılımın teslimi sonrası bir hatanın bulunması ve düzeltilmesi, hatanın yazılımın gereksinim ve tasarım safhalarında bulunmasına kıyasla 100 kat daha masraflıdır. Yazılımdaki hataların ortalama %80'i, yazılım parçalarının (modüllerin) %20'sinde toplanmakta ve yazılımın %50'lik kısmında ise hiç hata bulunmamaktadır. Bu olguya dayanarak, koddaki hatalı olabilecek yerler kodun özellikleri incelenerek tespit edilebilirse hataların daha erken bulunması ve müdahale edilmesi mümkün olacaktır. Bu şekilde, hata eğilimli yazılım parçalarının tespit edilmesiyle test çabaları buralarda yoğunlaştırılabilecek ve eldeki kaynakların hataların bulunma ihtimali yüksek yerlere yönlendirilmesi ile hata tespitinde başarı ihtimali artacak ve hatanın erken tespiti ile büyük kazanç sağlamak mümkün olacaktır.
Hata eğilimli yazılım parçalarının tespiti ve hata kestirim faaliyetleri olarak adlandırılan bu çalışmalar bu amaca hizmet ederek, yazılımdaki hataların erken safhada tespitini amaçlamaktadır. Hata eğilimli yazılım parçalarının tespiti yönünde çok çeşitli yaklaşımlar bulunmaktadır. Bu yaklaşımlar hem yöntem hem de başarım açısından farklılıklar göstermektedirler. Tez çalışmasında, belli başlı hata eğilimli yazılım parçalarının tespiti yöntemlerinin incelenmesi ve hata kestirimi için bir etkin bir model geliştirilmesi amaçlanmaktadır. Çalışmamızda lojistik regresyon analizi tabanlı bir yaklaşım benimsenmiş ve kaynak kod metrikleri üzerine yoğunlaşılmıştır.
Ortaya konulan model çeşitli halka açık veri setleri üzerinde ve Provus Bilişim Sistemleri A.Ş. bünyesinde geliştirilen yazılımlarda sınanmış ve sonuçlar paylaşılmıştır.

Abstract:
For the software being developed, it is natural to have some degree of defects. What is important is to be able to find these defects. Testing activities are essential but testing each fragment of the software is impossible and defects still occur even after several detailed test activities. Therefore, there is a need for effective methods to detect bugs in software. 
It is well known that it's less expensive to find software defects early on in program. Research shows that finding and fixing a software problem after delivery is often 100 times more expensive than the requirements and design phase. About 80% of the defects come from 20% of the modules, and about half the modules are defect free. Considering these facts, if fault-prone modules are detected, software test efforts can be focused on these modules. By using the limited resources we have on the modules having the highest possibility to have defects, defect detection rate will increase and it will be possible to gain valuable resources by finding defects early.
Serving this purpose, activities named as detection of fault-prone modules or defect prediction, help to detect the presence of defects as early as possible in an automated fashion. These approaches differ according to their techniques and success rates. The main approaches in the field will be inspected and an effective model is aimed to be developed in order to predict software entities having bugs. In our study, an approach based on logistic regression analysis and focusing on static software code metrics is utilized.
A public bug database and an ATM monitoring software source code which is developed by Provus Bilişim Hizmetleri A.Ş., are used for the creation of the model and to find the performance of the study.