Bilgi Getirimi Tabalı Yazılım Hata Koumladırması Deiz KILINÇ 1, Fatih YÜCALAR 1, Emi BORANDAĞ 1, Hasa AKYOL 1, Tuğrul Ca ŞÖLLÜ 1 1 Celal Bayar Üiversitesi, Yazılım Mühedisliği Bölümü, Maisa deiz.kilic@cbu.edu.tr, fatih.yucalar@cbu.edu.tr, emi.boradag@cbu.edu.tr, hasaakyol2@ogr.cbu.edu.tr, tugrulcasollu@ogr.cbu.edu.tr Özet: Yazılım bakımı zorlu ve yüksek maliyetli bir aşamadır. Yapıla araştırmalar yazılım yaşam dögüsüde, bakım maliyetii %60 lık bir paya sahip olduğuu göstermektedir. Yazılım bakımıda yapıla e temel iş, yazılım hata çözümü olup, bu aşama hataı koumladırılmasıyla başlar. Hata koumladırma, karmaşık ve zama ala bir işlemdir. Bu çalışmada, yeide sıralama tabalı bir Bilgi Getirimi tekiği kullaarak yazılım hata koumladırılması yapılmıştır. Özellikle, ilişkili kayak dosya souçları yeide düzeleerek, doğruluk değerii arttırılması hedeflemiş ve bu yötem başarılı olarak sistem getirim performası ve doğruluğu öemli ölçüde arttırılmıştır. Aahtar Sözcükler: Hata Koumladırma, Bilgi Getirimi, Yeide Sıralama, Yazılım Mühedisliği Iformatio Retrieval Based Software Bug Localizatio Abstract: Software maiteace is challegig ad costly phase. Researches show that 60% cost of software life cycle is spet to software maiteace. Software bug solutio is the mai step i the software maiteace, ad this step starts with the bug localizatio. Bug localizatio is a complex ad time cosumig process. I this paper, Iformatio Retrieval based bug localizatio experimets are proposed which use rerakig techique. Our experimets show that rerakig approach to bug localizatio is promisig. It icreases both retrieval performace ad accuracy. Keywords: Bug Localizatio, Iformatio Retrieval, Re-rakig, Software Egieerig 1. Giriş So yıllarda yazılım tekolojileri hızlı bir gelişim sürecie girmiştir. Küçük, orta ve büyük ölçekli yazılım geliştirme firmaları ile açık kayak kod toplulukları tarafıda farklı alalarda kullaılabile yazılımlar üretilmeye başlamıştır. Üretile bu yazılımları sayıları arttıkça yazılım bakım süreçleri de kritik bir hale gelmiştir. Yazılım bakımı zorlu ve yüksek maliyetli bir süreçtir. Yapıla araştırmalar yazılım yaşam dögüsüde, bakım maliyetii %60 lık bir paya sahip olduğuu göstermektedir [1]. Yazılım bakımıda yapıla e temel iş, yazılım hata çözümüdür. Hata çözüm aşaması, yazılım ürüü ile ilgili bir hataı bulumasıyla başlar. Bulua hata ile ilgili metisel bilgiler bir hata yöetim sistemie iş olarak girilir ve ilgili yazılımcıya ataır. Yazılımcı kedisie iletile hataı içeriğie ve özelliklerie bakarak hatalı kayak kodları bulmaya çalışır. Hata koumladırma olarak adladırıla bu aşama; yazılımcıı tecrübesie, yazılım ürüü karmaşıklığıa ve yazılım geliştirme metodolojisie bağlı olup, geelde zama ala bir süreçtir. So yıllarda, Bilgi Getirimi (BG) tabalı hata koumladırma yaklaşımı üzerie çalışmaları sayısı oldukça artmıştır. BG, ihtiyaç duyula ilişkili bir bilgii, kayak bilgi koleksiyou içeriside sorgulaıp bulumasıdır. BG tabalı hata koumladırma süreci, kullaıcıı hata rapor sorgusuu sisteme girmesiyle başlar. BG sistemi sorasıda her bir kayak dosya içi sayısal bir skor hesaplar ve kayak dosyalar bu skora göre sıralaır. Sıralamada e üstte ola kayak dosyalar hataı yüksek olasılıkla buluduğu yerlerdir. Bu çalışmada, yeide sıralama tabalı bir BG tekiği kullaılarak yazılım hata koumladırılması yapılmıştır. Yeide sıralama içi kayak kodlardaki yapısal bilgilerde; sııf adları, metot adları, metot parametreleri ve yorum satırları dikkate alımıştır. Bu veriler ilk aşamada buluup getirile kayak dosyaları yeide ağırlıkladırılarak sıralaması içi kullaılırlar. Hata raporları ile kayak dosyalar arasıdaki ilişki skoruu hesaplamak içi açık kayak kodlu kelime eşleştirme sistemi ola Lucee [2]
kullaılmıştır. Bildirii devamıda ikici bölümüde bezer çalışmalar iceleip, geel olarak hagi yötemleri kullaıldığı ile ilgili bilgilere yer verilmiştir. Üçücü bölümde geel hata koumladırma yötemi, ö işleme, ideksleme, vektör uzay modeli ve sistem geel mimarisi ile ilgili detaylı bilgiler verilmiştir. Dördücü bölümde deeysel veri seti, deeysel ölçütler ve souçlar ele alımıştır. So olarak, beşici bölümde ise souç ve öerilere yer verilmiştir. 2. Mevcut Çalışmalar Literatürde Bilgi Getirimi (BG) tabalı hata koumladırma yaklaşımı kullaılarak çeşitli çalışmalar yapılmıştır. Marcus ve ark.[3] kayak kod gösterimi içi BG tabalı VUM (Vektör Uzay Modeli) modeli üzeride çalışmışlardır. Poshyvayk ve ark.[4] PROMESIR adıda bir bilgi getirimi tekiği ola Latet Sematic Idexig (LSI) ve bir olasılıksal sıralama tekiğide faydalaa bir yötem öermişlerdir. Lukis ve ark. [5] Latet Dirichlet Allocatio (LDA) yaklaşımıı öe sürmüşlerdir. Rao ve Kak [6] Vektör Uzay, Letat Sematik Aalizi (LSA), LDA, Uigram, Cluster Based gibi başlıca BG tekiklerii ve çeşitli kombiasyolarıı karşılaştırmışlardır. Tüm araştırmacılar değerledirme işlemide az sayıda hata kullamışlardır. Nguye ve ark. [7] hata koumladırma içi düzelemiş LDA tabalı bir yötem öermişler ve birkaç büyük veri seti üzeride deemişlerdir. 3. Yötem 3.1 Geel Hata Koumladırma Modeli Hata koumladırma işlemii geel bir modeli aşağıdaki adımları içermektedir: - Kelime Külliyatıı Hazırlaması: Bu adımda kayak kod dosyaları kelime külliyatıı oluşturmak içi aaliz edilir. İlk olarak, tüm dosyalar geri getirim verimliliğii arttırmak amacıyla ö işlemde geçer. Yazılım programlarıda kullaıla belirteçler, ortak ayırıcılar, operatörler, oktalama işaretleri, çıkış karakterleri ve İgilizcede kullaıla gereksiz kelimeler kaldırılır. Ardıda, kelime gövdeleme gibi doğal dil işlemeye yöelik bir tekik kullaılır. Farklı tekiklerle birlikte çeşitli gövdeleme algoritmaları bulumaktadır. - Kelime Külliyatıı İdekslemesi: Kayak kod dosyaları ö işlemde geçirildikte ve külliyatları hazırladıkta sora; Vektör Uzay Modeli ya da diğer olasılık modelleri tabalı bir BG yötemi ile külliyat ideksleir. - Sorgu Oluşturulması: Hata koumladırma işlemide hata raporuu açıklamaları birer sorgu olarak kabul edilir. Bu sorgular kayak kod dosyaları ile ayı şekilde ö işlemde geçirilir. - Bezerliği Hesaplaması ve Geri Getirme: Hata raporları ile kayak kod dosyaları arasıdaki bezerlik skoru, meti bezerliği temel alııp çeşitli yaklaşımlar kullaılarak hesaplamıştır. Ardıda, tüm dosyalar bu skora göre sıralaır ve geri getirilir. 3.2 Geel Mimari Öerile sistemde ilk olarak, kayak kod dosyalarıda gereksiz kelimeler atılır ve gövdeleme işlemi gerçekleştirilir. Daha sora, kayak kod dosyaları içi kod yapı aalizi başlar. Kayak kodları yorumsuz halleri (Idx1), sııf isimleri (Idx2), metot isimleri (Idx3) ve yorumları (Idx4) içi dört ayrı ideks dosyası oluşturulur. İdeks dosyaları oluşturuldukta sora, VUM tabalı temel geri getirim çalıştırılır ve temel bezerlik skoru R 0 (j) hesaplaır. So olarak bilgi getirimi tabalı yeide sıralama işlemi içi kod yapısı göz öüde buludurulur ve Idx1, Idx2, Idx3 ve Idx4 ideksleri kullaılarak bir sıralama puaı R 1 (j) hesaplaarak, bu puaa göre sıralama işlemi gerçekleştirilir. 3.3 Ö İşleme Tüm kayak kod dosyaları ve hata raporları ayı şekilde ö işlemde geçirilir. İlk olarak it, float, double, char while, for, if gibi aahtar kelimeler kayak kod dosyalarıda çıkartılır. Daha sora tüm ortak ayırıcılar, operatörler (!=, =, <, > vs.), oktalama işaretleri ve yazdırılamaya karakterler de kayak kodlarda ayıklaır. 3.4 İdeksleme ve Bilgi Getirimi Bu çalışmada ideksleme içi her kayak dosyaı bir vektörü temsil ettiği ve her bir boyutu ayrı bir terime karşılık geldiği, klasik VUM [8] kullaılmıştır. Eğer bir terim kayak kod dosyasıı içide buluuyorsa, vektördeki değeri sıfırda farklıdır. Bu model bir sıralama algoritmasıı çalıştırmaktadır. Bu algoritma, her bir hata raporu ile her bir kayak kod dosyası arasıda e kadar örtüşme olduğua bakarak kayak kod dosyalarıı sıralamaya çalışmaktadır. Vektör Uzay Modelide, terim ağırlıkladırma, moder meti geri getirim sistemlerii öemli bir özelliğidir [9]. Bir meti içerisideki bir terimi öemii etkileye başlıca üç kısım buluur: Terim Sıklık Katsayısı (TSK), Ters Doküma Sıklık Katsayısı (TDSK) ve Doküma Uzuluk Normalleşme Değeri. VUM da e yaygı kullaıla ormalleştirme tekiği Kosiüs ormalleştirmesi olup Deklem 1 de gösterildiği gibi
hesaplaır. w 1 2 + w 2 2 + + w t 2 (1) Her bir w değeri (TSK TDSK), deklem 2 deki gibi gösterilir. w ki = tf ik log (N/ k ) k=1(tf ik ) 2 [log(n/ k )] 2 t k, d i dokümaıdaki k ıcı terimdir. tf ik, t k kelimesii d i dokümaıda geçme sıklıdığır. log (N/ k ), t k kelimesii veri setideki ters doküma sıklığıı temsil etmektedir. k, t k kelimesii içere dokümaları umarasıı belirtmektedir. N, veri setideki toplam doküma sayısıı yai toplam kayak kod dosya sayısıı göstermektedir. Öerile çalışmada, temel geri getirimi olarak adladırıla bir başlagıç geri getirimi uygulaır. Temel geri getirim işlemi gerçekleşirke, sistem sadece Idex1 i kullaır ve kod yapısıı dikkate almaz. Temel bezerlik skoru R 0 (j) aşağıdaki formül ile hesaplaır: R 0 (j) = (w1 ij q i ) R 0 (j), j ici kayak kod dosyasıı bezerlik skoruu;, sözlüğü uzuluğuu; w1 ij, j ici kayak dosyasıı ağırlığıı ve q i i ici hata raporuu ağırlığıı temsil etmektedir. 3.5 Yeide Sıralama Tabalı Bilgi Getirimi Klasik VUM ve TSK TDSK hesaplamasıda, kayak kod dosyalarıdaki sııf adları, metot isimleri ve yorum satırları dosyadaki diğer tüm kelimelerle ayı şekilde değerledirilip, ekstra bir ağırlığa sahip olmazlar. Hata raporlarıda ise sıkça bu yapısal bilgiler yer almakta olup, bu bilgileri olduğu kayak kod dosyaları yeide ağırlıkladırılarak sıralamalıdır. Bu amaçla sistem her bir kayak dosyayı ayrıştırır ve kod yapısı içi VUM oluşturur. Modeldeki ideksler; (2) (3) - Yorum satırı içermeye kodlar (w 1 (j)) içi Idx1, - Sııf adları (w 2 (j)) içi Idx2, - Metot isimleri (w 2 (j)) içi Idx3, - Sadece yorum satırları (w 4 (j)) içi Idx4 dür. Bu ideksler kullaılarak hesaplaa R 1 (j) bezerlik skoru deklemi aşağıdaki gibidir: R 1 (j) = R 0 (j) + r 1 (j) (4) R 0 (j), j ici kayak kod dosyasıı temel bezerlik skoru olup yeide sıralama skoru r 1 (j) deklem 5 te verilmiştir: r 1 (j) = r 12 (j) + r 13 (j) + r 14 (j) (5) r 12 (j), r 13 (j) ve r 14 (j), sırasıyla Idx2, Idx3 ve Idx4 içi j ici kayak kod dosyasıı bezerlik skorlarıdır. r 12 (j) = (w2 ij q i) r 13 (j) = (w3 ij q i) r 14 (j) = (w4 ij q i) 4. Deeysel Çalışmalar 4.1 Deeysel Veri Setleri Çalışmada yazılım geliştirme düyasıda bilie üç tae açık kayak kodlu projeye (Eclipse, SWT ve AspectJ) ait kayak kod dosyaları ve bu kayak kod dosyaları ile ilişkili yaklaşık 3,450 adet çözülmüş hata raporuu içere bir veri seti kullaılmıştır. Her hata raporuu hagi kayak kodlarda çözüldüğü bilimektedir. Tablo 1 de projelere ait bilgiler gösterilmektedir. Proje (Veri Seti) Açıklama Periyot Hata Sayısı Kayak Dosya Sayısı SWT 3.1 Java Widget Aracı 10/04 04/10 98 484 Eclipse 3.1 Java IDE 10/04 03/11 3075 12863 AspectJ Aspect-Orieted Ekleti 07/02 10/06 286 6485 Tablo 1. Deeysel Veri Setleri (6) (7) (8)
4.2 Değerledirme Ölçütleri BG sistemlerii doğruluğuu belirlemek amacıyla kullaıla birkaç değerledirme ölçütü bulumaktadır. Kullaıla ölçütler aşağıdaki gibidir: - E Yüksek N: Bu ölçüt, sıralamış souçlarıı ilk N (1, 5, 10) sıralamasıda e az bir ilgili kayak kod dosyası bulua hataları sayısıı gösterir. Bu ölçüt içi çıka değeri yüksek olması, iyi bir hata koumladırma performasıa sahip olduğuu göstermektedir. - Ortalama Karşılıklı Sıralama (OKS). Karşılıklı sıralama (KS)[10], ilgili tek öğeyi geri getirme yötemi ile oluşturula sıralamaya ters oratılı bir değerdir. OKS tüm sorguları ortalama KS değeridir. OKS içi yüksek bir değer, iyi hata koumladırma performasıı gösterir. Q OKS = 1 Q 1 rak i - Ortalama Sistem Hassasiyeti (OSH). Ortalama sistem hassasiyeti ölçütü, BG sistemlerii e popüler değerledirme ölçütüdür. Bir dizi sorgu üzerideki ortalama hassaslık değerii bulmak içi kullaılır [11]. m j OSH(Q) = 1 Q Q 1 Precisio(R m k ) j j=1 k=1 (9) (10) Q sorgu dizisi, her bir q j hatası ile ilgili m j kod dosyasıa sahiptir. R k e üst sıradaki dokümada ilgili doküma k ya kadar geriye dödürüle bir dizi souçtur. OSH ölçütü içi yüksek değerler daha iyi hata koumladırılması alamıa gelmektedir. 4.2 Deeysel Souçlar Yeide sıralama yaklaşımımızı aa amacı hata koumladırma işlemide hassasiyet değerii arttırmaktır. Dolayısıyla, hem E Yüksek N sıralama ölçütüde hem de OSH ve OKS ölçütleride fark edilir bir iyileştirme beklemektedir. Tablo 2 yapıla çalışmaı E Yüksek N sıralama ölçütüü 1, 5 ve 10 seviyeleride asıl geliştirdiğii göstermektedir. Sistem, ilk aşamada karşılaştırma yapabilmek amacıyla temel geri getirim olarak adladırıla başlagıç geri getirimii uygular. Bu seviyede, E Yüksek 1 ölçütüe göre, SWT, Eclipse, ve AspectJ veri setleri içi sırasıyla 27, 555 ve 69 adet hata koumladırılmıştır. Temel geri getirimde sora, yeide sıralama yötemi uygulaır. Bu aşamada sistem, kayak kod yapısıı (sııf adları, metot adları ve yorumlar) ve bu yapıya ait ideksleri kullaarak yeide sıralama işlemii gerçekleştirir. Yeide sıralama işlemi sorasıda sistemi koumladırdığı hata sayısı artmıştır. Öreği: E Yüksek 1 ölçütüe göre, SWT veri setide 11 adet, Eclipse veri setide 151 adet, AspectJ veri setide 8 adet daha fazla hata koumladırılmıştır. Veri Seti SWT Eclipse AspectJ E E E Yötemler Yüksek 1 Yüksek 5 Yüksek 10 Temel Geri Getirim 27 53 73 Yeide Sıralama 38 56 65 Temel Geri Getirim 555 1180 1494 Yeide Sıralama 706 1290 1587 Temel Geri Getirim 69 120 150 Yeide Sıralama 77 126 153 Tablo 2. E Yüksek N Ölçütü Souçları E Yüksek N Sıralama ölçütlerie ek olarak, yapıla çalışmaı et bir şekilde OSH ve OKS ölçütü değerlerii arttırdığı Tablo 3 de görülmektedir. Souç olarak, yeide sıralama yaklaşımı, hata koumladırma sistemii doğruluğuu fark edilir bir şekilde geliştirmiştir. Veri Seti Yötemler OSH OKS SWT Eclipse AspectJ Temel Geri Getirim 0.38 0.40 Yeide Sıralama 0.44 0.46 Temel Geri Getirim 0.21 0.28 Yeide Sıralama 0.28 0.35 Temel Geri Getirim 0.19 0.34 Yeide Sıralama 0.24 0.36 Tablo 3. OSH ve OKS Ölçütü Souçları
5. Souç ve Tartışma Hata koumladırma, karmaşık ve zama ala bir işlemdir. Programı amacıı, yapısıı, sematiğii ve hataı ilgili özelliğii alamayı gerektirmektedir. BG tabalı hata koumladırma, hata raporlarıı ve kayak dosyaları sırasıyla sorgu ve dokümaı temsil ettiği bir geri getirim işidir. Bu çalışmada, yeide sıralama tabalı bir BG tekiği kullaarak yazılım hata koumladırılması yapılmıştır. Özellikle, ilişkili kayak dosya souçları yeide düzeleerek doğruluk değerii arttırılması hedeflemiş ve bu yötem başarılı olmuştur. Öreği, yeide sıralama yötemi uyguladıkta sorasıda Eclipse veri seti içi E Yüksek 1 ölçütüe göre 151 adet fazla hata koumladırılmıştır. Ayrıca OSH ve OKS ölçütü değerlerii arttığı Tablo 3 de görülmektedir. Souç olarak, hata koumladırma içi yapıla BG tabalı yeide sıralama çalışması sistem getirim performasıı ve doğruluğuu öemli ölçüde arttırmıştır. 6. Gelecek Çalışmalar İleride gerçekleştirilebilecek sistem iyileştirme çalışmaları aşağıdaki gibidir: - Yeide sıralama işlemi öceside kayak kodlara ait yapısal bilgiler çıkartılırke uygulaa yötemler geliştirilebilir. Öreği, kayak kodlara ait sııf isimleri, kullaıla isimledirme stadardıa uygu (Pascal, Camel, Hugaria, Capital vb.) parçalaabilir. - Farklı yaklaşımları temel ala yeide sıralama tekikleri kullaılabilir. - Sistem doğruluğuu arttırmak içi kayak kodlar ve hata dosyaları üzeride sııfladırma veya kümele algoritmaları çalıştırılabilir. [4] Poshyvayk D., Y-G. Gueheeuc, A. Marcus, G. Atoiol, V. Rajlich (2006) Combiig Probabilistic Rakig ad Latet Sematic Idexig for Feature Idetificatio, Proceedigs of the 14th IEEE Iteratioal Coferece o Program Comprehesio (ICPC 2006), Athes, Greece, pp. 137 146. [5] Lukis S. K., N. A. Kraft ad L. H. Etzkor (2010) Bug localizatio usig latet dirichlet allocatio, Iformatio ad Software Techology, 52 (9), pp. 972 990. [6] Rao S. ad A. Kak (2011) Retrieval from software libraries for bug localizatio: a comparative study of geeric ad composite text models, I Proceedigs of the 8th Workig Coferece o Miig Software Repositories (MSR 11), pp. 43 52. [7] Nguye A.T., T.T. Nguye, J. AL-Kofahi, H. V. Nguye ad T. Nguye (2011) A topic-based approach for arrowig the search space of buggy files from a bug report, I Proceedigs of the 26th IEEE/ACM Iteratioal Coferece o Automated Software Egieerig, pp. 263 272. [8] Salto G., A. Wog, C. S. Yag (1975), A vector space model for iformatio retrieval, Joural of the America Society for Iformatio Sciece, 18 (11), pp.613-620. [9] Salto G. ad C. Buckley (1988) Term-weightig approaches i automatic text retrieval, Iformatio Processig & Maagemet, 24 (5), pp. 513 523. [10] Voorhees E.M. ad D. K. Harma (2003) Chapter Appedix: Commo Evaluatio Measures, the Eleveth Text Retrieval Coferece (TREC 2002), Natioal Istitute for Stadards ad Techology. [11] Maig C. D., P. Raghava ad H. Schütze (2009), A Itroductio to Iformatio Retrieval, Cambridge Uiversity Press. Kayaklar [1] 97 Thigs Every Programmer Should Kow,http://programmer.97thigs.oreilly.com/wiki/i dex.php/97_thigs_every_programmer_should_ko w [2] Lucee (2014), Iformatio about Apache Lucee, Retrieved Jue 21, 2014, from http://lucee.apache.org/core/. [3] Marcus A., A. Sergeyev, V. Rajlich ad J. I. Maletic (2004) A Iformatio Retrieval Approach to Cocept Locatio i Source Code, I Proceedigs of the 11th Workig Coferece o Reverse Egieerig (WCRE 2004), IEEE Computer Society, pp. 214 223.