=Paper= {{Paper |id=Vol-1721/UYMS16_paper_120 |storemode=property |title=Yazilim Gelistirmede Erken Asamalarda Toplanan Verinin Hata Tahmini Performansina Etkisi |pdfUrl=https://ceur-ws.org/Vol-1721/UYMS16_paper_120.pdf |volume=Vol-1721 |authors=Rana Ozakinci,Ayca Tarhan |dblpUrl=https://dblp.org/rec/conf/uyms/OzakinciT16 }} ==Yazilim Gelistirmede Erken Asamalarda Toplanan Verinin Hata Tahmini Performansina Etkisi== https://ceur-ws.org/Vol-1721/UYMS16_paper_120.pdf
    Yazılım Geliştirmede Erken Aşamalarda Toplanan
      Verinin Hata Tahmini Performansına Etkisi

                            Rana Özakıncı1 ve Ayça Tarhan2
                           1
                             rana.ozakinci@tubitak.gov.tr
TÜBİTAK - BİLGEM - Yazılım Teknolojileri Araştırma Enstitüsü (YTE), Ankara, Türkiye
                              2
                                atarhan@hacettepe.edu.tr
      Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü, Ankara, Türkiye



    Özet. Yazılım kalitesinin en önemli göstergelerinden biri geliştirme yaşam
    döngüsü boyunca gözlenen yazılım hatalarının eğilimidir. Yazılım hata tahmini
    modelleri, yazılım ürünlerinin hatalılık durumlarını gözlemlemeyi ve ileriye
    dönük hata eğilimlerini tahmin etmeyi mümkün kılar. Güncel hata tahmini
    modelleri genellikle yazılım kodlama aşamasına ilişkin dinamikleri ve
    ölçümleri kullanarak geliştirilmektedir. Bu durum, gereksinim analizi veya
    tasarım gibi yazılım geliştirme yaşam döngüsünün erken aşamalarına ait
    bilgilerin işlenememesine, dolayısıyla maliyet düşürme, etkin kaynak planlama
    gibi önleyici eylemlerden erken aşamalarda faydalanamamaya neden
    olmaktadır. Bu çalışmada, yazılım geliştirme yaşam döngüsünün gereksinim
    analizi veya tasarım aşamaları gibi erken aşamalarında hata tahmini yapan
    çalışmalar sistematik eşleme yöntemi ile incelenmiştir. Daha sonra, erken
    aşamalarda toplanan verilerin hata tahmin modellerinin performansına olan
    etkisini araştırmış çalışmalar belirlenmiş ve sistematik literatür tarama yöntemi
    ile incelenerek çeşitli niteliklerine göre sınıflandırılmıştır.
    Anahtar Kelimeler: Erken, hata tahmini, yazılım hatası, yazılım güvenilirliği,
    yazılım kalitesi, hata tahmin modeli, sistematik eşleme.



    Abstract. Defectiveness of the software can be seen as one of the most
    important factors that address software quality. Software defect prediction
    models enable to observe the defectiveness of the software as well as to
    estimate the forward looking trend of defects. Most defect prediction models
    are built according to the coding phase based metrics. Therefore, chances for
    taking preventive actions early in the lifecycle such as cost reduction or
    effective resource planning are missing due to the lack of information analysis
    in requirement or design phases. This paper provides a systematic mapping
    research of the literature in order to identify the early defect prediction studies.
    In addition, studies that examine the impact of the early lifecycle information
    to the performance of the software defect prediction models were selected and
    investigated with systematic literature review approach.
    Keywords: Early, defect prediction, software defect, software reliability,
    software quality, prediction model, systematic mapping.




                                            532
1 Giriş

Yazılım geliştirme, takvim baskısı, limitli bütçe ve farklı insan davranışlarını içeren
zor ve zahmetli bir iştir. Yoğun iş gücü gerektiren şartlarda geliştirilen çoğu yazılım,
geliştirme sürecinin değişik evrelerinde çeşitli türlerde hata ile karşılaşılma riskini
taşır. Bu hataların, önemsiz veya kritik sonuçlara neden olabilecek şekilde çok çeşitli
etkileri olabilir. Bu nedenle, yazılım sistemlerinde kalite güvenceyi sağlamak,
yazılımın güvenilirliğini garanti altına almak ve hataların etkisini en aza
indirebilmek, geliştirme yaşam döngüsünün erken aşamalarından itibaren önem taşır.
   Yazılımın en kaliteli şekilde geliştirilmesi hem müşteri hem de geliştiriciler
açısından son derece önemlidir. Bununla beraber, yazılımın güvenilirliğinin
sağlanabilmesi ve yazılımın çalışması sırasında oluşabilecek hataların en aza
indirilebilmesi için, yazılım kalitesini ön aşamalarda tahmin edebilmek, bu
doğrultuda önleyici eylemlerde bulunabilmek ve düzeltici önlemler alabilmek,
yazılım kalitesinde optimum düzeye ulaşmak için en etkili ve sağlıklı yöntemlerden
biridir [1].
   Literatürde yazılım kalite tahminine yönelik birçok çalışma mevcuttur. Ayrıca
endüstriyel alanda yazılım geliştiren büyük ve kurumsal organizasyonlar da yazılım
kalite tahmini modellerini kullanarak projelerin erken safhalarında hataları önleyici
etkinliklerde bulunmaktadır [2]. Yazılımın kalitesinin tahmini için uygulanan en
temel yöntem yazılım hatalılığın tahmininin yapılmasıdır. Yazılım geliştirme yaşam
döngüsü boyunca oluşabilecek hataları önlemek ve/veya en aza indirebilmek, yazılım
kalite tahmininin temelini oluşturur [3]. Yazılım güvenilirliğini ve hatalarını tahmin
etmeye yönelik mevcut modeller çoğunlukla kodlama ve test aşamalarına ait
ölçümleri kullanarak geliştirilmektedir. Fakat yazılım geliştirme yaşam döngüsünde
kodlama ve test aşamalarına gelindiğinde, düzeltici ve önleyici faaliyetler planlamak
için çok geç kalınmış olabilir. Bu soruna çözüm olarak, yazılım yaşam döngüsünün
gereksinim analizi veya tasarım gibi erken aşamalarında hata tahmini yapabilmek,
kalite kestirimi ve etkin kaynak, takvim ve maliyet planlaması açısından uygun
olacaktır [3]. Bunların yanında, erken tahmin modelleri, geliştirmenin ilk
aşamalarında etkin karar destek ve dengeleme analizi (trade-off analysis)
mekanizması olarak da kullanılabilir [4].
   Yazılım geliştirme yaşam döngüsünün gereksinim analizi, tasarım ve kodlamanın
erken aşamaları gibi evrelerinde, yazılımın sonraki aşamalarında oluşabilecek
hataları ve/veya hata-eğimli olabilecek modülleri kestirebilmek, geleceğe yönelik
etkin kalite planlamaları yapabilmek adına oldukça önemlidir. Bu çalışmanın temel
hedefi, yazılım geliştirme yaşam döngüsünün erken aşamalarına ait bilgileri, kodlama
aşamasından toplanan bilgilere ek olarak kullanarak hata tahmini yapmış modellerin
performansındaki değişimi incelemektir. Bu kapsamda öncelikle, yazılım geliştirme
yaşam döngüsünün erken aşamalarında hata tahmini yapmış olan akademik
çalışmalar sistematik eşleme yöntemi ile incelenmiştir. Daha sonra, erken
aşamalardan toplanan verilerin kodlama aşamasından elde edilen verilerle
oluşturulan modellere girdi olarak kullanılmasının modelin performansına olan etkisi
araştırılmıştır. Bu kapsamda belirlenen çalışmalar, sistematik literatür tarama
yöntemi ile detaylı bir şekilde incelenmiş ve kategorize edilmiştir.
   Bildirinin ikinci bölümünde yazılım hata tahmini alanında yapılmış akademik
çalışmalardan ve bulgularından bahsedilmiştir. Üçüncü bölümde, bu bildiride




                                         533
kullanılmış araştırma yönteminin tasarımına değinilmiştir. Dördüncü bölümde
araştırma sorularına ilişkin yanıtlar verilmiş, bulgular paylaşılmıştır. Son bölümde ise
çalışma özetlenmiş, sonraki dönemlerde yapılacak çalışmalar aktarılmıştır.


2 Yazılım Hata Tahmini ve İlişkili Çalışmalar

IEEE Standard Classification for Software Anomalies [5] standardında, yazılım
hatalarına ilişkin terimler için ortak bir sözlük oluşturulmuştur. Standarda göre hata
(defect); yazılım geliştirme yaşam döngüsünün erken aşamalarındaki iş ürünlerinde
rastlanabilen, iş ürününün gereksinimleri karşılayamamasına neden olan, düzeltilmesi
veya değiştirilmesi gereken çeşitli kusurlar veya eksiklikler olarak tanımlanır. Hata
terimiyle benzer anlamda kullanılan diğer terimlere ilişkin tanımlar ise şu şekildedir:
    Yanlışlık (Error): Doğru olmayan sonuçlara neden olabilen insan eylemi
    Kusur (Fault): Yazılım programı içinde arızaya neden olabilen temel
        yanlışlıklar
    Arıza (Failure): Program davranışının kullanıcı beklentilerinden sapması,
        üründen beklenen işlevin belirlenen gereksinimler ve limitler altında yerine
        getirilememesi
    Sorun (Problem): Kişinin bir sistemi kullanırken karşılaştığı zorluk,
        çözülmesi gereken olumsuz durum
   Bu tanımlardan yola çıkarak, yaşam döngüsünün erken aşamalarında
karşılaşılabilecekaksaklık, bozukluk ve aykırılıklar çalışma boyunca “hata” terimi
kullanılarak ele alınmıştır [6].
   Hata tahmin modelleri, yazılım ürününe ve/veya süreçlerine ait çeşitli
parametreler (metrikler, hata verileri vb.) yardımıyla gelecekte ortaya çıkabilecek
hataların öngörülmesini sağlamaktadır. Yazılım hata tahmininin başarıyla
gerçekleştirilmesi sayesinde, yazılımın hataya eğilimli bileşenleri önceden tespit
edilebilecek ve böylece bu modüllere daha çok test ve bakım kaynağı ayrılarak
uygulamada oluşabilecek kritik hataların önceden düzeltilebilmesi sağlanacaktır [7].


2.1 Hata Tahmini Üzerine Sistematik Araştırma Çalışmaları

Literatürde yazılım hata tahmini alanında yapılmış sistematik araştırma çalışmaları,
genel olarak kodlama aşaması ve sonrasında elde edilebilen verileri kullanarak
oluşturulmuş hata tahmini modellerini incelemiştir. Çatal ve Diri [7] 2009 yılında
yaptıkları çalışmada, 74 tane çalışmayı metrik tipleri, tahminleme yöntemleri ve
verisetleri bazında incelemiş ve PROMISE veri setinin açık olarak yayınlandığı 2005
yılından itibaren makine öğrenmesi yöntemlerinin ve açık verilerin kullanımında bir
artış gözlemlendiğini raporlamıştır. Çatal [8] 2011 yılında yaptığı çalışmada yazılım
hata tahmini ile ilgili 1990 ve 2009 yılları arasında yayınlanmış 90 tane makaleyi
araştırmış ve yayınlandığı yıllara göre sınıflandırmıştır. Bu çalışmanın en önemli
katkısı, bu konuda araştırma yapmak isteyen araştırmacılara metrikler, yöntemler,
veri kümeleri, performans değerlendirme kriteri ve deneysel sonuç bakış açılarından
yardımcı olmasıdır. Ayrıca çalışmada konu ile ilgili son yaklaşımlar anlatılıp




                                          534
değerlendirilmektedir. 2012 yılında Hall vd. [9], hata tahmini modellerinin
performansını araştırmaya yönelik sistematik gözden geçirme makalesinde, 2000 ile
2010 yılları arasında yayınlanmış 208 adet deneysel çalışmayı incelemiştir.
Çalışmanın temel amacı, yazılım bağlamının, hata tahmin tekniklerinin ve bağımsız
değişkenlerin, hata tahmin modellerinin performansına olan etkilerini
değerlendirmek olarak belirtilmiştir. Çalışmanın sonuçlarına göre, Naïve Bayes ve
Logistic Regression gibi basit modelleme tekniklerinin daha iyi performans
gösterdiği raporlanmıştır. Ayrıca farklı yazılım metriklerinin birlikte kullanımının da
model performansını arttırdığı belirtilmiştir. Wahono [10] 2015 yılında araştırma
eğilimlerini, veri setlerini, yöntemleri ve çatıları analiz ederek, 2000 ile 2013 yılları
arasında yayınlanmış 71 adet hata tahmini çalışmasını incelemiştir. Çalışmaların
%77’sinin sınıflandırma modeli kullandığı, %64’nün ise açık veri kümeleri ile deney
yaptığı raporlanmıştır. Yazarlara ait bir önceki çalışmada [11] 2000 ile 2015 yılları
arasında yayınlanmış 41 adet erken hata tahmini çalışması incelenmiştir. Bu
çalışmada modellerde kullanılan süreç özellikleri ve metriklerine odaklanılmıştır.
Çalışma sonuçlarına göre 41 adet erken hata tahmin çalışmasından 18 tanesinin süreç
bazlı verileri kullanarak hata tahmin modeli oluşturduğu görülmüştür. Ayrıca
incelenen çalışmaların %31’inde support vector machine, artificial neural networks,
genetic algorithm, K-means clustering ve decision trees gibi makine öğrenmesi
metodlarının kullanıldığı raporlanmıştır.


2.2 Erken Aşamalarda Toplanan Veriyi Kullanan Araştırma Çalışmaları

Literatürde bulunan yazılım hata tahmini modellerini sistematik olarak incelemiş
araştırmalarda [7][8][9][10], incelenen çalışmalarının sadece %5'i erken aşamalara
ilişkin veri kullanarak hata tahmini yapmaktadır. Bu durum, erken aşamaları ele
alarak hata tahmini yapan çalışmaların azlığını göstermektedir. Bunlara ek olarak
aşağıdaki çalışmalar, yazılım geliştirmenin erken aşamalarında kullanılan verinin
elde edilen sonuçlara olumlu etkileri üzerine odaklanmıştır.
    Tarhan ve Demirörs [12], gereksinim aşamasını takiben test tasarımı sürecinden
ve test geliştirme boyunca yapılan gözden geçirmelerden toplanan süreç verilerinin,
süreç üretkenliğine ve ürün kalitesine olan etkisini görmek adına bir çalışma
sunmuşlardır. Sonuçlara göre, süreç verisi analizinin süreç üretkenliğine bir etkisi
olmazken, test prosedürlerinin kalitesini olumlu şekilde etkilediği görülmüştür.
    Aslan vd. [13], küçük ölçekli bir yazılım şirketinde süreç işletim verisinin ürün
hatalılığı üzerine olan etkisini araştıran bir durum çalışması raporlamışlardır.
Çalışmanın sonuçları, süreç işletim verisini analize dahil etmenin tahmin
doğruluğunu arttırdığını göstermiştir.
    Söylemez ve Tarhan [14], süreç işletim verisinin toplanması ve analizini, dikey
hata sınıflandırması (orthogonal defect classification) tekniği ile birleştiren bir
yöntem sunmuştur. Geliştirme performansında ve ürün kalitesinde bir iyileştirme
olup olmadığını görebilmek adına, yöntemin uygulanmasından önce ve sonra hata
özellikleri analiz edilerek karşılaştırılmıştır. Karşılaştırma sonuçlarına göre, önerilen
yöntemin verimli ve etkili olduğu belirlenmiştir. Doğrulama ve geçerleme etkinlikleri
gibi hata tetikleyicilerin, geliştirme yaşam döngüsünün erken aşamalarında yazılım




                                          535
hatalarının tespit edilmesi açısından etkin olduğu, buna bağlı olarak yazılım
hatalarının maliyetinde bir düşüş görüldüğü ifade edilmiştir.
   Yazılımın erken aşamalarında hata tahmini yapan çalışmaların incelendiği
sistematik bir çalışma olarak sadece bir önceki çalışmamız [11] literatürde yer
almaktadır. Bu çalışma dışında erken hata tahmin modellerinin incelendiği sistematik
bir gözden geçirme çalışması bulunmamaktadır. Dolayısıyla şimdiki çalışmamız,
erken aşamalara özelleştirilmiş modellere ve hata tahmin performansına etkilerine
odaklanmak suretiyle yazılım hata tahmini araştırma alanına özgün bir katkı
sağlamaktadır.


3 Araştırma Yöntemi

Sistematik eşleme çalışmaları, belirlenen özel bir araştırma alanında yapılmış
literatür çalışmalarını yüzeysel bir bakış açısıyla inceleyerek, konu hakkındaki genel
kanıtları toplamayı amaçlar [15]. Sistematik literatür tarama çalışmaları ise, konu
hakkında daha özel araştırma sorularına odaklanmak suretiyle literatürü detaylı bir
şekilde incelemeyi ve sonuçları yorumlamayı amaçlar [16]. Bu çalışmada hedeflenen
kapsam için, sistematik eşleme çalışmasını takiben sistematik literatür tarama
uygulanmıştır. İlk olarak, sistematik eşleme yöntemi temel alınarak erken aşamalarda
uygulanabilen hata tahmin modellerini ele almış akademik yayınlara odaklanılmış,
alanda yapılmış temel çalışmalar belirlenmiş ve bunların genel görünüşü verilmiştir.
Ardından, erken aşamalara ilişkin bilgilerin mevcut hata tahmin modellerinin
performansına etkisini değerlendirmiş olan çalışmalar seçilmiş, sistematik literatür
tarama yöntemi temel alınarak daha detaylı şekilde incelenmiştir.

3.1 Araştırma Soruları

Çalışmada, yazılım geliştirme yaşam döngüsünün erken aşamalara ilişkin verileri
kullanarak hata tahmini yapmış modeller sistematik eşleme yöntemi ile incelenmiştir.
Bu modeller içinden, hem erken aşama hem de kodlama aşamasına ilişkin verileri
kullanarak hata tahmini yapmış olan modeller sistematik literatür tarama yöntemi ile
daha detaylı bir şekilde incelenmiştir. Bu sayede, ilgili çalışmalarda erken aşamalara
ilişkin verileri kullanan modellerin hata tahmini performansına etkisi
görülebilecektir. Bu doğrultuda literatürdeki çalışmaları sınıflandırmak için aşağıdaki
araştırma soruları belirlenmiştir. AS1 ve AS2 sistematik eşleme çalışması
kapsamında, AS3 ve AS4 sistematik literatür taraması kapsamında ele alınmıştır.

AS1: Erken hata tahmini hakkında yapılan çalışmaların eğilimi ne yöndedir?
     AS1.1: Yayınların yıllara göre dağılımı nasıldır?
AS2: Erken hata tahmin modelleri hangi yazılım geliştirme yaşam döngüsü (YGYD)
aşamaları ile ilişkilidir?
AS3: Gereksinim ve tasarım aşamalarından elde edilen verileri, kod aşamasında elde
edilen verilerle birlikte kullanan modellerin tasarımı nasıldır?
     AS3.1: Kullanılan hata tahmini yöntemleri nelerdir?
     AS3.2: YGYD bazında kullanılan metrikler nelerdir?




                                          536
     AS3.3: Modellerin performans değerlendirmesi hangi ölçümlerle yapılmıştır?
     AS3.4: Model hangi araç/ortam(lar) üzerinde uygulanmıştır?
     AS3.5: Çalışmalarda kullanılan veri setleri nelerdir?
AS4: Gereksinim ve tasarım aşamalarından elde edilen veriler kod aşamasından elde
edilen verilerle birlikte kullanıldığında tahmin modelinin performansına etkisi olmuş
mudur? Performansa etkisi varsa ilgili çalışmada raporlanmış mıdır?

3.2 Sorgu Metinleri

Hata tahmin modelinin YGYD’nin erken aşamalarında uygulandığı bilgisini elde
edebilmek amacıyla, yayının başlığında, özetinde veya anahtar kelimelerinde “early”
ve “earlier” kelimeleri aranmıştır. Sorgu metinleri aşağıda belirtildiği gibidir:

Title: ((“early” or “earlier”) and
Title – abstract – keywords: (“software defect” or “software fault” or “software
reliability”) and (“prediction” or “estimation” or “analysis”))

2000 ile 2015 yılları arasında yayınlanmış çalışmalar için aşağıda belirtilen dijital
kütüphanelerde aramalar yapılmıştır. İlk olarak dönen sonuç sayısı ve ilk aşamada
seçilen yayın sayısı Tablo 1’de verilmiştir.
           Tablo 1. Dijital Kütüphane Aramalarından Çekilen Çalışma Sayıları
           Dijital Kütüphane    İlk Arama Sonucu        İlk Aşamada Seçilenler
           ACM                          5                         1
           ScienceDirect                3                         1
           Scopus                       64                       20
           SpringerLink                 28                       16
           Web of Science               25                        9
           Wiley                        4                         1
           Toplam                      129                       48

3.3 Çalışma Seçim Kriterleri

Sistematik eşleme için kullanılacak birincil çalışmaları dahil etme ve eleme
kriterlerimiz Tablo 2’de belirtilmiştir. Bu kriterlere göre 41 adet yayın sistematik
eşleme çalışmasına dahil edilmiştir. Daha sonra AS3 ve AS4 araştırma sorularına
yanıt vermek üzere 6 adet çalışma seçilmiş ve bu çalışmalar sistematik literatür
tarama yöntemiyle detaylı olarak incelenmiştir.
   Tablo 2. Dahil Etme/Eleme Kriterleri
Dahil Etme Kriterleri                              Eleme Kriterleri
K1 Hata sayısı, hata eğilimi, hatalılık oranı      Var olan hataları tespit eden veya yerini
      gibi hata odaklı tahmin yapan yayınlar       belirleyen yayınlar
K2    Gereksinim ve/veya tasarım aşamasına         Gereksinim ve/veya tasarım aşamasına hiç
      değinmiş yayınlar                            değinmemiş, sadece kodlama ve sonrasına
                                                   ilişkin verileri ele alan yayınlar




                                             537
3.4 Veri Çıkarımı

Araştırma sorularını yanıtlamaya yönelik verileri çıkarma işlemi, çalışmaların çeşitli
özelliklere göre sınıflandırılmasıyla yapılmıştır. İlk olarak AS2’yi yanıtlamak
amacıyla tüm çalışmalar gözden geçirilmiş ve YGYD fazına göre sınıflandırılmıştır.
Daha sonra bu çalışmalar içerisinden kodlama aşamasına ilişkin verileri kullanan
modellere, erken aşama (gereksinim ve/veya tasarım) verisini de ekleyerek hata
tahmini yapan çalışmalar belirlenmiştir. Bu çalışmalar AS3 ve AS4’ü yanıtlamak
üzere detaylıca incelenmiş ve Tablo 3’de görülen ilgili kategorilere göre
sınıflandırılmıştır.
  Tablo 3. Analiz için çıkarılan veriler
 Veri Tipi        Veri Kümesindeki              Açıklama                           İlişkili
                  Değerler                                                         AS
 YGYD Fazı        Gereksinim, Tasarım,          Hata tahmin modeli için gerekli    AS2
                  Kodlama                       girdilerin elde edildiği yazılım
                                                geliştirme yaşam döngüsü fazı
 Tahmin           Çeşitli Makine                Hata tahmin modelinde kullanılan   AS3.1
 Yöntemleri       Öğrenmesi Yöntemleri          makine öğrenmesi yöntemleri
 Metrikler        Gereksinim, Tasarım,          Hata tahmin modelinde girdi        AS3.2
                  Kod Metrikleri                olarak kullanılan metrikler
 Performans       ROC, AUC, Probability         Hata tahmin modelinin              AS3.3
 Değerlendirme    of Detection, Probability     performansını ölçmek için
                  of False Alarms,              kullanılan performans
                  Precision, Accuracy,          değerlendirme ölçümleri
                  MAE, RMSE
 Modelin          Visual Basic, Weka,           Hata tahmin modelinin              AS3.4
 Uygulandığı      MATLAB                        uygulandığı araç/ortam
 Araç/Ortam
 Veri Seti        NASA MDP (Metric data         Hata tahmin modelinin              AS3.5
                  program), PROMISE             uygulandığı veri setleri



4 Bulgular

AS1: Erken hata tahmini hakkında yapılan çalışmaların eğilimi ne yöndedir?
    AS1.1: Yayınların yıllara göre dağılımı nasıldır?

Çalışmaların yıllara göre dağılımının düzensiz olduğu söylenebilir. 2005 yılından
itibaren yazılım hata tahmin çalışmalarına olan ilginin arttığı söylenmektedir [ 7] [10],
fakat erken aşamalara ilişkin hata tahmini yapan çalışmaların sayısı farklılık
göstermektedir (Şekil 1).




                                              538
                                                   7
                                                       5 5
                                                                     4
                                               3                 3       3
                                       2                     2               2
                        1 1 1 1            1
                                   0
                        2000
                        2001
                        2002
                        2003
                        2004
                        2005
                        2006
                        2007
                        2008
                        2009
                        2010
                        2011
                        2012
                        2013
                        2014
                        2015
            Şekil 1. Erken hata tahmini çalışmalarının yıllara göre dağılımı
AS2: Erken hata tahmin modelleri hangi yazılım geliştirme yaşam döngüsü (YGYD)
aşamaları ile ilişkilidir?

İncelenen çalışmalarda, verilerin toplandığı projelerde tercih edilen YGYD
metodolojisi net olarak belirtilmemiştir. YGYD fazları olarak; gereksinim analizi,
tasarım, kodlama, test ve sürüme açma aşamalarından bahsedilmektedir. Burdan yola
çıkarak, kullanılan YGYD metodolojisinin şelale yöntemi olduğu varsayımı
yapılmıştır. Şekil 2’de, erken hata tahmin modellerinde en çok tasarım aşamasına
ilişkin verilerin (%34) kullanıldığı görülmektedir. Gereksinim aşamasına ilişkin
veriler ise %25 oranında kullanılmıştır. Çalışmaya dahil edilen modellerin bir
kısmında, gereksinim ve/veya tasarım aşamasına ek olarak kodlama ve/veya test
aşamasına ilişkin verilerin de kullanıldığı görülmüştür. Erken aşamaları ele alan bu
modellerden, kodlama aşamasına ilişkin verileri de modele dahil edenlerin oranının
%30 olduğu söylenebilir. Test aşamasına ilişkin verileri de ele alan çalışmalar (%11)
düşük oranda da olsa mevcuttur.



                             11%
                                                        Tasarım
                                       34%
                                                        Kodlama
                       25%
                                                        Gereksinim
                                                        Test
                                 30%

                       Şekil 2. İlişkili YGYD Aşaması Dağılımı
AS3: Gereksinim ve tasarım aşamalarından elde edilen verileri, kod aşamasında elde
edilen verilerle birlikte kullanan modellerin tasarımı nasıldır?

İlgili araştırma sorusunu ve alt sorularını yanıtlamak için toplanan veriler Tablo 4’de
verilmiştir.




                                           539
              Tablo 4. Gereksinim/tasarım aşamalarından elde edilen verileri, kod aşamasından
           elde edilen verilerle birlikte kullanan modellerin tasarımı

Ref                                             Tahmin                           Performans
    YGYD Fazı        Hata Tahmin Yöntemi                         Veri Seti                              Kullanılan Metrikler
No                                               Aracı                             Ölçütü
                                                                                                   Gereksinim: action, conditional,
                     OneR, NaiveBayes with
                                                                                                   continuance, imperative,
                             kernel,
       Gereksinim,                                             CM1, JM1 ve                         incomplete, option, risk level,
[17]                   VotedPerceptron,          Weka                                ROC
          Kod                                                     PC1                              source, weak phrase
                     Logistic, J48, VFI, Ibk
                                                                                                   Kod: büyüklük ve karmaşıklık
                       ve Random Forest
                                                                                                   metrikleri
                                                              CM1, KC1, KC3,
                      Random Forest,                                                               Kod: büyüklük ve karmaşıklık
                                                              KC4, PC1, PC3,     ROC, AUC,
                     Bagging, Logistic                                                             metrikleri
[18] Tasarım, Kod                                Weka           PC4, MW1,         BOX plot,
                  regression, Boosting ve                                                          Tasarım: complexity, edge,
                                                                MC2, JM1,         Statistical
                        Naivebayes                                                                 node, brach count
                                                              MC1, PC2, PC5
                                                                                                   Gereksinim: action, conditional,
                                                                               ROC, Probability
                                                                                                   continuance, imperative,
                                                                                  of Detection
       Gereksinim,                             MATLAB          CM1, JM1 ve                         incomplete, option, risk level,
[19]                   K-Means clustering                                      (PD), Probability
          Kod                                    7.4.             PC1                              source, weak phrase
                                                                                of False Alarms
                                                                                                   Kod: büyüklük ve karmaşıklık
                                                                                      (PF)
                                                                                                   metrikleri
                                                                                                   Gereksinim: module, action,
                                                                                                   conditional, continuance,
       Gereksinim,                             Visual Basic                    Accuracy, MAE,      imperative, option, risk level,
[20]                   Genetic Algorithm                             PC1
          Kod                                      6.0                             RMSE            source, weak phrase
                                                                                                   Kod: büyüklük ve karmaşıklık
                                                                                                   metrikleri
                                                                                                   Gereksinim: action, conditional,
                                                                                                   continuance, imperative,
       Gereksinim,   Decision Tree C4.5 ve                                                         incomplete, option, risk level,
[21]                                           Rapidminer            CM1             ROC
          Kod         K-means clustering                                                           source, weak phrase
                                                                                                   Kod: büyüklük ve karmaşıklık
                                                                                                   metrikleri
                                                                                  Accuracy,        Gereksinim: action, conditional,
                                                                                Probability of     continuance, imperative,
       Gereksinim,       Density Based         MATLAB                             detection,       incomplete, option, risk level,
[22]                                                                 PC1
          Kod             Clustering             7.4                            Probability of     source, weak phrase
                                                                                 false alarm,      Kod: büyüklük ve karmaşıklık
                                                                                  Precision        metrikleri

           AS4: Gereksinim ve tasarım aşamalarından elde edilen veriler kod aşamasından elde
           edilen verilerle birlikte kullanıldığında tahmin modelinin performansına etkisi olmuş
           mudur? Performansa etkisi varsa ilgili çalışmada raporlanmış mıdır?

           Gereksinim ve tasarım aşamalarından elde edilen veriler, kodlama verisi ile
           oluşturulan modellere eklendiğinde, modellerin performansında artış görüldüğü
           raporlanmıştır. Performanstaki artışlar seçilen 6 adet çalışmada hem sayısal (ROC
           eğrisine ait grafiklerin karşılaştırılması, doğruluk değerleri gibi), hem de sözel olarak
           raporlanmıştır. Detaylı sonuçlar Tablo 5’de verilmiştir.




                                                               540
  Tablo 5. Çalışmalarda raporlanan sonuçlar

Ref No                                          Sonuçlar
         Model karşılaştırma sonuçları, gereksinimi ölçümlerinin hata tahmini için son derece
         yararlı olabileceğini göstermektedir. Gereksinim + kod metrik grubuyla ve Random
 [17]
         Forest tahminleme yöntemiyle oluşturulan modelin en iyi ROC eğrisine sahip olduğu
         grafiksel sonuçlarla raporlanmıştır.
         Çalışmada tasarım, kod, tasarım + kod metriklerinden oluşturulan modellerin en
         başarılısı tasarım + kod metriklerinden oluşturulan model olarak belirtilmiştir.
         Modellerin performans karşılaştırılması iki farklı istatistiksel teste göre yapılmıştır.
         Friedman testinin sonuçlarına göre, model performansları arasında istatistiksel olarak
 [18]    anlamlı farkın olduğu (p−value < 0,05) ispatlanmıştır. Wilcoxon testinin sonuçlarına
         göre ise, 7 veri setinde tüm metrik grubundan (tasarım + kod metrikleri) yapılandırılan
         modellerin performansa önemli ölçüde bir katkılarının olmadığı gözlenmiştir. Fakat
         geri kalan 6 veri setinde, tasarım ve kod metrikleri ile yapılandırılan modellerin
         performansının önemli ölçüde arttığı (p−value < 0,05) ispatlanmıştır.
         Bu çalışmada, test eforunu azaltmak ve daha kaliteli projeleri oluşturmak için
         gereksinim aşamasında mevcut verilerin de kullanıldığı hata tahmin modellerinin
 [19]    yararlı olacağı vurgulanmıştır. Füzyon modelin tahmin performansının CM1 veriseti
         için 0,99729 (probability of detection) ve 0,79518 (probability of false alarm) olduğu,
         PC1 veriseti için ise PD değeri 1, PF değeri 0,99724 olarak raporlanmıştır.
         Kodlama aşamasından toplanan verilerle oluşturulan hata tahmin modeline,
 [20]    gereksinim aşamasından toplanan veriler de eklendiği zaman, hata tahmin modelinin
         performansının yaklaşık %4 oranında arttığı raporlanmıştır.
         Tahmin modellerinin kod aşamasına ek olarak erken aşamalara ilişkin verileri de
         kullanacak şekilde yapılandırımlasının yararlı olabileceği belirtilmiştir. Kod ve
 [21]    gereksinim metriklerinin bir arada kullanıldığı modelde, çapraz geçerleme sonuçlarına
         göre hata tahmin performansı %100 kesinlik (Precision) ve %100 duyarlılık (Recall)
         oranında raporlanmıştır.
         Füzyon (gereksinim ve kod aşamasına ilişkin verilerin birlikte kullanıldığı) modellerin
         daha yüksek performanslı sonuçlar verdiği ve projenin erken aşamalarında
 [22]
         kullanılabilir olduğu söylenmiştir. Kod bazlı modelin doğruluk (accuracy) oranı 0,844
         iken, füzyon modelin doğruluk oranının 0,928 olduğu raporlanmıştır.

   İncelenen çalışmalarda, hata tahmin modelinin performansındaki artışların
nedeninin erken aşama bilgisi olduğu söylenmektedir. Performansın artışına sebep
olan etkenin kullanılan metrik sayısındaki artış olup olmadığı çalışmalar tarafından
tartışılmamıştır.


5 Sonuç ve Öneriler

Bu çalışmada, yazılım geliştirme yaşam döngüsünün gereksinim ve tasarım gibi
erken aşamalarına ilişkin bilgileri hata tahmin modeline dahil eden akademik
çalışmalar sistematik yöntemlerle taranmıştır. Erken aşama bilgisini, kodlama
aşaması bilgileri ile kullanarak tahmin modeli yapılandırmış çalışmalardaki
performans değişimleri incelenerek literatüre özgün bir katkı sağlanmıştır.




                                              541
   Detaylı olarak incelenen çalışmalarda, gereksinim ve tasarım aşamalarından
toplanan ölçümlerin, kod aşamasından toplanan ölçümlerle birlikte kullanıldığında,
hata tahmin modellerinin performansını arttırdığına ilişkin sonuçların raporlandığı
tespit edilmiştir. Bu çalışmalarda, performansın artışına sebep olan etkenin metrik
sayısındaki artış olup olmadığı incelenmemiştir. Gelecekte, erken aşamalardan ve
kod aşamasından toplanan verilerle hata tahmin modelleri oluşturmayı, tahmin
performanslarını karşılaştırmayı ve performansta artış görülmesi durumunda bunun
nedenini araştırmayı planlamaktayız.
   Erken aşamalarda kullanılan verilerin performans artışına katkısı olduğu kabul
edildiğinde, sadece erken aşamalardan toplanan veriler ile hata tahmininin yapılabilir
olduğunu görmek önemli olacaktır. Sistematik eşleme kısmına dahil ettiğimiz
çalışmalarda, sadece erken aşama bilgisini kullanan modellerin detaylıca incelenmesi
gerektiğini düşünmekteyiz.
   İncelenen çalışmalarda, erken aşamalarda yazılım hata tahmini yapan modellerin,
çok çeşitli yöntemler ve parametreler ile yapılandırıldığı görülmüştür. Yazılım
projesinin parametreleri (proje ekibi, geliştirme süreçleri, takvim, bütçe,
yöneticilerin/proje personelinin ihtiyaçları vb.) göz önünde bulundurularak, bağlama
en uygun yöntemi seçebilmek önem taşımaktadır. Bu doğrultuda, yazılım
parametrelerine göre kullanılması gereken metriklerin, tahmin yöntemlerinin ve
model performansını değerlendirme kriterlerinin belirtildiği bir kılavuz, yazılım hata
tahmini yapacak kişiler için yönlendirici olacak ve fayda sağlayacaktır. Sonraki
çalışmalarımızda, erken aşamaları adresleyebileceğini ve hata tahmin performansını
arttıracağını belirlediğimiz yazılım metriklerini ve tahmin yöntemlerini kullanarak,
çoklu durum çalışmaları yapmayı ve sonuçlarına göre erken aşamalarda hata
tahminine ilişkin yönlendirici bir kılavuz hazırlamayı planlamaktayız.


Kaynaklar

1.   C. Smidts, R. W. Stoddard and M. Stutzke. Software reliability models: an
     approach to early reliability prediction. Software Reliability Engineering, 1996.
     Proceedings., 7th International Symposium on, NY, 1996, pp. 132-141.
2.   Q. Song, Z. Jia, M. Shepperd, S. Ying and J. Liu. A General Software Defect-
     Proneness Prediction Framework. In: IEEE Transactions on Software
     Engineering, 37(3), pp. 356-370, (2011)
3.   Pandey, A.K., Goyal, N.K.: Early Software Reliability Prediction. Springer, New
     Delhi (2013)
4.   Norman Fenton, Martin Neil, William Marsh, Peter Hearty, Łukasz Radliński,
     and Paul Krause. 2008. On the effectiveness of early life cycle defect prediction
     with Bayesian Nets. Empirical Softw. Engg. 13, 5 (October 2008), 499-537.
5.   IEEE Standard Classification for Software Anomalies, in IEEE Std 1044-2009
     (Revision of IEEE Std 1044-1993), vol., no., pp.1-23, Jan 7 2010
6.   IEEE Recommended Practice on Software Reliability, in IEEE STD 1633-2008 ,
     vol., no., pp.c1-72, June 27 2008
7.   Çatal, C., & Diri, B. (2009). A Systematic Review Of Software Fault Prediction
     Studies, Expert Systems with Applications, 36, 7346–7354.




                                          542
8.  Çatal, Ç. (2011). Software Fault Prediction: A Literature Review and Current
    Trends, Expert Systems with Applications, 38, 4626-4636.
9. Hall, T., Beecham, S., Bowes, D., Gray, D., Counsell, S., (2012). A systematic
    literature review on fault prediction performance in software engineering. IEEE
    Trans. Softw. Eng. 38(6), 1276–1304
10. Wahono, R.S. (2015). A systematic literature review of software defect
    prediction: research trends, datasets, methods and frameworks. J. Softw. Eng. 1,
    1–16
11. Özakıncı, R. and Tarhan, A. (2016). The Role of Process in Early Software
    Defect Prediction: Methods, Attributes and Metrics. In: 16 th International
    Conference on Software Process Improvement and Capability Determination,
    SPICE 2016, Volume 609, pp. 287-300.
12. Tarhan, A., & Demirors, O. (2011). Investigating the effect of variations in the
    test development process: A case from a safety-critical system. Software Quality
    Journal, 19(4), 615–642.
13. Aslan, D., Tarhan, A., & Demirors, O. (2014). How process enactment data
    affects product defectiveness prediction—a case study. In R. Lee (Ed.), Software
    engineering research, management and applications (pp. 151–166). Heidelberg:
    Springer International Publishing.
14. Söylemez, M. & Tarhan, A. (2016). Challenges of Software Process and Product
    Quality Improvement: Catalyzing Defect Root-Cause Investigation by Process
    Enactment Data Analysis. Software Quality Journal.
15. Petersen, K., Feldt, R., Mujtaba, S., Mattsson, M.: Systematic mapping studies in
    software engineering. In: 12th International Conference on Evaluation and
    Assessment in Software Engineering. Volume 17. (2008)
16. B. Kitchenham and S. Charters, "Guidelines for Performing Systematic
    Literature Reviews in Software Engineering (Version 2.3)," Technical Report
    EBSE-2007-01, Keele Univ., EBSE, 2007.
17. Jiang, Y., Cukic, B., & Menzies, T. (2007). Fault prediction using early lifecycle
    data. In Eighteenth IEEE international symposium on software reliability (pp.
    237–246). Trollhättan, Sweden: IEEE Computer Society.
18. Jiang, Y., Cukic, B., Menzies, T., & Bartlow, N. (2008). Comparing design and
    code metrics for software quality prediction. 4th International Workshop on
    Predictor Models in Software Engineering PROMISE 08, 12, 11–18.
19. Kaur, A., Sandhu, P. S., & Bra, A. S. (2009). Early Software Fault Prediction
    Using Real Time Defect Data. 2009 Second International Conference on
    Machine Vision, 242–245.
20. P.Sandhu, S.Khullar, S.Singh, S.Bains, M.Kaur and G.Singh, A Study on Early
    Prediction of Fault Proneness in Software Modules using Genetic Algorithm,
    2010, World Academy of Science, Engineering and Technology.
21. Sandhu, P. S., Goel, R., Brar, A. S., Kaur, J., & Anand, S. (2010). A model for
    early prediction of faults in software systems. 2010 The 2nd International
    Conference on Computer and Automation Engineering (ICCAE), 4, 281–285.
22. Sandhu, P. S., Kaur, M., & Kaur, a. (2010). A density based clustering approach
    for early detection of fault prone modules. International Conference on
    Electronics and Information Engineering, Proceedings, 2(Iceie), V2525–V2530.




                                         543