Yüksek LisansAçık Erişim

Yazılım hata tahminlerinde içerik ve zamana göre değişen geliştirici metriklerinin kullanımı

Bu tez size mi ait?

Bu kayıt toplu arşivden geldi. Sizinse profilinize bağlayın.

2018
0 görüntülenme
0 i̇ndirme

Özet (TR)

Günümüzde, yazılım sistemleri, iş yaşamımızda ve sosyal yaşamımızda, hayatımızı kolaylaştırdıkları için oldukça önemli bir alana sahiptir. Bu durum, yazılım ürünlerine olan ilginin artmasına ve yazılım ürünlerinin de gittikçe çeşitlenmesine, boyutlarının artmasına ve ürün yapısının karmaşıklaşmasına neden olmaktadır. Yazılım ürünleri arasında rekabetin olması ve yazılım maliyetlerinin artması yazılımda kalite kavramını ön plana çıkarmaktadır. Kaliteli yazılım ürünleri daha fazla tercih edilmekte ve bu ürünlerin bakım maliyetleri diğer ürünlere kıyasla daha düşük olmaktadır. Yazılım kalitesini arttırmak için, veriye dayalı sonuç üreten hata tahmin modelleri kullanılabilmektedir. Son yıllarda insana ait verileri işleyip bunların yazılım hatalarıyla ilişkilerini inceleyen çalışmalar da bulunmaktadır. İnsana ait veri toplama sürecinde; geliştiricinin deneyimi, kodlama becerileri, yöntemi, kod sahipliği, farklı kod komit teknikleri gibi birçok bakış açısı dikkate alınabilmektedir. Kodlama becerilerinin yanında, insan ağı ve ilişkileri, kişilerin bulunduğu organizasyondaki rolü gibi kavramlarda incelenmekte ve yazılım kalitesini etkilediği gözlemlenmektedir. Kaliteli yazılımlar; bakım maliyetleri düşük, kullanıcının ihtiyacı olan işlevselliği sağlayan ve beklenmeyen hatalar içermeyen yazılımlar olarak tanımlanabilir. Yazılım kalitesini arttırmak için, yazılımlardan elde edilen metriklerden sonuç üreten hata tahmin modelleri kullanılabilmektedir. Yazılımların belli özelliklerini ölçerek, elde ettiğimiz sayısal değerlere yazılım metrikleri olarak tanımlayabiliriz. Bu veriler yazılım sürecinden, kaynak koddan, ürün çıktılarından, organizasyona ait süreçlerden elde edilebilmektedir. Son yıllarda insan faktörüne ait özellikleri farklı bakış açılarıyla ele alarak, bu özelliklerden elde edilen metriklerin yazılım hatalarıyla ilişkilendiren birçok çalışma mevcuttur. Bu çalışma kapsamında ilk olarak literatürde hata tahmin modellerini detaylı bir şekilde ele alan 2 geniş kapsamlı sistematik gözden geçirme çalışmasını inceledik. Bu iki gözden geçirme çalışması mevcutta son yıllara yapılan toplamda 282 hata tahmin modeli çalışmasını içermektedir. Bu çalışmalarda hata tahmin modellerinin performanslarının, kullanılan sınıflandırma yöntemine, tanımlanan metriklere, metriklerin hangi tarz projelerden çıkarıldığına, projelerin içeriğini en iyi şekilde temsil eden önemli metriklerin kullanılmasına göre değiştiğini gözlemledik. Daha sonra, insan faktörünün yazılım hataları ve yazılım kalitesiyle olan ilişkilerini inceleyen birçok çalışmayı gözden geçirdik. Bu kapsamda geliştirici deneyim bilgisinin farklı şekillerde ele alındığını gözlemledik. Geliştirici deneyim bilgisine dayalı metrikler elde edilirken genel olarak bu süreçte, geliştiricinin kaynak kod üzerindeki bilgisi ve deneyimi değişmesine rağmen, geliştirici tecrübe metrikleri, kaynak koddaki bir veya birkaç anlık durum görüntüsünden elde edildiğini gördük. Bu yöntem kullanıldığında geliştiricinin değişen tecrübe bilgisi doğru bir şekilde elde edilememekte ve modellerin doğru bir şekilde sonuç üretmemesine neden olmaktadır. Bu çalışma kapsamında, geliştiricinin dosya, modül gibi belli bir içerik üzerindeki bilgisi sabit olmadığı, zamana göre değiştiği için geliştiriciye ait zamana göre değişen yeni tecrübe metriklerini tanımladık ve bu metriklerin hesaplama yöntemini detaylı bir şekilde sunduk. Ele aldığımız çalışmada, geliştiricinin yapmış olduğu her bir komit için tecrübe metriklerini, değiştirdiği içerik olan dosya ve klasör bilgisi üzerinden hesapladık. Literatürdeki çalışmaları incelediğimizde, açık kaynak kodlu detaylı komit geçmişi bulunan ve iyi bir şekilde sürüm raporları hazırlanmış olan Lucene ve Jackrabbit projelerini, kendi yöntemimizi değerlendirebilmek için belirledik. Bu projelerden elde ettiğimiz verilerden SQL ve Java programlama dilleri kullanarak, dosya seviyesi ve komit seviyesi olmak üzere iki farklı seviyede metrik kümelerimizi oluşturduk. Hata tahmin modellerinde, kullanılan girdilere ve seçilen sınıflandırma yöntemine göre modelin tahmin performansı değişmektedir. Tüm modellerde en iyi performansı gösteren bir sınıflandırma yöntemi bulunmamaktadır. Modellerimizin performansının, kullandığımız veri setleri için en iyi sonucu vermesini sağlamak için modellerimizi oluştururken literatürde en çok kullanılan makine öğrenmesi algoritmaları arasından belirledik. Bu algoritmalar; naive Bayes, logistic regression, ibk, j48, random forest olmak üzere 5 adettir. Bu algoritmaların hata tahmin performanslarını karşılaştırarak kullandığımız veri kümesi için en iyi performans gösteren iki algoritmayı belirledik. Sonrasında belirlediğimiz bu iki sınıflandırma yöntemi için akort işlemleri gerçekleştirdik. Bu yöntemde algoritmaların parametrelerine sabit değerler vermek yerine, aralıklar vererek, her bir veri seti için en iyi tahmin performansını gösteren parametreleri belirleniyor ve oluşturulan modeller varsayılan parametreler yerine her veri seti için en iyi performansı gösteren parametreler ile çalıştırılıyor. Algoritma akort işlemlerinden sonra en iyi tahmin performansı gösteren algoritmayı belirledik. Bu süreçte modellerin performanslarını literatürde yaygın olarak kullanılan; hassasiyet, hasiyet, yalancı pozitiflik oranı ve f-ölçümü sonuçlarına göre değerlendirildik. Kaynak kodun başarılı bir şekilde metrikler ile gösterilebilmesi ve modelde işlenen verilerin kalitesi modelin tahmin performansını etkileyen önemli faktörlerden biridir. Teoride, kaynak koddan çok fazla özellik çıkarılması model performansına olumlu etki yapacak gibi düşünülebilir. Ancak, hata tahminleri modellerinin çalışma prensipleri düşünüldüğünde performans arttırıcı ve gerekli özelliklerin model performansını daha fazla arttırdığı görülmektedir. Kullanılan modelin çok fazla özellik içermesi, boyutlarının yüksek olması, alakasız özellikleri de içerdiğine işaret olabilir. Model performansını olumsuz etkilemesi nedeniyle model değerlendirmesinde alakasız özelliklerin kullanılmasına gerek yoktur. Bu adımda modelimizin performansını arttırıcı en iyi özellikleri belirlemek için Weka API'nin ilgileşim tabanlı algoritmasını kullandık. Bu algoritma, hangi metriklerin tahmin edilen sınıf etiketleriyle yüksek etkileşime sahip olduğunu ve diğer kullanılan metriklerle ilişkilendirilmediğini belirleyerek ilgileşime dayalı bir yaklaşım kullanır. Metriklerin değerlendirilmesi, sınıfın istatistiksel açıklayıcı gücüne bağlıdır. Her metrik için, metrik-sınıf korelasyonu ve metrik-metrik korelasyon hesaplanır ve bu iki korelasyonun oranı özellik seçimine karar vermek için kullanılır. Bu algoritmayı, her proje için farklı rastgele değer ile 10 kez dosya düzeyinde ve 10 kez komit düzeyinde çalıştırdık. Dosya seviyesindeki model için, en önemli 5 en önemli metriği belirledik. Komit seviyesinde ilk 10 ölçümü belirledik. Her bir özelliğin ilk 5/10 listesinde 10 kez çalışma sonucunda görünme sayısını hesapladık. Böylece modellerimizdeki en önemli metrikleri her bir proje için dosya seviyesinde ve komit seviyesinde belirledik. Özet olarak, bu çalışma kapsamında zamana, içeriğe ve geliştiriciye bağlı olarak yeni metrikler tanımladık. Bu metrikleri kullanarak oluşturmuş olduğumuz modeller yardımıyla, geliştiricilerin geçmiş aktivitelerinden topladığımız zamana ve içeriğe bağlı tecrübe metriklerinin yazılım hatalarıyla olan ilişkisini araştırdık. Çalışmamızda, statik kod metrikleri ve zaman ve içeriğe bağlı geliştirici tecrübe metriklerini birlikte kullandık. Yazılım hatalarını en iyi açıklayan metrik setini, korelasyon temelli özellik seçim yöntemi kullanılarak belirleyerek zaman ve içere göre değişen geliştirici deneyiminin yazılım hatalarıyla ilişkisini gösterdik. Çalışmamızdan elde ettiğimiz sonuca göre, periyodik geliştirici metrikleri dosya seviyesinde hesaplandığında hata tahmininde oldukça iyi sonuçlar ürettiğini raporladık. Kaynak kodun ilk sürümlerinde geliştiricilere ait tecrübe bilgileri hesaplanamadığı için statik kod metrikleri ve periyodik geliştirici metrikleri birlikte kullanılmasının yazılımın ilk sürümleri için gerekli olduğu gördük.

Yazar

Seldağ Kini Özcan

Bu Yayına Nasıl Atıf Yapılır

Seldağ Kini Özcan (Yüksek Lisans Tezi). Yazılım hata tahminlerinde içerik ve zamana göre değişen geliştirici metriklerinin kullanımı, 2018, İstanbul Technical University.

Anahtar Kelimeler

Lisans

Tüm Hakları Saklıdır

Bu eser belirtilen lisans koşulları altında paylaşılmaktadır.

İstanbul Technical University tezlerinden daha fazlası