Tez Arşivi

Tez aramanızı kolaylaştıracak arama motoru. Yazar, danışman, başlık ve özetlere göre tezleri arayabilirsiniz.


İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Anabilim Dalı / Bilgisayar Mühendisliği Bilim Dalı

2018

A stepwise approach for bug fix time prediction

Adımsal bir yaklaşım ile hata çözüm süresi tahmini

Bu tez, YÖK tez merkezinde bulunmaktadır. Teze erişmek için tıklayın. Eğer tez bulunamazsa, YÖK Tez Merkezi'ndeki tarama bölümünde tez numarasını arayabilirsiniz. Tez numarası: 541507

Tezi Bul
Özet:

Yazılım projesinin bakımı proje sürdürülebilirliği ve proje kalitesi açısından önemli bir konudur. Büyük ve gelişen sistemlerin, projelerin günden güne kullanıcı sayısı artmakta ve buna bağlı olarak geliştirmelerin, entegrasyonlar artması kaçınılmaz bir hal almaktadır. Şüphesiz ki bu tip artışların neticesinde yazılım tabanlı hatalar oluşmakta ve bu hataların bakımı, maliyeti projenin büyüklüğü arttıkça zorlaşmaktadır. Bu yüzden yazılım projelerinin bakımınında önemli konularından birisi yazılım tabanlı oluşan hatalardır. Bu hatalar sistemin durmasına, farklı bir şekilde çalışmasına ve hatta sistemin durmasına sebep olabilir. Yazılım tabanlı hatalar ile ilgili literatürde çeşitli çalışmalar mevcutttur. Tekrarlayan hataları bulma, hata çözüm süresi tahmin etme, hatayı atayacak kişiyi seçmek bu konulardan bazılarıdır. Bu tezde hata çözüm süresi, yani hatanın yaratıldığı zaman ile çözüleceği zaman arasında ki geçen süre tahmini yapılacaktır. Hata çözüm süresi ile ilgili literatürde birçok çalışma mevcuttur. Bazı çalışmalar bu değeri sürekli, yani tam değer olarak tahmin etmeye çalışır, diğer çalışmalar ise bu çözüm süresi için çeşitli aralıklar belirleyip, çözüm süresinin hangi aralığa dahil olacağını belirlemeye çalışır. Buna kategorisel sınıflandırma denir. Bu çalışmalarda hata ile ilgili çeşitli özellikler kullanılır. Hatanın zorluğu, özelliği, yaratıcısı veya hatanın metinsel özeti, açıklaması örnek olarak gösterilebilir. Mevcut hata özelliklerine ek olarak yeni metrikler hesaplanabilir. Bu çalışmalar çeşitli algoritmalar kullanmaktadırlar. Random Forest, Decision Tree, Naive Bayes bu algoritmalardan bazıları olarak örneklendirilebilir. Bu algoritmalara hata özellikleri dahil edilerek hata çözüm süresi tahmini yapılır. Bazı çalışmalar metinsel özellikleri kullanarak hatalar arasında benzerlik skoru hesaplarlar. Benzerlik skoru yüksek olan hataların çözüm süresinin de yakın olması beklenmektedir. Bu benzerlik skoru bazı çalışmalarda Lucene altyapısını kullanılarak hesaplanmıştır. Lucene çeşitli skor hesaplama yöntemleri barındırmaktadır. Bazı çalışmalar hata ile ilgili özelliklerden yararlanarak çözüm süresi tahmini yaparlar, bir kısmı hatanın metinsel özelliklerini kullanır ve diğerleri ise hatanın özelliklerini ve metinsel bilgilerini birleştirerek kendi modelleri kurup hesaplama yaparlar. Bizim çalışmamız da ise hatanın özellikleri ve metinsel bilgileri beraber kullanılarak bir model kurulmuştur. Modelimizde öncelikle mevcut bir hata için var olan çözülmüş hatalardan metinsel olarak skoru olan hatalar filtrelenir. Benzer hatalar benzer çözüm süresine sahip olur anlayışından yola çıkarak bu filtrelenen listede ki hatalar yeni oluşan hata ile yakın çözüm süresine sahip olması beklenmektedir. Bu adımdan sonra oluşan filtrelenen veri kümesi ile hata özellikleri kullanılarak hata çözüm süresi kategorisel olarak hesaplanmaktadır. Hızlı, çok hızlı, yavaş ve çok yavaş olarak 4 farklı kategorimiz mevcuttur. Bu kategorilerin aralıkları ise veri kümemizin çözüm süresi dağılımının çeyreksel aralıklarından hesaplanmıştır. Çalışmamızda üç farklı algoritma uygulanmıştır bunlar Random Forest, Logistic Regression ve AdaBoost algoritmalarıdır. Metinsel olarak benzerlik hesabında ise literatürde kullanıldığı için Lucene altyapısı kullanılmıştır. Lucene benzerlik hesabı için literatürde sıkça kullanılan TF-IDF'ın yerine, BM25 benzerlik hesaplama yöntemi seçilmiştir. Metinsel benzerlik hesaplamasın da hatanın özet ve açıklama kısmının ağırlık değerleri eşit ağırlıkta verilmiştir. Buna ek olarak, yeni oluşturulan modelin daha önceki modellerle karşılaştırmasını yapmak amacıyla, kendi modelimize ek olarak iki ayrı model daha kuruyoruz. Bu modellerden birincisine filtreleme yapmadan algoritmamızı uyguluyoruz. Farklı algoritmaların etkisini görmek amacıyla Random Forest, Logistic Regression ve AdaBoost algoritmalarını uyguluyoruz. Diğer ikinci modelimiz ise Lucene metinsel skoru hesaplaması yaptıktan sonraki filtrelenmiş küme üzerinden hesaplamaları yapmak. İkinci modelimizde oluşan her bir küme içinde bulunan hatalar için skor değeri mevcuttur. Her bir küme içerisindeki skorlar normalize ediliyor ve bu normalize edilmiş değerler içerisinde eşik değeri tanımlanıyor. Örnek olarak eşik değeri 0.6 seçilirse, skoru 0.6 da dahil olmak üzere bu değerden büyük hatalar alınıyor ve bu hataların kategorisel olarak çözüm sürelerinin çok olduğu sınıf tahmin edilen çözüm süresi olarak ele alınıyor. Bu iki model literatürde daha önce uygulanmış yöntemlerdir ve bizim önerdiğimiz yöntem için bir taban oluşturmaktadır. Önerilen model de öncelikle ikinci modelimiz de ki metinsel işlem uygulanıyor ve skoru bulunan hatalar filtreleniyor. Bu filtrelenmiş sete birinci modelimiz de ki çeşitli algoritmalarımız uygulanıyor ve bir çözüm süresi tahmini yapılıyor. Bu işlemler üçüncü modelimizi yani önerilen modelimizi oluşturmaktadır. Oluşturulan üç modelin sonuçları karşılaştırılıyor. Hesaplamalar da açık kaynaklı Mozilla projesinin JavaScript Engine bileşeni kullanılıyor. Aynı zamanda telekomünikasyon sektöründe faaliyet gösteren özel bir şirketten veri kümesi alınıyor ve bu işlemler uygulanıyor. Çözülmüş hatalar üzerinden hesaplama yapıldığı için statüsü RESOLVED, VERIFIED, CLOSED ve çözüm değeri FIXED olan hatalar ele alınıyor. Bir hata çözümlenip tekrar açıldıysa sonucu etkileyeceği için bu hatalar da veri kümesinden çıkarılmıştır. Bunun neticesinde Mozilla veri kümesinden 15513 tane ve özel veri kümesinden ise 1166 tane hatamız bu çalışmada ele alınıyor. Buna ek olarak hata çözüm süresi daha önceki çalışmalar da hatanın yaratıldığı zaman ile son değişiklik yapılan zaman arasındaki süre olarak hesaplanmaktadır. Bu çalışmada ise hatanın yaratıldığı zaman ile statüsünün RESOLVED olması arasında ki geçen süre olarak hesaplanmıştır. Bu çalışmada önerilen model sonuçları Mozilla veri kümesi için farklı algoritmalar da farklı sonuçlar vermiştir. Bulunan doğruluk değerleri arasında çok fark olmamıştır. İkinci modelimiz için eşik değerinin artması doğruluk değerini arttırmıştır. Aynı zamanda ikinci modelin doğruluk değeri birinci modele göre daha düşüktür ve bu veri kümesi için metinsel analiz yapmanın bir etkisi yoktur. Hatanın metinsel bilgilerini kullanmadan, hata özellikleri kullanılarak tahmin yapılabilir. Hatanın metinsel özellikleri yeterince bilgiye sahip değildir sonucunu çıkarabiliriiz. Bu veri kümesinde her üç model için bulunan doğruluk değerleri arasında büyük bir fark olmadığı için istatiksel test uygulanmıştır. Tahmin edilen değerler arasında istatiksel olarak bir fark olup olmadığı anlamak için Kruskal-Wallis H-test uygulanmıştır. Bu test genellikle belirli bir önem derecesinde iki veya üç grup arasında ki farklılığın anlamlılığını test etmek amacıyla kullanılır. Test sonucuna göre Mozilla veri kümesi için ikinci modelimiz diğer modellere göre istatiksel olarak farklı çıkmıştır ve bu modellerin dağılımları da farklıdır. Fakat, birinci model ve üçüncü model için istatiksel olarak birbirinden farklı diyemiyoruz, yani bu iki model için tamamen birbirinden farklı diyememekteyiz. Bu iki dağılımın medyan değerleri aynı ya da farklı olabilir. Özel veri kümesi için önerilen modelin doğruluk değeri diğer taban modellere göre farklı algoritmalar da farklı eğilim göstermektedir. Aynı zamanda ikinci model için eşik değerinin artması doğruluk değerini düşürmektedir. Fakat ikinci modelin doğruluk değeri birinci modele göre yüksektir ve metinsel özellikler bu veri kümesi için ayırt edicidir ve çözüm süresi üzerinde etkisi vardır. Sonuçların yakın olmasından dolayı tahmin edilen değerlere istatiksel test uygulanmış ve üç model de farklı algoritmalar için farklı davranış göstermiştir. Önerilen modeli uygulamak için dikkat edilmesi gereken bazı noktalar vardır. Öncelikle metinsel benzerlik hesabı yapıldıktan sonra mevcut eğitim kümesinde ki eleman sayısı azaldığı için ikinci adım için ugulanacak veri kümesi sayısı azalacaktır. Kullanıcı ikinci adım için belirli bir minimum değer belirleyip eğitim ve test kümeleri buna göre tekrar değerlendirebilir. Aynı zamanda mevcut çalışmayı farklı metinsel skor hesaplayan algoritmalar ile de uygulayabiliriz.

