<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Yazılım Hata Tahmininin Web Uygulamalarında Kullanılabilirlig˘i</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Serdar Bi¸cer ve Banu Diri</string-name>
          <email>banu@ce.yildiz.edu.tr</email>
          <email>mehmet.serdar.bicer@std.yildiz.edu.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Yıldız Teknik U</institution>
        </aff>
      </contrib-group>
      <fpage>613</fpage>
      <lpage>624</lpage>
      <abstract>
        <p>O¨ zet Yazılım testinde uygulanabilecek en basit yakla¸sım verilen bir kod par¸casındaki bu¨tu¨n olasılıkları test etmektir. Bu durum zaman ve bu¨tc¸e kısıtları nedeniyle pratikte imkansızdır. Yazılım hata tahmini yo¨ntemleri proje y¨oneticileri tarafından, test a¸samasında, kısıtlı olan kaynakları efektif bir ¸sekilde dag˘ıtmak i¸cin kullanılmaktadır. Bu alandaki ¸calı¸smalar o¨zellikle 2005 yılından itibaren artarak devam etmektedir. Bu c¸alı¸smada literatu¨rde var olan metriklerin web uygulamaları ic¸in yeterli olup olmadı˘gı sorgulanmı¸stır. Web uygulamaları u¨zerinde yaptıg˘ımız deneyler hata tahmininin web uygulamaları u¨zerinde optimum sonuc¸lar vermekten uzakta oldu˘gunu go¨stermektedir. Bu tip uygulamaları geli¸stirmede kullanılan ya¸sam d¨ongu¨su¨, dig˘er uygulamalar ic¸in kullanılanlarla aynı olsa da teknik bakımdan ayrı¸stıkları bazı noktalar bulunmaktadır. Bu nedenle yazılım hata tahmini alanında web uygulamalarına ¨ozel metrikler olu¸sturulmasını o¨nermekteyiz.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        y¨ontemler yazılım testinde g¨orev yapan ki¸silere test senaryolarının ne ¸sekilde
