Yazılım kusur kestirimi eklentisinin esnek hesaplama yöntemleri ile tasarımı ve geliştirimi: kapsamlı metrik değerlendirilmesi
Design and implementation of software fault prediction plugin by using soft computing methods: comprehensive metric assessment
Yazar: EZGİ ERTÜRK GÜLER
Danışman: DOÇ. DR. EBRU SEZER
Hacettepe Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Doktora, 2016
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Yazılım kusur kestirimi (SFP), yazılım modüllerinin belli özelliklerine göre ilgili modülün kusur riski taşıyıp taşımadığının belirlenmesi işlemidir. Yazılım modüllerinin kusur eğilimli olup olmamasının belirlenmesi, yazılım projeleri için önemlidir çünkü bu sayede detaylı bir şekilde test edilmesi, yeniden yazılması veya düzenlenmesi gereken modüller önceden tespit edilebilir. Bu tez çalışmasının temel hedefi, SFP görevinin yazılım geliştirme yaşam döngüsü içinde pratik olarak yer alabilmesini sağlamaktır. Bu hedefe ulaşabilmek için ilk olarak, SFP problemi için yeni bir çözüm yöntemi olarak Bulanık Çıkarsama Sistemleri (FIS) önerilmiştir. FIS yöntemi, SFP için ilk defa bu tez kapsamında kullanılmıştır. FIS yöntemi; problemleri, bulanık mantık teorisini temel alarak modelleyen kural tabanlı bir yaklaşımdır. Modelleme yaparken uzman görüşünden yararlanması ve geçmiş etiketli veriye ihtiyaç duymaması sayesinde herhangi bir araca kolayca dönüştürülebilir. FIS yönteminin SFP alanında geçerliliğinin ispatlanması amacıyla farklı metrik kümeleriyle farklı veri kümeleri üzerinde çeşitli deneyler gerçekleştirilmiştir. Bu deneylerin sonucunda FIS yönteminin SFP problemi için güvenilir bir çözüm yöntemi olduğu kanıtlanmıştır. FIS yönteminin yanında, SFP problemine yeni bir çözüm olarak Uyarlamalı Sinirsel Bulanık Çıkarsama Sistemi (ANFIS) kullanımı önerilmiştir. ANFIS yöntemi, Yapay Sinir Ağları (ANN) ve FIS yöntemlerinin avantajlarını bir araya getiren hibrit bir yaklaşımdır. ANFIS yönteminin SFP problemine uygun olup olmadığının anlaşılabilmesi amacıyla karşılaştırmalı deneyler yapılmıştır. Bu deneylerde ANFIS yönteminin ürettiği performanslar, ANN ve SVM yöntemlerinin aynı koşullar altında ürettiği performanslarla karşılaştırılmıştır. Deney sonuçlarına göre, en iyi performansı ANN ve en kötü performansı SVM göstermiştir. ANFIS ise SVM'den çok daha iyi sonuçlar vermiştir ve ANN ile yarışabilecek düzeydedir. Yani yapılan bu çalışmayla ANFIS yönteminin SFP problemi için kullanılabilecek uygun bir yöntem olduğu ispatlanmıştır. SFP problemi için yeni çözüm önerilerinin sunulmasının ardından SFP görevinin çevik yaklaşımlarla geliştirilen yazılım projelerinin yazılım geliştirme aşamasına dâhil olabilmesi için yinelemeli bir SFP metodolojisi önerilmiştir. Bu metodolojiye göre; etiketli veri mevcut değilken SFP için FIS gibi kural tabanlı yaklaşımlar kullanılır, etiketli verinin birikmesinin ardından yazılımın her bir versiyonu için geçmiş versiyonlarla eğitilen veri güdümlü yaklaşımlar SFP görevini yerine getirir. Önerilen yinelemeli metodoloji için tercih edilen veri güdümlü yaklaşımlar ANN ve ANFIS yöntemleridir. Bu yinelemeli SFP metodolojisi, PROMISE veri deposundan seçilen çeşitli yazılım versiyonlarına ait veri kümeleri üzerinde yapılan çeşitli deneylerle test edilmiştir. Deney sonuçlarına göre, yinelemeli SFP metodolojisi başarılı bir yaklaşımdır. Yani SFP görevi, bu yaklaşıma uygun olarak yerine getirilirse, kod geliştirme aşamasına paralel bir şekilde çalışabilir ve proje ekibine geliştirmenin her anında yardımcı olabilir. Önerilen metodolojinin pratik olarak kullanılabilir olduğunun ispat edilmesi amacıyla bu metodolojinin bir eklenti olarak gerçekleştirimi yapılmış ve Eclipse geliştirme ortamına entegre edilmiştir.

Abstract:
Software Fault Prediction (SFP) means determination of the faulty modules in a software project by considering some software features. The detection of fault-proneness of software modules is quite important because the modules which require testing and refactoring activities can be determined earlier. The major objective of this study is to provide SFP implementation methodology to make it more beneficial in software development lifecycle. To achieve this, Fuzzy Inference Systems (FIS), a novel solution approach for SFP problem, is proposed as a first step and FIS approach is applied on SFP for the first time in here. Since FIS method is a rule-based approach and it does not require previously labeled data, it can be easily transformed to a tool. In order to prove validation of FIS on SFP, some experiments are performed on different metric and data sets. According to the achieved results, it has been proved that using of FIS is a reliable solution for SFP problem. Later, another novel solution method for SFP problem is proposed: Adaptive Neuro Fuzzy Inference System (ANFIS). Again, the first application of ANFIS for SFP problem is presented in this thesis. ANFIS method combines the advantages of Artificial Neural Networks (ANN) and FIS methods. Some comparative experiments are also performed to discuss the performance of ANFIS. According to the experimental results, while ANN has the best performance and SVM has the worst one; ANFIS is much more successful than SVM and it is capable of competing with ANN. After new solution suggestions for SFP problem are presented, an iterative SFP methodology is proposed in order to integrate SFP task into software development phase of software projects which are developed by using agile approaches. According to the methodology, rule-based approaches like FIS are used for SFP when no labeled data are available; after labeled data are accumulated, data-driven approaches which are trained with previous versions are preferred to detect faults of the versions being developed. The preferred data-driven approaches for the proposed iterative methodology are ANN and ANFIS methods. The methodology is tested on selected datasets from PROMISE repository. Obtained results show that the iterative SFP methodology is a successful approach. In other words, if SFP task is performed by considering this approach, it can serve in parallel with development phase and help project team during development phase. In order to prove that the proposed methodology can be used practically, the methodology is implemented as a plug-in and integrated into Eclipse development environment.