Summary:

Software engineering is the process of creating and maintaining software which is developed by a group of people. An empirical software engineering is the subfield of the software engineering and deals with the software engineering artifacts, observes the software in an empirical way and make assumptions. One of the fields of the empirical software engineering is bug reports. A bug can change the way of execution in a different way or can make the project being halted. There have been many studies related with the bug management such as bug triaging, duplicate bug detection, predicting bug fix time. In this work, bug fix time prediction is studied that is about the predicting how much time will be passed from the creation of the bug until the resolution of it. There have been many literature studies in bug fix time prediction. Some studies predict bug fix time as continuous value, and others as categorical value. Both of them use bugs' attributes such as severity, priority, component, product, reporter or bug textual information such as summary, description. Mostly, classification is done by using algorithms such as Decision Tree, Random Forest, Naive Bayes by using bug attributes. Some of them use textual information to find the closest bugs according to the similarity score between the bugs, then make an assumption. Others combine textual information with the bug attributes, measuring their own equation, calculating their own custom distance function to predict bug fix time. In this thesis, bugs' attributes and textual information are used in a stepwise approach. In the first step, it can be called as a textual process step, that uses textual information to filter the bugs that have any score, thus in this step it is expected to filter the bugs that have closest bug fix time to our target bug fix time. This approach is inspired from a previous study that have been implied that similar bugs should have similar fix times. For this aim, to measure the similarity score, Lucene Framework is chosen as score calculator, and BM25 similarity is taken into account as our similarity method. Thus, first step should filter the closest bugs. This filtered set is applied to the next step, algorithm step. This step use Random Forest Algorithm with bug attributes to make prediction about bug fix time. Two projects are selected to build a stepwise bug fix time prediction model. The first dataset, Mozilla's Javascript Engine, is an open source project which has millions of bugs reported. We take into account bugs whose status are RESOLVED, VERIFIED, CLOSED and having resolution FIXED. In total, 15513 Mozilla bugs are included into this thesis. The second dataset is a Commercial one and it has 1166 number of bugs. We built three models and compared their performances with each other on two different datasets. The first model uses bug attributes only from the datasets and predicts the bug fix time using three diffferent algorithms that are Random Forest, Logistic Regression and AdaBoost algorithm. The second model uses textual information of bugs only, finds similar bugs with respect to the test instances, and predicts bug fix time based on majority voting. In the second model, a threshold value is defined, and different predictions are done by changing the value of threshold. A threshold value refers to the bugs whose similarity score is greater than and equal to this value. Thus, increasing value of the threshold should increase the accuracy of the predictions like proposed in one of the previous studies. These two models are already aplied in previous studies, and these two models are the baselines for our model. Our proposed model, the third model combines both of these models. It first filters the bugs based on textual information (second model), then applies the algorithm step (first model) on the filtered set of bugs to make predicitons for the test instances. The three models are then evaluated based on their classification performance in terms of accuracy, recall and precision. Overall, the proposed stepwise model has slightly different accuracy values and different tendencies between different algorithms and dataset. In the second model, as expected increasing value of the threshold resulted in the increase of the accuracy value for Mozilla dataset. Increasing value of the threshold resulted in the decrease of the accuracy value for Commercial dataset. Because of the little changes in accuracy values in our model, it is decided to apply pairwise Kruskal-Wallis H-test on the predicted values. According to this test results, for Mozilla dataset, the second model has different distribution than the other two model. It is interesting that the results show that it can not be inferred that first and third model have different distributions. They may have same distribution or not. Therefore, including bugs' textual informations into the calculations have not such a great impact than the bug attributes. On the other hand for Commercial dataset, the results show that three models have inconsistencies in different algorithms.