Geri Dön

Contextual and time-based developer metrics in software defect prediction

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

  1. Tez No: 541834
  2. Yazar: SELDAĞ KİNİ ÖZCAN
  3. Danışmanlar: DR. ÖĞR. ÜYESİ AYŞE TOSUN
  4. Tez Türü: Yüksek Lisans
  5. Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
  6. Anahtar Kelimeler: Belirtilmemiş.
  7. Yıl: 2018
  8. Dil: İngilizce
  9. Üniversite: İstanbul Teknik Üniversitesi
  10. Enstitü: Fen Bilimleri Enstitüsü
  11. Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
  12. Bilim Dalı: Bilgisayar Mühendisliği Bilim Dalı
  13. Sayfa Sayısı: 77

Özet

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.

Özet (Çeviri)

In today's world, software products play an important role in making our lives easier in our business and social life. This leads to an increase in interest in software products and to a growing variety of software products, increasing their size and complexity. The concept of quality in software has been emphasized since there is a competition between software products and ever increasing in software costs. In order to increase the quality of the software, error prediction models are used which produce data- driven results. These kinds of data can be obtained from the software process, source codes, product outputs, and organizational structures. Additionally, there are many studies that examine the people factors and their relationship to software defects. Developer related metrics can be picked up by different perspectives, such as different codding skills and techniques, experience levels, ownership of the related modules, organization structure of companies. These kinds of metrics have been captured the in one or a limited number of snapshots of source codes, although the experience and knowledge of a developer are constantly changing depending on time and content of the codebase. In this study, we have offered to measure time-based developer experience with specified context are files and directories. We have captured time-based experience metrics obtaining to the previous development activities on specified context and examine the relationship of these metrics with the software defects. In our study, we have recalculated the developer metrics in each commit for each file and directory on two granularity levels: file level and commit level. We have used static code metrics and time-based and contextual developer experience metrics together with our models. To evaluate our defect prediction models, we have used Jackrabbit and Lucene projects. In order to define a classification method, we have compared the five the most preferred classification algorithms. We have identified two algorithms that perform best for our data sets. The performances of our models are evaluated according to the results of precision, recall, false positive rate and f-measure. We have used correlation-based feature selection method for specifying the best explanatory metrics of software defects. According to model outputs, time-based developer metrics which are obtained from a file are good merits for software defect prediction. In addition, static code metrics and time-based developer metrics must be used together since the developer's experience information cannot be calculated in the early versions of the source code.

Benzer Tezler

  1. Yapı bilgi modellemesi (5D) ile maliyet yönetiminin avantaj ve dezavantajlarının tespiti

    Determining advantages and disadvantages of 5D BIM cost management

    FARUK GÜLERSES

    Yüksek Lisans

    Türkçe

    Türkçe

    2018

    İnşaat Mühendisliğiİstanbul Teknik Üniversitesi

    İnşaat Mühendisliği Ana Bilim Dalı

    DOÇ. DR. ESİN ERGEN PEHLEVAN

  2. Savunma sistemlerine yönelik yapay zeka tekniklerine dayalı inovatif bir tasarım işlem modeli geliştirilmesi

    Developing an innovative design process model for defense systems based on artificial intelligence techniques

    CÜNEYD DEMİR

    Doktora

    Türkçe

    Türkçe

    2024

    Mekatronik MühendisliğiGazi Üniversitesi

    Endüstriyel Tasarım Mühendisliği Ana Bilim Dalı

    DR. ÖĞR. ÜYESİ CENGİZ ELDEM

  3. Kentsel sürdürülebilirliğin ölçülmesi ve değerlendirilmesi için CBS tabanlı bir model önerisi

    A GIS based model for measurement and evaluation of urban sustainability

    GÖKÇER OKUMUŞ

    Doktora

    Türkçe

    Türkçe

    2017

    Şehircilik ve Bölge Planlamaİstanbul Teknik Üniversitesi

    Şehir ve Bölge Planlama Ana Bilim Dalı

    PROF. DR. HANDAN TÜRKOĞLU

  4. Gsm sektörü için müşteri merkezli bilgi yönetimi değerlendirme modeli tasarımı ve bir uygulama

    The design of customer centric knowledge mangement assessment model for gsm ındustry and an aplıcatıon

    ATİK KULAKLI

    Doktora

    Türkçe

    Türkçe

    2005

    İşletmeİstanbul Teknik Üniversitesi

    İşletme Ana Bilim Dalı

    PROF. DR. SEMRA BİRGÜN

  5. Simulator-based evaluation of human response in emergencies

    Acil durumlarda ınsan faktörünün simülatör ortamında değerlendirilmesi

    ESMA UFLAZ

    Doktora

    İngilizce

    İngilizce

    2023

    Denizcilikİstanbul Teknik Üniversitesi

    Deniz Ulaştırma Mühendisliği Ana Bilim Dalı

    Prof. Dr. ÖZCAN ARSLAN