u¨retetilece˘gine ve organize edileceg˘ine karar vermelerine yardımcı olmaktadır.
Hatalı modu¨llerin do˘gru tahmin edilmesi yazılım testinin masrafını azaltır ve
proje y¨oneticileri kısıtlı kaynaklarını i¸slere atama konusunda daha rahat hareket
edebilirler [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ]. I˙dealde bir hata tahmini modeli bu¨tu¨n hataları dog˘ru tahmin
ederken hatasız modu¨lleri hatalı olarak i¸saretlememelidir. Ancak pratikte bu
duruma ¸cok az rastlanır [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. En yeni tahmin modelleri bile bu noktaya eri¸smekten
¸cok uzaktadır [
        <xref ref-type="bibr" rid="ref15 ref23">15, 23</xref>
        ]. Yu¨ksek tahmin oranına sahip modeller yu¨ksek yanlı¸s
alarm oranına sahiptir. Yu¨ksek yanlı¸s alarm oranları hatasız kodların bo¸s yere
test edilmesine yol a¸car. Bu durum yu¨ksek gu¨venlik gerektiren uygulamalar
i¸cin bir soruna yol ac¸maz c¸u¨nku¨ bu tip uygulamalarda kar¸sıla¸sılacak bir
hatanın bedeli ¸cok yu¨ksektir. Ama bu durum kaynak a¸cısından kritik projeler
i¸cin ciddi bir problemdir [
        <xref ref-type="bibr" rid="ref13 ref14 ref20">13, 14, 20</xref>
        ]. Kodun gereksiz yere go¨zden ge¸cirilmesi
test a¸samasını uzattıg˘ından bu¨t¸ce ve zaman kısıtlarını a¸sma riskini arttırır.
Bu nedenle mu¨hendisler do˘gru ve yanlı¸s tahmin oranlarını dengeleme yoluna
gitmelidir [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>
        Bu alanda c¸alı¸san ara¸stırmacılar ¸simdiye kadar hata tahmini modellerini
kurarken statik kod metrikleri, kod deg˘i¸sim metrikleri, geli¸stirici ve modu¨l
a˘gları gibi farklı metrik ku¨melerinden yararlandılar. Bunlar arasında statik
kod metrikleri 1970’lerden beri kullanılmaktadır [
        <xref ref-type="bibr" rid="ref1 ref19 ref4">1, 4, 19</xref>
        ]. Otomatik arac¸lar
yardımıyla da projelerden metrikleri ¸cıkarmak c¸ok daha kolay hale gelmi¸stir.
Ge¸cen yıllarda ara¸stırmacılar kullanılan metrik setlerinin tavan performansa
ula¸stı˘gını g¨ostermi¸stir [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Bu tavan etkisini ortadan kaldırmanın 2 yolu vardır:
– Var olan metrik setlerine yeni veri madencili˘gi teknikleri uygulamak
– Var olan veri madencili˘gi tekniklerini yeni metriklere uygulamak
Ara¸stırmalarda hata tahmini modellerinin performansını arttırmak ic¸in yeni
veri madencilig˘i teknikleri bulmaya ¸calı¸smanın harcanan emeg˘e de˘gmeyece˘gi
g¨osterilmi¸stir [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Bundan dolayı eg˘itim verisinin kalitesini arttırmak veya
kullanılan metrik setlerinde yenilik¸ci davranmak tahmin modellerinin performansını
arttırmak i¸cin daha efektif bir y¨ontem olacaktır.
      </p>
      <p>
        2012 yılı verilerine g¨ore Kuzey Amerika’nın %78’i, Avrupa’nın %63’u¨
Internet kullanmaktadır [
        <xref ref-type="bibr" rid="ref40">40</xref>
        ]. Du¨nya ¸capında yapılan Internet tabanlı i¸slemlerin yıllık
tutarı trilyon dolarlarla o¨l¸cu¨lmektedir [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ]. E-ticaret dı¸sında her gu¨n milyonlarca
kullanıcının arama motorları (¨orn: Google), sosyal payla¸sım platformları (o¨rn:
Facebook, Twitter), bilgi payla¸sımı (o¨rn: Wikipedia) gibi farklı ama¸clarla farklı
web sitelerini kullandıkları bilinmektedir. Bu kadar bu¨yu¨k bir Internet kullanımı
kar¸sısında firmalar a¸cısından eri¸silebilir olmak gu¨nu¨mu¨zde bu¨yu¨k bir ihtiya¸c
halini almı¸stır. Son yıllarda kızı¸san tarayıcı sava¸sları ve buna paralel geli¸sen
teknoloji ve performans artı¸sı geli¸stiricilerin bu alanda ilerlemesine imkan sag˘lamı¸stır.
Bu alanda geli¸stirme yaparken kullanılan teknolojilerin de ilerlemesiyle web
geli¸stiricileri artık daha ¨ozgu¨rce daha iyi uygulamalar c¸ıkarabilmektedir. Mobil
cihaz kullanımındaki artı¸sla birlikte web uygulamalarına artık c¸ok daha farklı
tipte ekranlardan eri¸silebilmek gibi gereksinimler eklenmeye ba¸slanmı¸stır.
      </p>
      <p>
        Ancak web uygulamalarındaki hatalar firmalara milyonlarca dolar
kaybettirmeye devam etmektedir. Web uygulamalarının masau¨stu¨ uygulamalardan farklı
olarak yu¨ksek eri¸silebilirli˘ge sahip olması gerekmektedir. Uygulamada ya¸sanacak
en ufak sıkıntıların firmalara faturası bu¨yu¨k olmaktadır. O¨ rne˘gin 2001 yılı ¸su¨kran
gu¨nu¨ tatilinde Amazon’un ya¸sadıg˘ı sıkıntılar 20 dakikada 500 bin dolar
kaybetmesine neden olmu¸stur [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Hataların go¨ru¨nmeyen faturası ise daha bu¨yu¨ktu¨r,
her hata kullanıcı sadakatinin bozulmasına ve mu¨¸steri kaybına neden
olmaktadır [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ].
      </p>
      <p>Web uygulamalarını geli¸stirmede kullanılan ya¸sam d¨ongu¨su¨, di˘ger
uygulamalar i¸cin kullanılanlarla aynı olsa da teknik bakımdan ayrı¸stıkları bazı noktalar
bulunmaktadır.</p>
      <p>– O¨ ncelikle web uygulamalarının geli¸stirilmesinde birden fazla programlama
dili, tasarım o¨zellig˘i, dı¸sarıdan kullanılmakta olan ku¨tu¨phane ve bile¸senler
bulunur. Bunlara ¨ornek olarak geleneksel programlama dilleri, script dilleri,
du¨z HTML sayfaları, XML tabanlı ¸sablon dosyaları, veritabanları, resimler
ve CSS kodları verilebilir.
– Geli¸stirilen uygulamalar tarayıcılara ba˘gımlı halde ¸calı¸smaktadır. Aynı kod
farklı tarayıcıda farklı ¸sekilde c¸alı¸sabilmektedir. Bunu o¨nlemek i¸cin kodun
tarayıcı ba˘gımsız ¸calı¸sacak ¸sekilde yazılması ve uygulamanın farklı tarayıcılar
i¸cin test edilmesi gerekmektedir.
– Gu¨venlik zafiyeti daha fazladır. O¨ ncelikle kullanıcı tarafında ¸calı¸san
kodlara eri¸sip incelemek ¸cok kolaydır. Ayrıca Internet aracılıg˘ıyla daha geni¸s bir
kullanıcı kitlesine hitap etti˘ginden daha fazla tehdite maruz kalmaktadır.
– Dı¸s du¨nya deg˘i¸simlerinden daha ¸cok etkilenmektedir. Internet ba˘glantısının
kaybolması veya yava¸slaması durumları geli¸stirme sırasında hesap edilmezse
istenmeyen durumlarla kar¸sıla¸sma ¸sansı yu¨ksektir.
– Uygulama bile¸senleri ger¸cek ortamda ve hatta geli¸stirme sırasında farklı
makinelere da˘gıtılmı¸s halde bulunabilir ve bu halde birbirleriyle uyumlu ve bir
bu¨tu¨n ¸calı¸smak durumundadırlar.</p>
      <p>
        Bu¨tu¨n bunlar uygulamanın karma¸sıklı˘gını arttırıcı fakto¨rlerdir [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ].
Bu ¸calı¸smada web uygulamaları ic¸in hata tahmini yapılarak performans
de˘gerlendirmesi yapılmaktadır. Ara¸stırma sorumuz ”Kullanılmakta olan
yazılım hata tahmini yo¨ntemleri web uygulamaları ic¸in ne kadar iyi
sonuc¸lar vermektedir?” ¸seklindedir.
      </p>
      <p>Ara¸stırma sorumuzu yanıtlayabilmek i¸cin a¸cık kaynak 6 web uygulamasının
hataya yatkınlıklarını dosya bazında inceledik. Bu i¸slem i¸cin yaygın olarak
kullanılmakta olan metrikler ve sınıflandırma algoritmalarını kullandık. Aldıg˘ımız
sonu¸clar mevcut hata tahmini yo¨ntemlerinin web uygulamaları ic¸in halen du¨¸su¨k
performansla c¸alı¸stı˘gını g¨ostermektedir.
2</p>
      <p>
        I˙lgili C¸ alı¸smalar
Yazılım hata tahmini alanındaki c¸alı¸smalar ¨ozellikle 2005 yılından itibaren
artarak devam etmektedir [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Bu c¸alı¸smalarda farklı tipte metrikler kullanılmakla
birlikte statik kod metrikleri yaygın olarak kullanılan metrik tiplerinin ba¸sında
gelmektedir [
        <xref ref-type="bibr" rid="ref1 ref12 ref15 ref16 ref18 ref19 ref21 ref27 ref33">1, 12, 15, 16, 18, 19, 21, 27, 33</xref>
        ]. Literatu¨rdeki ilk hata tahmini
¸calı¸sması satır sayısı kullanılarak yapılmı¸stır [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Daha sonra Halstead
metrikleri [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] ve McCabe metrikleri [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] kullanılmaya ba¸slanmı¸stır. Bu metrikler
uygulamanın karma¸sıklı˘gı ve boyutu hakkında fikirler vermektedir. Gu¨nu¨mu¨zde
en yaygın kullanılan metrik tipleri bunlardır. Ancak bu ¸calı¸smalarda genel
olarak masau¨stu¨ uygulamalarından ¸cıkarılan metrikler kullanılmı¸s olup herhangi
bir web uygulaması ic¸in ¸cıkarılmı¸s bir metrik seti bulunmamaktadır.
      </p>
      <p>
        Yazılım hata tahmininde kullanılan metrik setlerinden bir dig˘eri kod deg˘i¸sim
(code churn) metrikleridir [
        <xref ref-type="bibr" rid="ref10 ref26 ref28 ref9">9, 10, 26, 28</xref>
        ]. Bu metrik setleri Subversion ve GIT
gibi versiyon kontrol sistemlerinden ¸cıkarılmaktadır. Geli¸stiricilerin kod u¨zerinde
yaptı˘gı de˘gi¸siklikler kullanılarak, eklenen/silinen satır sayısı, yapılan deg˘i¸siklik
sayısı, deg˘i¸siklik yapan geli¸stirici sayısı gibi ¨ozellikler ¸cıkarılmaktadır. Kod
de˘gi¸sim metrig˘i ilk olarak Munson tarafından [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] ortaya atılmı¸stır. Yapılan
¸calı¸smalarda statik kod metriklerinden daha iyi sonuc¸ verdi˘gi g¨ozlenmi¸stir.
      </p>
      <p>
        Bunlar dı¸sında dig˘erlerine go¨re nispeten daha yeni bir metrik tipi olarak
sosyal a˘g metrikleri de yazılım hata tahmininde kullanılmaktadır [
        <xref ref-type="bibr" rid="ref17 ref31 ref39 ref41 ref6">6,17,31,39,41</xref>
        ]. Bu
¸calı¸smalarda kullanılan metrikler koddan ba˘gımsız olup, sosyal ag˘lar geli¸stirici
veya dosyalardan olu¸sturulmaktadır. Bu alanda c¸alı¸sanlar birbirine ba˘gımlılı˘gı
olan dosyalar veya aynı dosya u¨zerinde c¸alı¸smı¸s olan geli¸stiricileri birbirleriyle
ba˘glayarak sosyal a˘glar kurmu¸s bu a˘glardan sosyal a˘g analizi y¨ontemleri ile
metrikler ¸cıkarmı¸slardır.
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>Y¨ontem</title>
      <p>3.1</p>
      <sec id="sec-2-1">
        <title>Veri Ku¨meleri</title>
        <p>Bu bo¨lu¨mde c¸alı¸smada kullanılan veri ku¨meleri ve ara¸stırma y¨ontemleri
a¸cıklanmaktadır.</p>
        <p>Ara¸stırma su¨recinde ilk olarak literatu¨rde var olan metriklerin web uygulamaları
i¸cin yeterli olup olmadı˘gı sorgulanmı¸stır. Bu metrikler web uygulamalarına o¨zel
ortaya atılmı¸s olmasa bile programlama dillerinin genel yapısından dolayı
uygunluk g¨ostermeleri olasıdır. PHP tabanlı 6 uygulama incelenerek, statik kod
metrikleri ve kod de˘gi¸sim metrikleri kullanılarak uygulamalardaki hatalar tahmin
edilmeye c¸alı¸sılmı¸stır. Uygulamalar hakkında bazı istatistikler Tablo 1’den
g¨oru¨lebilir. Yapılan denemelerde her proje ic¸in 2 farklı tipte metrik seti ic¸in farklı
algoritmalar kullanılmı¸stır. Sonu¸cların deg˘erlendirilmesi ic¸in 10 katlı ¸capraz gec¸erleme
kullanılmı¸stır.
3.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Hata Tahmin Modeli</title>
        <p>Bu c¸alı¸smada makine ¨o˘grenmesi yo¨ntemlerine dayanan bir hata tahmin y¨ontemi
uygulanmı¸stır. Kullanılan y¨ontemin g¨orsel temsili S¸ekil 1’de g¨oru¨lebilir.
Versiyon kontrol sistemleri kodlara ve kod ge¸cmi¸slerine ula¸smak, buralardan
metrikler c¸ıkarmak i¸cin kullanılmı¸stır. Uygulamalarda yer alan dosyaların hataya</p>
        <sec id="sec-2-2-1">
          <title>Tablo 1: I˙ncelenen Uygulamalar</title>
          <p>Uygulama Adı Su¨ru¨m Geli¸stirici Sayısı Satır Sayısı Dosya Sayısı Commit Sayısı Hatalı Dosya Oranı
Laravel 3.0 54 51448 308 2559 %34
Symfony 2.2 753 285875 4048 13144 %49
phpMyAdmin 3.5 330 1140741 1142 70113 %24</p>
          <p>Guzzle 3.0 29 48052 413 632 %15
Wordpress 3.0 53 382600 1246 25712 %44</p>
          <p>
            Joomla 3.1 239 581606 5573 15726 %30
meyilli olup olmadıkları farklı tipte metrikler ve sınıflandırma algoritmaları
kullanılarak tahmin edilmeye ¸calı¸sılmı¸stır. Sınıflandırma i¸cin Naive Bayes, Bayes
Net ve Random Forest algoritmaları kullanılmı¸stır. Bu algoritmalar yazılım hata
tahmini alanında yaygın olarak kullanıldıkları ve genelde iyi sonu¸c verdikleri
g¨ozlendi˘gi i¸cin tercih edilmi¸stir [
            <xref ref-type="bibr" rid="ref15 ref19 ref23 ref8">8, 15, 19, 23</xref>
            ]. Girdi olarak statik kod metrikleri
ve kod de˘gi¸sim metrikleri kullanılmı¸stır. O¨ rnekleme sapmasını engellemek i¸cin 10
katlı c¸apraz ge¸cerleme kullanılmı¸stır. Deneylerin ger¸ceklenmesi i¸cin Weka
uygulaması [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ] kullanılmı¸stır. Veri setlerine e˘gitim ve test i¸slemlerinin uygulanması ile
hata tahmini sonu¸cları elde edilmi¸stir. Bu sonu¸clar performans ¨ol¸cu¨mu¨ a¸samasına
girdi olarak kullanılmı¸stır.
          </p>
        </sec>
        <sec id="sec-2-2-2">
          <title>S¸ekil 1: O¨ ˘grenme tabanlı hata tahmini sistemi mimarisi</title>
          <p>Veri C¸ ıkarma Veri c¸ıkarma i¸slemi her proje i¸cin benzer ¸sekilde ilerlemi¸stir.
O¨ ncelikle proje kodları Tablo 1’de belirtilen su¨ru¨mler ic¸in Github sayfalarından
indirilmi¸stir. Hatalı modu¨llerin i¸saretlenmesi ic¸in indirilen su¨ru¨mler temel
alınarak 1 sene i¸cinde hata olarak i¸saretlenmi¸s kod deg˘i¸simleri ¸cıkarılmı¸stır
ve de˘gi¸stirilmi¸s dosyalar hatalı olarak i¸saretlenmi¸stir. Bir kod deg˘i¸simini hata
olarak i¸saretleyebilmek i¸cin kod teslim mesajında (bug, error, fix, fail) gibi
anahtar kelimeler aranmı¸stır.</p>
          <p>
            Statik kod metriklerini ¸cıkarmak i¸cin Understand [
            <xref ref-type="bibr" rid="ref38">38</xref>
            ] adlı uygulama
kullanılmı¸stır. Bu metrik tipleri sadece programlama dilleri i¸cin kullanılabildi˘ginden,
veri setine sadece PHP ve JavaScript dosyaları dahil edilmi¸stir. Kod de˘gi¸sim
metriklerini ¸cıkarmak ic¸in basit bir script yazılmı¸stır. Bu metrik tipi i¸cin PHP
ve JavaScript dosyalarının yanında HTML, CSS ve XML dosyaları da veri
setine dahil edilebilmi¸stir. Sadece temel alınan su¨ru¨mden 1 sene o¨ncesine kadar
u¨zerinde deg˘i¸siklik yapılmı¸s dosyalar veri setine dahil edilmi¸stir.
Metrik Tipleri C¸ alı¸smada kullanılmak u¨zere statik kod metrikleri ve kod
de˘gi¸sim metrikleri se¸cilmi¸stir. Bu metrikler ara¸stırmalarda en yaygın kullanılan
metrik tipleri oldukları ve genelde iyi sonu¸c verdikleri g¨ozlendi˘gi ic¸in sec¸ilmi¸stir.
Kullanılan metrikler Tablo 2’de listelenmi¸stir.
          </p>
          <p>Tablo 2: Kullanılan Metrikler</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>Statik Kod Metrikleri</title>
        <p>Satır sayısı
Kod satır sayısı</p>
        <p>Bo¸s satır sayısı
Yorum satır sayısı
Yorum/kod oranı</p>
        <p>I˙fade sayısı
D¨ongu¨sel karma¸sıklık
Tasarımsal karma¸sıklık
Temel karma¸sıklık</p>
        <p>Yol sayısı
Kod blok seviyesi</p>
      </sec>
      <sec id="sec-2-4">
        <title>Kod Deg˘i¸sim Metrikleri</title>
        <p>Kod teslimi sayısı
Kod teslim eden ki¸si sayısı</p>
        <p>Eklenen satır sayısı</p>
        <p>Silinen satır sayısı</p>
        <p>Son su¨ru¨mde kod teslimi sayısı
Son su¨ru¨mde kod teslim eden ki¸si sayısı</p>
        <p>Son su¨ru¨mde eklenen satır sayısı</p>
        <p>Son su¨ru¨mde silinen satır sayısı</p>
        <p>
          Popu¨ler kod teslim eden ki¸si yu¨zdesi
Performans O¨ l¸cu¨mu¨ C¸ alı¸smada tahmin modellerinin performansı hata
tahmini ¸calı¸smalarında yaygın olarak kullanılan do˘gru pozitif oranı (DPO) ve yanlı¸s
pozitif oranı (YPO) ¨ol¸cu¨mleri kullanılmaktadır [
          <xref ref-type="bibr" rid="ref13 ref15 ref19 ref36 ref6">6, 13, 15, 19, 36</xref>
          ]. Bu ¨ol¸cu¨mler
tahmin algoritmalarının veri setleri kullanılarak eg˘itilmesi ve olu¸san tahmin
modellerinin test edilmesiyle elde edilmektedir. DPO modelin ger¸cekten hataya
yatkın olan modu¨lleri bulmadaki ba¸sarısını g¨osterirken YPO aslında hatasız olan
modu¨lleri hatalı i¸saretledig˘ini belirtir. Hata tahmininde DPO oranını
yu¨kseltip YPO oranını du¨¸su¨ren y¨ontemler daha de˘gerli bulunmaktadır. Bu nedenle
mu¨mku¨n oldu˘gunca (DPO, YPO) c¸iftini (1,0) ideal noktasına yakla¸stıran
tahmin yo¨ntemlerine ula¸smaya ihtiya¸c vardır. Maalesef bu ideal durum pratikte
¸cok nadir g¨oru¨lmektedir. O¨ l¸cu¨mlerin ideal duruma yakınlı˘gını o¨lc¸mek i¸cin denge
adı verilen performans o¨l¸cu¨tu¨ kullanılmaktadır. Belirtilen ¨ol¸cu¨tler (1), (2) ve (3)
kullanılarak Tablo 3’deki karı¸sıklık matrisi yardımıyla hesaplanmaktadır.
        </p>
        <p>S¸ekil 2: ROC e˘grisinde bo¨lgeler</p>
        <p>
          Dog˘ru tahmin bir modelin ba¸sarısını belirlemek ic¸in ¨onemli bir etkendir
ancak yanlı¸s tahmin de olduk¸ca ¨onemlidir. Bu durum S¸ekil 2’de g¨osterilmi¸stir.
Risk odaklı b¨olgedeki tahmin modelleri yu¨ksek DPO’ya sahip olmakla beraber
YPO’ları da oldukc¸a yu¨ksektir. Bu durum hata i¸cermeyen c¸ok sayıda dosyanın
hatalı olarak i¸saretlenmesi anlamına gelip, gereg˘inden fazla dosyanın incelenmesi
sonucunu do˘gurur. Bu da test a¸samasının masrafının artmasına neden
olmaktadır. Hatasızlı˘gın c¸ok o¨nemli oldug˘u projeler i¸cin bu kabul edilebilir bir durum
olmakla beraber projelerin c¸o˘gu bu kategoride yer almamaktadır. Masraf odaklı
b¨olge orta-du¨¸su¨k DPO’ya ve ¸cok du¨¸su¨k YPO’ya sahiptir. Bu b¨olgeye du¨¸sen
tahmin modelleri sınırlı kaynaklara sahip projeler ic¸in daha kullanı¸slıdır [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
        <p>Veri da˘gılımının normal da˘gılıma uyaca˘gını do˘grudan farz edemeyeceg˘imiz
i¸cin uygulanacak farklı yo¨ntemlerle bulunan sonuc¸ların birbirinden farklı olup
olmadı˘gının kontrolu¨ Mann-Whitney U testi kullanarak yapıldı.</p>
        <p>DP O =
Y P O =</p>
        <p>DP
DP + Y N</p>
        <p>Y P</p>
        <p>Y P + DN
Denge = 1 −</p>
        <p>Y P O2 + (1 − DP O)2</p>
        <p>√2</p>
        <p>Tablo 3: Karma¸sıklık matrisi
Tahmin Edilen</p>
        <p>Gerc¸ek Durum</p>
        <p>Hatalı Hatasız
Hatalı DP YP</p>
        <p>Hatasız YN DN
4</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Sonuc¸lar</title>
      <p>Ara¸stırma sorumuzu cevaplayabilmek i¸cin 6 veri seti u¨zerinde 10 katlı ¸capraz
ge¸cerleme ile 3 farklı sınıflandırma algoritması kullanılmı¸stır. Sonu¸clar Tablo 4 ve
5’de go¨ru¨lebilir. Tahmin modellerinin ba¸sarılarına denge o¨l¸cu¨mu¨ kullanılarak
karar verilmi¸stir. Sonu¸clar kar¸sıla¸stırılırken Mann-Whitney U testi kullanılmı¸stır.
Bu sonu¸clardan bazı ¸cıkarımlar yapmak mu¨mku¨ndu¨r. Uygulama bazında
kullanılan farklı algoritmalar arasında ba¸sarısı daha yu¨ksek olanlar koyu yazılmı¸stır.
Sınıflandırma algoritmaları arası performans kar¸sıla¸stırması yapıldıg˘ında
Random Forest ve Bayes Net algoritmalarının Naive Bayes’e g¨ore daha iyi sonuc¸lar
verdig˘i g¨oru¨lebilir.</p>
      <p>
        Metrik setleri ac¸ısından baktıg˘ımızda kod deg˘i¸sim metriklerinin statik kod
metriklerine go¨re daha iyi sonuc¸lar verdi˘gi g¨oru¨lebilir. Ortalama denge sonu¸cları
arasındaki farklar istatistiksel a¸cıdan anlamlı bulunmu¸stur. Bu sonu¸clar ¨onceki
¸calı¸smaları [
        <xref ref-type="bibr" rid="ref15 ref24 ref25 ref9">9, 15, 24, 25</xref>
        ] do˘grulamaktadır. Ancak en ba¸sarılı olan skorların
bu¨yu¨k ¸co˘gunlu˘gunda, tahmin oranı ¸co˘gu projede yu¨ksek c¸ıkmasına ra˘gmen
hatalı tahmin oranı da oldukc¸a yu¨ksektir. Bu durumun kaynak a¸cısından kısıtlı
projeler ic¸in pratikte sa˘gladıg˘ı bir yarar bulunmamaktadır. C¸ u¨nku¨ bu durum
hata ic¸ermeyen ¸cok sayıda modu¨lu¨n de hatalı olarak i¸saretlenmesine neden
olaca˘gı i¸cin test a¸samasında yu¨ksek efor harcanmasına sebep olup, hata
tahmininin kullanılma amacıyla o¨rtu¨¸smemektedir. Ortalama de˘gerlere bakıldıg˘ı
zaman DPO, YPO ve denge deg˘erlerinin bu alanda benzer performans kriterleri
kullanılarak yapılmı¸s di˘ger ¸calı¸smalarda bulunan o¨lc¸u¨mlerden [
        <xref ref-type="bibr" rid="ref19 ref22 ref24 ref25 ref37 ref9">9,19,22,24,25,37</xref>
        ]
daha du¨¸su¨k oldu˘gu g¨oru¨lebilir. Bu sonu¸clar web uygulamalarına ¨ozel bir hata
tahmini ¸calı¸sması yapılmasının gerekli oldug˘u y¨onu¨ndeki du¨¸su¨ncemizi
kuvvetlendirmi¸stir.
5
      </p>
    </sec>
    <sec id="sec-4">
      <title>Tartı¸sma</title>
      <p>Bu ara¸stırmada yazılım hata tahmininde uygulanmakta olan tekniklerin web
uygulamalarında ne kadar uygulanabilir oldug˘u ara¸stırılmı¸stır. Web
paradigması yu¨kseli¸sini 2000’li yılların ba¸sında yapmı¸s olsa da gu¨nu¨mu¨zde halen
gayet revac¸ta olan bir alandır. Bu tip uygulamalarda yapılan hatalar firmalara
¸cok daha pahalıya mal olmaktadır. Dog˘aları gereg˘i barındırdıkları teknik
detaylar nedeniyle web uygulamalarınının ayrı bir yere konması gerekmektedir.
Yazılım hata tahmini alanında bugu¨ne kadar yapılmı¸s ¸cok sayıda ¸calı¸sma var olsa</p>
      <p>Tablo 4: Statik Kod Metrikleri</p>
      <p>Naive Bayes Bayes Net Random Forest</p>
      <p>DPO YPO Denge DPO YPO Denge DPO YPO Denge
Laravel 0.39 0.21 0.54 0.78 0.44 0.65 0.88 0.48 0.65
Symfony 0.90 0.65 0.53 0.72 0.32 0.70 0.88 0.65 0.53
phpMyAdmin 0.40 0.16 0.56 0.42 0.20 0.57 0.42 0.14 0.58</p>
      <p>Guzzle 0.90 0.53 0.62 0.78 0.31 0.73 0.94 0.70 0.50
Wordpress 0.89 0.72 0.48 0.76 0.60 0.54 0.73 0.42 0.65</p>
      <p>Joomla 0.12 0.03 0.38 0.75 0.19 0.78 0.89 0.30 0.77
Ortalama 0.6 0.38 0.52 0.70 0.34 0.66 0.79 0.45 0.61</p>
      <p>Tablo 5: Kod Deg˘i¸sim Metrikleri
bile bu ¸calı¸smalar ara¸stırmanın ana fikrinden farklı nitelikler ortaya
koymaktadır. Var olan yo¨ntemlerin farklı uygulamalar ic¸in kullanılmasından ¸cıkarılan
sonu¸c, yazılım hata tahmini yo¨ntemlerinden bu alanda yeterince faydalanamadıg˘ı
kanısı dog˘urmu¸s ve bu alana ¨ozel bir ¸calı¸sma yapılması gerekti˘gi y¨onu¨ndeki
fikrimizi gu¨¸clendirmi¸stir. I˙lgili c¸alı¸smalarda ortaya c¸ıkarılmı¸s olan veri setinin
zenginle¸stirilmesi fikrine paralel olarak ilerisi ic¸in web uygulamalarında hata tahmini
yapılması i¸cin ¨ozel bir metrik seti ¸cıkarılması, bu sayede hata tahmininde
kullanılan veri setlerinin iyile¸stirilip bu tip uygulamalarda daha iyi sonuc¸lar alınması
tavsiye edilmektedir. O¨ zellikle kozmetik hataların o¨ne c¸ıktıg˘ı bu tip
uygulamalarda HTML/CSS ic¸in metrik seti ¸cıkarılması du¨¸su¨nu¨lebilir.</p>
    </sec>
    <sec id="sec-5">
      <title>Kaynaklar</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Akiyama</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>An example of software system debugging</article-title>
          .
          <source>In: IFIP Congress (1)</source>
          . pp.
          <fpage>353</fpage>
          -
          <lpage>359</lpage>
          (
          <year>1971</year>
          ), http://dblp.uni-trier.de/db/conf/ifip/ifip71-
          <fpage>1</fpage>
          .html# Akiyama71
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Alpaydın</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>Introduction to Machine Learning</article-title>
          . The MIT Press, 2nd edn. (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <article-title>[3] California power outages suspended-for now</article-title>
          . http://news.cnet.com/ 2100-1017-251167.html, accessed:
          <fpage>2014</fpage>
          -04-12
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perricone</surname>
            ,
            <given-names>B.T.</given-names>
          </string-name>
          :
          <article-title>Software errors and complexity: An empirical investigation</article-title>
          .
          <source>Commun. ACM</source>
          <volume>27</volume>
          (
          <issue>1</issue>
          ),
          <fpage>42</fpage>
          -
          <lpage>52</lpage>
          (
          <year>1984</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/ 69605.2085
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGarry</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pajerski</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zelkowitz</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Lessons learned from 25 years of process improvement: the rise and fall of the nasa software engineering laboratory</article-title>
          .
          <source>In: Software Engineering</source>
          ,
          <year>2002</year>
          .
          <article-title>ICSE 2002</article-title>
          .
          <article-title>Proceedings of the 24rd International Conference on</article-title>
          . pp.
          <fpage>69</fpage>
          -
          <lpage>79</lpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6] Bic¸er,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Bener</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.B.</given-names>
            ,
            <surname>C¸</surname>
          </string-name>
          <article-title>a˘glayan, B</article-title>
          .:
          <article-title>Defect prediction using social network analysis on issue repositories</article-title>
          .
          <source>In: Proceedings of the 2011 International Conference on Software and Systems Process</source>
          . pp.
          <fpage>63</fpage>
          -
          <lpage>71</lpage>
          . ICSSP '11,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2011</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1987875.1987888
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.R.</given-names>
          </string-name>
          :
          <source>Software defect reduction top 10 list. Computer</source>
          <volume>34</volume>
          (
          <issue>1</issue>
          ),
          <fpage>135</fpage>
          -
          <lpage>137</lpage>
          (
          <year>2001</year>
          ), http://dx.doi.org/10.1109/2.962984
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C</given-names>
            <surname>¸ atal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Diri</surname>
          </string-name>
          ,
          <string-name>
            <surname>B.</surname>
          </string-name>
          :
          <article-title>Review: A systematic review of software fault prediction studies</article-title>
          .
          <source>Expert Syst. Appl</source>
          .
          <volume>36</volume>
          (
          <issue>4</issue>
          ),
          <fpage>7346</fpage>
          -
          <lpage>7354</lpage>
          (May
          <year>2009</year>
          ), http://dx.doi.org/10. 1016/j.eswa.
          <year>2008</year>
          .
          <volume>10</volume>
          .027
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C</given-names>
            <surname>¸</surname>
          </string-name>
          <article-title>ag˘layan</article-title>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Bener</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Koch</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          :
          <article-title>Merits of using repository metrics in defect prediction for open source projects</article-title>
          .
          <source>In: Emerging Trends in Free/Libre/Open Source Software Research and Development</source>
          ,
          <year>2009</year>
          . FLOSS '09. ICSE Workshop on. pp.
          <fpage>31</fpage>
          -
          <lpage>36</lpage>
          (May
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Graves</surname>
            ,
            <given-names>T.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karr</surname>
            ,
            <given-names>A.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marron</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Siy</surname>
          </string-name>
          , H.:
          <article-title>Predicting fault incidence using software change history</article-title>
          .
          <source>IEEE Trans. Softw. Eng</source>
          .
          <volume>26</volume>
          (
          <issue>7</issue>
          ),
          <fpage>653</fpage>
          -
          <lpage>661</lpage>
          (
          <year>Jul 2000</year>
          ), http: //dx.doi.org/10.1109/32.859533
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Hall</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frank</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Holmes</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pfahringer</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reutemann</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Witten</surname>
            ,
            <given-names>I.H.</given-names>
          </string-name>
          :
          <article-title>The weka data mining software: An update</article-title>
          .
          <source>SIGKDD Explor. Newsl</source>
          .
          <volume>11</volume>
          (
          <issue>1</issue>
          ),
          <fpage>10</fpage>
          -
          <lpage>18</lpage>
          (
          <year>Nov 2009</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1656274.1656278
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Halstead</surname>
            ,
            <given-names>M.H.</given-names>
          </string-name>
          :
          <article-title>Elements of Software Science (Operating and Programming Systems Series)</article-title>
          . Elsevier Science Inc., New York, NY, USA (
          <year>1977</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Jiang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cukic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Fault prediction using early lifecycle data</article-title>
          .
          <source>In: Software Reliability</source>
          ,
          <year>2007</year>
          .
          <source>ISSRE '07. The 18th IEEE International Symposium on</source>
          . pp.
          <fpage>237</fpage>
          -
          <lpage>246</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Jiang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cukic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Cost curve evaluation of fault prediction models</article-title>
          .
          <source>In: Software Reliability Engineering</source>
          ,
          <year>2008</year>
          .
          <source>ISSRE</source>
          <year>2008</year>
          . 19th International Symposium on. pp.
          <fpage>197</fpage>
          -
          <lpage>206</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Lessmann</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baesens</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mues</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pietsch</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Benchmarking classification models for software defect prediction: A proposed framework and novel findings</article-title>
          .
          <source>IEEE Trans. Softw. Eng</source>
          .
          <volume>34</volume>
          (
          <issue>4</issue>
          ),
          <fpage>485</fpage>
          -
          <lpage>496</lpage>
          (
          <year>2008</year>
          ), http://dx.doi.org/10.1109/ TSE.
          <year>2008</year>
          .35
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>McCabe</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>A complexity measure</article-title>
          .
          <source>Software Engineering, IEEE Transactions on SE-2</source>
          (
          <issue>4</issue>
          ),
          <fpage>308</fpage>
          -
          <lpage>320</lpage>
          (
          <year>Dec 1976</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Meneely</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Williams</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Snipes</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Osborne</surname>
          </string-name>
          , J.:
          <article-title>Predicting failures with developer networks and social network analysis</article-title>
          .
          <source>In: Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of Software Engineering</source>
          . pp.
          <fpage>13</fpage>
          -
          <lpage>23</lpage>
          . SIGSOFT '08/FSE-16, ACM, New York, NY, USA (
          <year>2008</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1453101.1453106
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di</surname>
            <given-names>Stefano</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Chapman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>McGill</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          :
          <article-title>Metrics that matter</article-title>
          .
          <source>In: Software Engineering Workshop</source>
          ,
          <year>2002</year>
          .
          <source>Proceedings. 27th Annual NASA Goddard/IEEE</source>
          . pp.
          <fpage>51</fpage>
          -
          <lpage>57</lpage>
          (
          <year>Dec 2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Greenwald</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frank</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Data mining static code attributes to learn defect predictors</article-title>
          .
          <source>Software Engineering, IEEE Transactions on 33(1)</source>
          ,
          <fpage>2</fpage>
          -
          <lpage>13</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stefano</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ammar</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGill</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Callis</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chapman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>When can we test less?</article-title>
          <source>In: Software Metrics Symposium</source>
          ,
          <year>2003</year>
          . Proceedings. Ninth International. pp.
          <fpage>98</fpage>
          -
          <lpage>110</lpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Distefano</surname>
            , J.,
            <given-names>S</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>A.O.</given-names>
            ,
            <surname>(mike</surname>
          </string-name>
          <string-name>
            <surname>Chapman</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.</surname>
          </string-name>
          :
          <article-title>Assessing predictors of software defects</article-title>
          .
          <source>In: in Proceedings, workshop on Predictive Software Models</source>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Milton</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Turhan</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cukic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jiang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bener</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Defect prediction from static code features: current results, limitations, new approaches</article-title>
          .
          <source>Automated Software Engineering</source>
          <volume>17</volume>
          (
          <issue>4</issue>
          ),
          <fpage>375</fpage>
          -
          <lpage>407</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Turhan</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bener</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gay</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cukic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jiang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Implications of ceiling effects in defect predictors</article-title>
          .
          <source>In: Proceedings of the 4th International Workshop on Predictor Models in Software Engineering</source>
          . pp.
          <fpage>47</fpage>
          -
          <lpage>54</lpage>
          . PROMISE '08,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2008</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1370788. 1370801
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Mısırlı</surname>
            ,
            <given-names>A.T.</given-names>
          </string-name>
          , C¸ag˘layan,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Miranskyy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.V.</given-names>
            ,
            <surname>Bener</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Ruffolo</surname>
          </string-name>
          , N.:
          <article-title>Different strokes for different folks: A case study on software metrics for different defect categories</article-title>
          .
          <source>In: Proceedings of the 2Nd International Workshop on Emerging Trends in Software Metrics</source>
          . pp.
          <fpage>45</fpage>
          -
          <lpage>51</lpage>
          . WETSoM '11,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2011</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1985374.1985386
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Moser</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pedrycz</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Succi</surname>
          </string-name>
          , G.:
          <article-title>A comparative analysis of the efficiency of change metrics and static code attributes for defect prediction</article-title>
          .
          <source>In: Proceedings of the 30th International Conference on Software Engineering</source>
          . pp.
          <fpage>181</fpage>
          -
          <lpage>190</lpage>
          . ICSE '08,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2008</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1368088. 1368114
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Munson</surname>
            ,
            <given-names>J.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Elbaum</surname>
            ,
            <given-names>S.G.</given-names>
          </string-name>
          :
          <article-title>Code churn: A measure for estimating the impact of code change</article-title>
          .
          <source>In: Proceedings of the International Conference on Software Maintenance</source>
          . pp.
          <fpage>24</fpage>
          -.
          <source>ICSM '98</source>
          , IEEE Computer Society, Washington, DC, USA (
          <year>1998</year>
          ), http://dl.acm.org/citation.cfm?id=
          <volume>850947</volume>
          .
          <fpage>853326</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Nagappan</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ball</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Static analysis tools as early indicators of pre-release defect density</article-title>
          .
          <source>In: Proceedings of the 27th International Conference on Software Engineering</source>
          . pp.
          <fpage>580</fpage>
          -
          <lpage>586</lpage>
          . ICSE '05,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2005</year>
          ), http: //doi.acm.
          <source>org/10</source>
          .1145/1062455.1062558
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Nagappan</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ball</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Use of relative code churn measures to predict system defect density</article-title>
          .
          <source>In: Proceedings of the 27th International Conference on Software Engineering</source>
          . pp.
          <fpage>284</fpage>
          -
          <lpage>292</lpage>
          . ICSE '05,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2005</year>
          ), http: //doi.acm.
          <source>org/10</source>
          .1145/1062455.1062514
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Offutt</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Quality attributes of web software applications</article-title>
          .
          <source>IEEE Softw</source>
          .
          <volume>19</volume>
          (
          <issue>2</issue>
          ),
          <fpage>25</fpage>
          -
          <lpage>32</lpage>
          (
          <year>2002</year>
          ), http://dx.doi.org/10.1109/52.991329
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Pertet</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Narasimhan</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Causes of failure in web applications</article-title>
          .
          <source>Tech. Rep. CMUPDL-05-109</source>
          , Parallel Data Laboratory, Carnegie Mellon University (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Pinzger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nagappan</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Murphy</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Can developer-module networks predict failures?</article-title>
          <source>In: Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of Software Engineering</source>
          . pp.
          <fpage>2</fpage>
          -
          <lpage>12</lpage>
          . SIGSOFT '08/FSE-16, ACM, New York, NY, USA (
          <year>2008</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1453101.1453105
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Pressman</surname>
            ,
            <given-names>R.S.</given-names>
          </string-name>
          : Software Engineering:
          <article-title>A Practitioner's Approach. McGraw-Hill Higher Education, 6th edn</article-title>
          . (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>Shull</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brown</surname>
            ,
            <given-names>A.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lindvall</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Port</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rus</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tesoriero</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zelkowitz</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>What we have learned about fighting defects</article-title>
          .
          <source>In: Proceedings of the 8th International Symposium on Software Metrics</source>
          . pp.
          <fpage>249</fpage>
          -.
          <source>METRICS '02</source>
          , IEEE Computer Society, Washington, DC, USA (
          <year>2002</year>
          ), http://dl.acm.org/citation.cfm?id=
          <volume>823457</volume>
          .
          <fpage>824031</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <surname>Song</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shepperd</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cartwright</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mair</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Software defect association mining and defect correction effort prediction</article-title>
          .
          <source>IEEE Trans. Softw. Eng</source>
          .
          <volume>32</volume>
          (
          <issue>2</issue>
          ),
          <fpage>69</fpage>
          -
          <lpage>82</lpage>
          (
          <year>2006</year>
          ), http://dx.doi.org/10.1109/TSE.
          <year>2006</year>
          .1599417
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Sprenkle</surname>
            ,
            <given-names>S.E.</given-names>
          </string-name>
          :
          <article-title>Strategies for Automatically Exposing Faults in Web Applications</article-title>
          .
          <source>Ph.D. thesis</source>
          , University of Delaware, Newark, DE, USA (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <surname>Tosun</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Turhan</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bener</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Practical considerations in deploying ai for defect prediction: A case study within the turkish telecommunication industry</article-title>
          .
          <source>In: Proceedings of the 5th International Conference on Predictor Models in Software Engineering</source>
          . pp.
          <volume>11</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
          :
          <fpage>9</fpage>
          . PROMISE '09,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2009</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1540438.1540453
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <surname>Turhan</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bener</surname>
            ,
            <given-names>A.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di</surname>
            <given-names>Stefano</given-names>
          </string-name>
          , J.:
          <article-title>On the relative value of crosscompany and within-company data for defect prediction</article-title>
          .
          <source>Empirical Softw. Engg</source>
          .
          <volume>14</volume>
          (
          <issue>5</issue>
          ),
          <fpage>540</fpage>
          -
          <lpage>578</lpage>
          (
          <year>Oct 2009</year>
          ), http://dx.doi.org/10.1007/s10664-008-9103-7
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <article-title>Understand - source code analysis &amp; metrics</article-title>
          . http://scitools.com, accessed:
          <fpage>2014</fpage>
          -05-03
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <surname>Wolf</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schroter</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Damian</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nguyen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Predicting build failures using social network analysis on developer communication</article-title>
          .
          <source>In: Proceedings of the 31st International Conference on Software Engineering</source>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
          . ICSE '09, IEEE Computer Society, Washington, DC, USA (
          <year>2009</year>
          ), http://dx.doi.org/10.1109/ICSE.
          <year>2009</year>
          .5070503
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <article-title>World internet users statistics usage and population stats</article-title>
          . http://www. internetworldstats.com/stats.htm, accessed:
          <fpage>2014</fpage>
          -04-12
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <surname>Zimmermann</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nagappan</surname>
          </string-name>
          , N.:
          <article-title>Predicting defects using network analysis on dependency graphs</article-title>
          .
          <source>In: Proceedings of the 30th International Conference on Software Engineering</source>
          . pp.
          <fpage>531</fpage>
          -
          <lpage>540</lpage>
          . ICSE '08,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2008</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/1368088.1368161
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>