Nesneye dayalı yazılımlarda sınama ve bakım öncelikli sınıfların belirlenmesi
Prediction of classes having priority at object oriented software test and maintenance
Yazar: SİNAN ESKİ
Danışman: YRD. DOÇ. DR. FEZA BUZLUCA
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2011
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Yazılım geliştirme = Software development ; Yazılım metrikleri = Software metrics ; Yazılım testi = Software test

Özet:
Günümüzde, toplam yazılım geliştirme maliyetlerinin yüzde ellisinden fazlasını yazılım bakım maliyetleri kapsamaktadır. Yazılım sınamaları ise bakım maliyetlerinin düşürülmesinde önemli bir role sahiptir. Yazılımın daha çok ve öncelikli olarak sınanması gereken kritik kısımlarının belirlenmesiyle, yapılacak sınamaların maliyetlerinin ve sürelerinin azaltılması sağlanabilir.Genel olarak yazılımların kaliteli kısımlarında hata çıkma olasılığı azdır ve bu kısımlarda çıkan hataların düzeltilmesi kolaydır; diğer yandan yazılımın kalitesiz ve karmaşık kısımlarında ise durum bunun tam tersidir. Yazılımlardaki kalitesiz kısımların, bir yazılım için, bakım sürecindeki en kiritik kısımlar olduğu açıktır. Yazılım kalitesinin doğru biçimde ölçülmesi yazılımın iyi ve kötü kısımlarını ortaya çıkartacaktır.Ölçme kavram olarak varlıkların özelliklerinin sayısallaştırılmasıdır. Yazılım metrikleri ise yazılımların kalitesini ölçmede kullanılabilecek en temel ölçme araçlardır; dolayısı ile yazılım metrikleri kullanılarak, kritik yani daha çok ve öncelikli olarak sınanması; bakım ve yazılımın gözden geçirilmesi sırasında öncelikli olarak değerlendirilmesi gereken kısımlar belirlenebilir. Proje yöneticileri sınama için ayıracakları kaynakları daha verimli bir biçimde ayarlayabilir; yazılım geliştiricileri yazılımın düşük kaliteli bu kısımlarından başlayarak yazılımın iyileştirilmesini sağlayabilirler.Bu çalışma kapsamında nesneye dayalı metrikler ile nesneye dayalı yazılımların değişimleri arasındaki ilişki araştırılmıştır. Sonuçların çıkarılmasında, açık kaynak kodlu yazılımlardaki değişimler, yazılımların gelişim süreçleri boyunca ardışıl sürümleri analiz edilerek incelenmiştir. Elde edilen deneysel sonuçlar düşük kaliteli yazılım kısımlarının yazılım geliştirme ve bakımı süresince sıklıkla değiştiğini göstermiştir. Bu ilişki dikkate alınarak, bu çalışmada yazılımlardaki öncelikle sınanması gereken kritik kısımların ve değişime eğilimli sınıfların belirlenmesi için sistematik bir yöntem önerilmiştir, diğer yöntemlerle karşılaştırılmıştır ve sonuçları doğrulanmıştır. Açık kaynak kodlu projeler üzerine yapılan deneysel sonuçlar göstermiştir ki geliştirilen yöntemle ilerleyen sürümlerde en çok değişime uğrayacak kısımlar %80'e yakın oranda belirlenebilmektedir.

Abstract:
Software maintenance cost is typically more than fifty percent of the cost of the total software life cycle and software testing plays a critical role in reducing it. Determining the critical parts of a software system is an important issue, because they are the best place to start testing in order to reduce cost and duration of tests. Software quality is an important key factor to determine critical parts since high quality parts of software are less error prone and easy to maintain. As object oriented software metrics give important evidence about design quality, they can help software engineers to choose critical parts, which should be tested firstly and intensely. Also these parts should be considered for refactoring. In this paper, we present an empirical study about the relation between object oriented metrics and changes in software. In order to obtain the results, we analyze modifications in software across the historical sequence of open source projects. Empirical results of the study indicate that the low-level quality parts of a software change frequently during the development and management process. Using this relation, we propose a method that can be used to estimate change-prone classes and to determine parts which should be tested first and more deeply. We compare our method with random selection and decision tree approaches. Our metric-based method that can be applied at the last development phase of the software to predict critical classes, which tend to change in the future. These parts are also the low-level quality parts of the software. Therefore, they possibly need refactoring. Experimental results show that this approach can find up to 80 percent of the change-prone parts.