• Sonuç bulunamadı

Tekrar eden veri analizini kullanarak yazılım geliştirme için iyileştirilmiş hata tahmini

N/A
N/A
Protected

Academic year: 2021

Share "Tekrar eden veri analizini kullanarak yazılım geliştirme için iyileştirilmiş hata tahmini"

Copied!
151
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

FEN BøLøMLERø ENSTøTÜSÜ























TEKRAR EDEN VERø ANALøZøNø KULLANARAK YAZILIM GELøùTøRME øÇøN øYøLEùTøRøLMøù

HATA TAHMøNø























DOKTORA TEZø



Muhammed Maruf ÖZTÜRK





















Enstitü Anabilim DalÕ : BøLGøSAYAR VE

BøLøùøM MÜHENDøSLøöø



Tez DanÕúmanÕ : Doç. Dr. Ahmet ZENGøN























Nisan 2016

(2)
(3)

BEYAN









Tez içindeki tüm verilerin akademik kurallar çerçevesinde tarafÕmdan elde edildi÷ini, görsel ve yazÕlÕ tüm bilgi ve sonuçlarÕn akademik ve etik kurallara uygun úekilde sunuldu÷unu, kullanÕlan verilerde herhangi bir tahrifat yapÕlmadÕ÷ÕnÕ, baúkalarÕnÕn eserlerinden yararlanÕlmasÕ durumunda bilimsel normlara uygun olarak atÕfta bulunuldu÷unu, tezde yer alan verilerin bu üniversite veya baúka bir üniversitede herhangi bir tez çalÕúmasÕnda kullanÕlmadÕ÷ÕnÕ beyan ederim.

Muhammed Maruf ÖZTÜRK 03.05.2016

(4)

ÖNSÖZ











YazÕlÕm geliútirme maliyetlerinin %50'ye yakÕn bölümünü yazÕlÕm bakÕm maliyetleri oluúturmaktadÕr. YazÕlÕm sistemlerinin gün geçtikçe büyümesi ve karmaúÕklaúmasÕ yeni metot ve tekniklerin ihtiyacÕnÕ beraberinde getirmektedir. Bu yöntemlerden biri de yazÕlÕmlardaki tarihsel veriler incelenerek yapÕlan hata tahmin iúlemidir. Bu tez çalÕúmasÕnda yazÕlÕm hata tahmin performansÕnÕ arttÕran bir ön-iúleme algoritmasÕ geliútirilmiú, algoritmayÕ ve hata veri seti performans iúlemlerini de içeren bir yazÕlÕm çerçevesi sunulmuútur.

Doktora e÷itimim süresince bana her türlü yardÕmÕ esirgemeyen danÕúmanÕm Doç. Dr.

Ahmet ZENGøN'e ve tezin gerekli bilimsel yeterlili÷e ulaúmasÕ için tecrübe ve bilgilerini aktaran tez izleme komite üyeleri hocalarÕm Prof. Dr. øbrahim Çil ve Doç.

Dr. Ahmet Özmen'e, aileme;

Sonsuz minnet ve teúekkürlerimi sunarÕm.





(5)

øÇøNDEKøLER







ÖNSÖZ ... i

øÇøNDEKøLER ... ii

SøMGELER VE KISALTMALAR LøSTESø ... vi

ùEKøLLER LøSTESø ... vii

TABLOLAR LøSTESø ... x

ÖZET ... xii

SUMMARY ... xiii

BÖLÜM 1. GøRøù ... 1

1.1. Motivasyon ... 1

1.2. Tezin AmacÕ ... 2

1.3. Literatür TaramasÕ ... 4

1.3.1. Hata tahmini ile ilgili çalÕúmalar ... 4

1.3.2. Örnekleme teknikleri ile ilgili çalÕúmalar ... 6

1.4. Literatürdeki Eksiklikler ... 7

1.5. Tezin Bilime KatkÕsÕ ... 12

1.6. Tez PlanÕ ... 14

BÖLÜM 2. YAZILIM GELøùTøRME AùAMALARI ... 15

2.1. YazÕlÕm TasarÕmÕ ... 15

2.2. Gereksinim Analizi ... 18

2.3. YazÕlÕm Kalitesi ... 19

2.4. YazÕlÕm BakÕmÕ ... 22

2.5. YazÕlÕm Geliútirme Modelleri ... 23

(6)

2.5.3. Çevik geliútirme ... 24

2.5.3.1. Uç programlama ... 25

2.5.3.2. Scrum ... 25

2.5.3.3. Test-güdümlü geliútirme ... 26

BÖLÜM 3. YAZILIM HATA TAHMøNø ... 28

3.1. YazÕlÕm HatasÕ ... 28

3.2. YazÕlÕm Metrikleri ... 29

3.2.1. Statik kod metrikleri ... 30

3.2.2. Hata yönetim sistemleri ... 34

3.3. Hata Veri AmbarlarÕ ... 35

BÖLÜM 4. MAKøNE ÖöRENMESø VE øSTATøSTøKSEL YÖNTEMLER ... 37

4.1. Teori ... 37

4.2. Denetimsiz Ö÷renme ... 37

4.2.1. K-means algoritmasÕ ... 38

4.2.2. K-means++ ... 39

4.3. Denetimli Ö÷renme ... 40

4.3.1. Örnek-tabanlÕ ö÷renme... 41

4.3.1.1. Ezberci ö÷renme ... 42

4.3.1.2. En yakÕn-komúuluk-tabanlÕ ö÷renme ... 42

4.3.1.3. Sorgu-tabanlÕ ö÷renme ... 43

4.4. Lineer AyrÕútÕrÕcÕlar ... 44

4.5. A÷aç-tabanlÕ Ö÷renme ... 45

4.5.1. C4.5 algoritmasÕ ... 46

4.5.2. CART algoritmasÕ ... 47

4.5.3. Rastgele Orman algoritmasÕ ... 47

4.6. Bayes SÕnÕflandÕrÕcÕlarÕ ... 48

(7)

4.8.1. SMOTE algoritmasÕ ... 51

4.8.2. Virtual algoritmasÕ ... 52

4.9. SÕnÕflandÕrÕcÕ performansÕnÕn ölçümü ... 53

4.9.1 Çapraz onaylama (cross-validation) ... 53

4.9.2. Kesinlik-Geri ça÷Õrma performans parametreleri ... 54

4.9.3. KarÕúÕklÕk matrisi ... 55

4.10. østatistiksel Metotlar ... 57

4.10.1. ANOVA ... 57

4.10.2. T-Testi ... 60

4.10.3. Ki-kare testi ... 60

4.10.4. E÷ri uydurma ... 61

4.10.5. Spearman analizi ... 64

BÖLÜM 5. YENø BøR HøBRøT ÖN-øùLEME ALGORøTMASI TASARIMI VE HATA TAHMøN ÇERÇEVESø YAZILIMI ... 65

5.1. Ön-iúleme AlgoritmasÕ ... 65

5.2. YazÕlÕm ... 67

5.3. Metrik Türetimi ... 77

BÖLÜM 6. DENEYLER ... 79

6.1. Veri Seti DetaylarÕ ... 79

6.2. Test DetaylarÕ ... 80

6.3. E÷ri Uydurma Analizleri ... 84

6.4. Deney SonuçlarÕ ... 103

6.4.1 Düúük seviyeli metriklerin etkisi ... 103

6.4.2. Düúük seviyeli metrik t-test ... 107

6.5. Spearman Analizleri ... 109

6.6. Tekrar Eden Veri OranlarÕ ... 110

(8)

7.1. Bilimsel Bulgular ... 113

7.2. Geçerlilik için Tehditler ... 118

7.3. HSDD-SMOTE-Virtual KÕyaslama ... 119

7.4. SonuçlarÕn Özeti ve Gelecek ÇalÕúmalar ... 122

KAYNAKLAR ... 124

ÖZGEÇMøù ... 135

(9)

SøMGELER VE KISALTMALAR LøSTESø









AUC : Area under the curve / E÷rinin altÕnda kalan alan cCount : Character Count / Karakter sayÕsÕ

cS : Class Size / SÕnÕf büyüklü÷ü

Dnp : None defect prone / Hata yatkÕn de÷il Dp : Defect prone / Hata yatkÕn

F-measure : F-ölçüt de÷eri

FN : False nagative

FP : False positive

FPR : False positive rate G-mean : G-ortalama

Knn : K-nearest neighbor / K- en yakÕn komúuluk KLOC : 1000 satÕr kod sayÕsÕ

LOC : Kod satÕr sayÕsÕ

NTA : Number the attributes / Özellik sayÕsÕ

NNO : Total number of operations / Toplam iúlem sayÕsÕ

ROC : Receiver operating characteristic - øúlem karakteristik e÷risi SV : Support vektor / Destek vektörü

SVM : Support vector machine / Karar destek vektörü TBN : Transfer naive Bayes

TN : True negative

TNR : True negative rate / Özgüllük

TP : True positive

TPR : True positive rate / Hassasiyet



(10)

ùEKøLLER LøSTESø









ùekil 1.1. AúÕrÕ-uygunluk probleminin grafik yardÕmÕyla gösterilmesi ... 7

ùekil 2.1. YazÕlÕm geliútirme döngüsü ... 15

ùekil 2.2. YazÕlÕm kalite ölçüm referans modeli ISO/IEC 2520 ... 21

ùekil 2.3. YazÕlÕm kalite döngüsü ... 22

ùekil 2.4. Spiral model ... 24

ùekil 2.5. Scrum döngüsü ... 26

ùekil 2.6. Test-güdümlü geliútirme döngüsü ... 26

ùekil 3.1. YazÕlÕm hatalarÕnÕn sÕnÕflandÕrÕlmasÕ ... 28

ùekil 3.2. Kod üzerinden V(G) hesaplama ... 31

ùekil 3.3. BazÕ kod ifadelerinin dü÷üm-kenar gösterimleri ... 31

ùekil 3.4. V(G) hesaplama için dü÷üm-kenar örne÷i ... 32

ùekil 3.5. Bugzilla hata detaylarÕ ... 36

ùekil 4.1. Kümeleme... 38

ùekil 4.2. K-means algoritmasÕ ... 39

ùekil 4.3. K-means algoritmasÕna göre merkez ve verilerin hareketi ... 40

ùekil 4.4. En yakÕn-komúuluk örne÷i ... 43

ùekil 4.5. HatalÕ en yakÕn-komúuluk örne÷i ... 43

ùekil 4.6. Lineer ayrÕútÕrÕcÕ seçenekleri ... 44

ùekil 4.7. Lineer ayrÕútÕrÕcÕ örnekleri ... 45

ùekil 4.8. Karar a÷acÕ örne÷i ... 46

ùekil 4.9. Eú yükselti e÷rileri ... 50

ùekil 4.10. Lineer olmayan alanlar ... 50

ùekil 4.11. Dengesiz veri da÷ÕlÕmÕ ... 51

ùekil 4.12. SMOTE algoritma adÕmlarÕ ... 52

ùekil 4.13. Çapraz onaylama adÕmlarÕ ... 53

ùekil 4.14. Kesinlik-Geri ça÷Õrma hesaplamalarÕnÕn úema ile gösterimi ... 54

(11)

ùekil 4.17. Normal da÷ÕlÕm grafi÷i ... 58

ùekil 4.18. T-test grafi÷i ... 61

ùekil 4.19. Regresyon de÷erleri ... 62

ùekil 4.20. Enterpolasyon-e÷ri uydurma ... 62

ùekil 4.21. Lineer-Nonlineer e÷ri uydurma ... 63

ùekil 4.22. Monotonik fonksiyonlar ... 64

ùekil 4.23. y=exp(x) fonksiyonu ... 64

ùekil 5.1. AlgoritmanÕn akÕúÕ ... 66

ùekil 5.2. HSDD ... 67

ùekil 5.3. Önerilen çerçevenin iúlem aúamalarÕ ... 69

ùekil 5.4. YazÕlÕm ana ekran ... 70

ùekil 5.5. ROC detaylarÕ ... 70

ùekil 5.6. Seçilen sÕnÕfa ait potansiyel hata satÕrlarÕnÕn görülmesi ... 71

ùekil 5.7. Seçilen kodlara ait metrik detaylarÕ ... 72

ùekil 5.8. ANOVA analiz ekranÕ ... 73

ùekil 5.9. SÕnÕflandÕrma ve ön-iúleme ekranÕ ... 74

ùekil 5.10. Birinci adÕm t-test ... 75

ùekil 5.11. Birinci adÕm ki-kare ... 76

ùekil 5.12. økinci ve üçüncü adÕm t-test ... 76

ùekil 5.13. økinci ve üçüncü adÕm ki-kare. ... 77

ùekil 5.14. Metrik türetimi ... 78

ùekil 6.1. Ar3 cCount-cS analizi ... 85

ùekil 6.2. Ar3 üzerinde cS ve di÷er metrikler ... 85

ùekil 6.3. cS-karmaúÕklÕk iliúkileri... 86

ùekil 6.4. Ar6 veri setinde cS ve di÷er metrikler ... 87

ùekil 6.5. Cm1 veri setindeki analizler ... 87

ùekil 6.5. Cm1 veri setindeki analizler (DevamÕ) ... 88

ùekil 6.6. Jm1 veri setindeki analizler ... 88

ùekil 6.7. Kc1 veri setindeki analizler ... 89

ùekil 6.8. Kc2 veri setindeki analizler ... 90

(12)

ùekil 6.10. Pc1 veri setindeki analizler ... 91

ùekil 6.11. Pc2 veri setindeki analizler ... 92

ùekil 6.12. Pc3 veri setindeki analizler ... 92

ùekil 6.12. Pc3 veri setindeki analizler (DevamÕ) ... 93

ùekil 6.13. Pc4 veri setindeki analizler ... 93

ùekil 6.14. Pc5 veri setindeki analizler ... 94

ùekil 6.15. Jm1 veri setindeki analiz sonuçlarÕ ... 94

ùekil 6.16. KarmaúÕklÕk-cS x-b-r grafi÷i ... 95

ùekil 6.17. cS-cCount x-b-r grafi÷i ... 95

ùekil 6.18. Metrik türetimi sonrasÕ AUC de÷erleri ... 105

ùekil 6.19. Metrik türetimi öncesi AUC de÷erleri ... 105

ùekil 6.20. Metrik türetiminin Bayes sÕnÕflandÕrÕcÕ üzerindeki etkisi ... 106

ùekil 6.21. Metrik türetiminin naive Bayes sÕnÕflandÕrÕcÕ üzerindeki etkisi ... 106

ùekil 6.22. Metrik türetiminin Rastgele Orman sÕnÕflandÕrÕcÕ üzerindeki etkisi ... 106

ùekil 6.23. Metrik türetiminin J48 sÕnÕflandÕrÕcÕ üzerindeki etkisi ... 107

ùekil 6.24. Spearman analiz sonuçlarÕ ... 110

ùekil 6.25. Tekrar eden veri oranlarÕ ... 112

ùekil 7.1. 20 veri seti üzerindeki AUC ... 114

ùekil 7.2. Tüm veri setlerinde dört metri÷in scatterplot analizi ... 116

ùekil 7.2. Tüm veri setlerinde dört metri÷in scatterplot analizi (DevamÕ) ... 117

ùekil 7.2. Tüm veri setlerinde dört metri÷in scatterplot analizi (DevamÕ) ... 118

ùekil 7.3. Komúuluk sÕnÕf yapÕsÕ ... 119

ùekil 7.4. pc5 veri setinde g-mean sonuçlarÕ ... 121

ùekil 7.5. Lucene veri setinde g-mean sonuçlarÕ ... 121

ùekil 7.6. Kc1 veri setinde g-mean sonuçlarÕ ... 122

ùekil 7.7. Jm1 veri setinde g-mean sonuçlarÕ ... 122







(13)









Tablo 1.1. Literatür eksiklikleri özeti ... 13

Tablo 3.1. Halstead metrikleri. ... 33

Tablo 4.1. Denetimli ö÷renmeye uygun bir veri seti... 41

Tablo 4.2. Sorgu tablosu örne÷i. ... 44

Tablo 4.3. KarÕúÕklÕk matrisi. ... 55

Tablo 4.4. Performans parametre formülleri. ... 57

Tablo 4.5. ANOVA ... 59

Tablo 4.6. ANOVA parametre hesaplarÕ ve veriler ... 59

Tablo 4.7. ANOVA özet tablo. ... 59

Tablo 4.8. Ki-kare da÷ÕlÕm de÷erleri. ... 61

Tablo 5.1. Hata türleri ... 70

Tablo 6.1. Deneysel veri setlerinin detaylarÕ... 79

Tablo 6.2. AçÕk kaynak kodlu veri setlerine ait metrik detaylarÕ ... 81

Tablo 6.3. Endüstriyel veri setlerine ait metrik detaylarÕ ... 82

Tablo 6.4. T-test sonuçlarÕ... 83

Tablo 6.5. Ki-kare testi sonuçlarÕ ... 84

Tablo 6.6. Elenen veri oranlarÕ. ... 85

Tablo 6.7. Veri setleri cS-cCount regresyon analiz özeti ... 95

Tablo 6.8. Veri setleri complexity-cS regresyon analiz özeti ... 95

Tablo 6.9. Pc5 çoklu regresyon sonuçlarÕ ... 96

Tablo 6.9. Pc5 çoklu regresyon sonuçlarÕ (DevamÕ) ... 97

Tablo 6.10. Pc4 çoklu regresyon sonuçlarÕ ... 97

Tablo 6.10. Pc4 çoklu regresyon sonuçlarÕ (DevamÕ) ... 98

Tablo 6.11. Pc3 çoklu regresyon sonuçlarÕ. ... 98

Tablo 6.11. Pc3 çoklu regresyon sonuçlarÕ (DevamÕ). ... 98

Tablo 6.12. Pc2 çoklu regresyon sonuçlarÕ ... 99

Tablo 6.13. Pc1 çoklu regresyon sonuçlarÕ ... 100

Tablo 6.14. Kc1 çoklu regresyon sonuçlarÕ. ... 101

(14)

Tablo 6.16. Jm1 çoklu regresyon sonuçlarÕ (DevamÕ) ... 103

Tablo 6.17. cCount çoklu regresyon sonuçlarÕ. ... 103

Tablo 6.18. Düúük seviyeli metrikler eklendikten sonraki AUC de÷erleri ... 104

Tablo 6.19. Düúük seviyeli metrikler eklenmeden önceki AUC de÷erleri. ... 104

Tablo 6.20. Ar3 veri seti cs-cCount t-Test. ... 107

Tablo 6.21. Ar4 veri seti cs-cCount t-Test ... 108

Tablo 6.22. Ar5 veri seti cs-cCount t-Test ... 108

Tablo 6.23. Ar6 veri seti cs-cCount t-Test ... 108

Tablo 6.24. Özet cs-cCount t-Test ... 109

Tablo 6.25. Tekrar eden veri oranlarÕ ... 111

Tablo 7.1. Ön-iúleme öncesi AUC de÷erleri ... 115

Tablo 7.2. Ön-iúleme sonrasÕ AUC de÷erleri ... 115

Tablo 7.3. Ön-iúleme sonrasÕ Kesinlik de÷iúimleri ... 116













(15)

ÖZET











Anahtar kelimeler: Hata tahmini, yazÕlÕm metrikleri, yazÕlÕm kalitesi, makine ö÷renmesi

YazÕlÕm hata tahmini, yo÷un çaba gerektiren ve yazÕlÕm geliútirme maliyetlerini azaltmaya odaklanmÕú metotlarÕn geliútirildi÷i iúlemleri içerir. Veri analizleri için istatistiksel ve makine ö÷renmesi metotlarÕnÕn sÕklÕkla kullanÕldÕ÷Õ bu iúlemler hata veri setlerindeki bozukluk veya eksikliklerden kaynaklanan yanlÕú sonuçlarÕ üretebilmektedir. Bunlara ek olarak sÕnÕf dengesizli÷i (class imbalance) olarak adlandÕrÕlan hatalÕ verilerin sistemin belirli bölgelerinde yo÷unlaúmasÕndan kaynaklanan sorunlar da ortaya çÕkmaktadÕr. Tahmin edici modellerin do÷ruluklarÕnÕ arttÕrabilmek için hata veri setlerinin bir ön iúlemeden geçmesi gereklidir. Ancak bu úekilde güvenilir veriler üzerinde çalÕúÕlabilir. SMOTE, rastgele örnekleme gibi yöntemlerle hata veri setleri üzerinde iúlem yapÕlmaktadÕr. Bununla beraber hata veri setlerine yönelik özel bir örnekleme tekni÷i bulunmamaktadÕr.

Tezin amacÕ büyük veri setlerinde hÕzlÕ çalÕúabilen ve tekrar eden verileri yüksek do÷rulukla tespit edebilen bir ön-iúleme algoritmasÕ geliútirmektir. Algoritma, metrik türetimi ile ilgili iúlemleri kapsar. Bir di÷er amaç ise algoritmanÕn makine ö÷renmesi alanÕnda kullanÕlabilecek hata veri setlerine yönelik özel bir yöntem geliútirmektir.

Deney sonuçlarÕnda gözlenen kesinlik de÷erleri literartüdeki di÷er ön-iúleme yöntemlerinden üstün oldu÷u takdirde makine ö÷renmesi ikili sÕnÕflandÕrma veri setlerinde de kullanÕlabilir. Hata kesinli÷i yöntemle birlikte arttÕ÷Õ için yazÕlÕm geliútirme maliyetlerinin azaltÕlmasÕna katkÕ sa÷lamaktadÕr. Veri madencili÷i verilerinin temizlenmesi için geliútirilecek yöntemlere algoritmanÕn yön vermesi beklenmektedir. Yöntem, ANOVA, t-test, ki-kare gibi istatistik tabanlÕ metotlar kullanarak ikili sÕnÕflandÕrma verilerinde tekrar eden verilerin ortadan kaldÕrÕlmasÕnÕ sa÷layan bir veri temizleme algoritmasÕnÕ kapsar. Buna ek olarak düúük seviyeli metrik türetiminin ö÷renme algoritmalarÕnÕn baúarÕsÕna etkisi gözlemlenmiútir.

KullanÕlan makine ö÷renmesi yöntemleri ve istatistiksel iúlemler ile önerilen ön-iúleme algoritmasÕnÕ da içeren bir yazÕlÕm çerçevesi C# programlama dili kullanÕlarak geliútirilmiútir. Bu çerçeve çeúitli formattaki hata veri setleri üzerinde ikili sÕnÕflandÕrma performans analizlerini ve temel istatistiksel iúlemleri de yapabilmektedir. Önerilen yöntem 15 endüstriyel ve 5 açÕk kaynak olmak üzere toplamda 20 adet yazÕlÕm proje veri seti üzerinde denenmiú e÷rinin altÕnda kalan alan (auc) ve kesinlik (precision) performans parametrelerinde algoritmanÕn etkisi dört farklÕ sÕnÕlandÕrÕcÕ kullanÕlarak ölçülmüútür. Sonuç olarak HSDD algoritmasÕ iki de÷erlendirme parametresinde açÕk kaynak kodlu projelerde daha iyi sonuçlar üretmiútir.

(16)

A NEW IMPROVED DEFECT PREDICTION FRAMEWORK FOR SOFTWARE DEVELOPMENT USING REPEATED DATA

ANALYSIS





SUMMARY









Keywords: Defect prediction, Software Metrics, Software Quality, Machine Learning.



Defect prediction includes processes which develop methods that are required intensive effort and focused on reducing software costs. These processes, which use statistical or machine learning based techniques, may produce misleading results caused by skewness or deficiencies in defect data sets. In addition, a particular issue namely class imbalance is that reveals because of the wrong distribution of defects which are more in a part of the system than the other parts. In order to increase the accuracy of the predictors, defect data sets should be exposed to preprocessing. Merely this way provides a reliable investigation on right data. Some preprocessing methods such as SMOTE and random sampling help practitioners to obtain balanced data. However, there is not any special technique for defect prediction data sets.

The aim of this thesis is to develop a preprocessing algorithm which fast and gives high precision along with large-scale data especially in defect prediction data sets. The algorithm comprises the processes which are related to the deriving low level metrics.

Another aim is to make this algorithm more suitable for other machine learning data sets. . If experimental results are more suitable than other preprocessing methods in literature, the method could be used in other binary classification data sets. Due to the increase of the precision in results, software development cost decreases remarkably by this way. The method is expected to led new alternate data mining cleansing methods. If proposed method is applied in industry, it helps to reduce the cost of testing process that accounts for roughly 50 percent of development process. The method comprises the cleansing algorithm using statistical methods such as ANOVA, t-test, chi-square in which the removing process is preceeded. Further, the effects of the deriving low level metrics in the success of learning algorithms were observed.

A new framework including machine learning methods and statistical techniques is proposed in which developed using C# programming language. This framework is able to employ various data sets having different formats. Besides, proposed framework provides analyzing binary classification data and makes base statistical operation. The method was applied on 20 data sets including five open source and AUC and precision performance parameters. HSDD produced good results in open-source projects.

(17)

BÖLÜM 1. GøRøù

1.1. Motivasyon

YazÕlÕm hata tahmini, yazÕlÕm geliútirme ve bakÕm bütçelerinin iyi planlanmasÕna yardÕmcÕ olan bir dizi aktiviteyi kapsar [1]–[3]. YazÕlÕm boyutlarÕnÕn artmasÕ bu aktiviteleri zorunlu hale getirmektedir. YazÕlÕm boyutlarÕ arttÕkça, hata tahmini için geliútirilen modeller karmaúÕklaúmakta bu da daha çok zaman ve kaynak ihtiyacÕnÕ beraberinde getirmektedir [4], [5]. Hata tahmin modelleri bu ihtiyaçlarÕn planlanmasÕna yardÕmcÕ olmaktadÕr. Hata tahmin modelleri, yazÕlÕm hata tahmin veri setleri oluúturulurken kullanÕlan metrik standartlarÕ dikkate alÕnarak geliútirilmektedir. Bu standartlardan en çok kullanÕlanlarÕ LOC, McCabe, Halstead, CK, ve OO [6]–[8].

Bununla beraber, sadece belirli standartlarÕ kullanmak hata veri setlerinin kalite düzeylerinin güvenilirli÷i için yeterli de÷ildir [9].

Hata tahmin deneyi bir ikili sÕnÕflandÕrma problemidir [10]. Nitekim birçok çalÕúma ikili sÕnÕflandÕrma algoritmalarÕnÕn baúarÕlarÕ karúÕlaútÕrÕlarak gerçekleútirilmiútir.

Bunlar istatistiksel, analoji tabanlÕ, sinirsel a÷, destek vektör tabanlÕ, karar a÷acÕ ve topluluk metotlarÕ olabilir. Bununla beraber kullanÕlan sÕnÕflandÕrÕcÕnÕn önemi hata tahmin veri seti kalitesi ve di÷er süreç metriklerinden daha azdÕr [11], [12]. Veri setlerindeki gereksiz veya eksik özellikler sÕnÕflandÕrÕcÕnÕn baúarÕsÕnÕ azaltÕr [13].

Hata veri setlerindeki kalite problemleri ihmal edilebilir de÷ildir ve tahmin performansÕnÕ önemli ölçüde etkiler [14]. Veriler üzeride yapÕlan örnekleme ve budama gibi iúlemler ile bu sorunla mücadele edilmeye çalÕúÕlÕr [15]. YalnÕzca örnekleme veya budamadan birinin kullanÕlmasÕ daha farklÕ sÕnÕflandÕrma problemlerini beraberinde getirir. Dengesiz veri setleri için sadece budama iúlemi baúlÕ baúÕna faydalÕ verilerin ihmal edilmesi riskini içermektedir. Bu nedenle iyi bir e÷itim elde edilmeyebilir. Di÷er taraftan örnekleme tekni÷i büyük veri setlerinde yük getiren, çaba gerektiren iúlemdir.

(18)

Daha kötüsü, verilerin e÷itim süresi artar ve daha fazla bellek gerektirir. Bu iki yöntemin karÕúÕmÕ olan melez bir yöntem çözüm olabilir [16].

Statik kod metrikleri veya süreç metrikleri literatürde sÕklÕkla tartÕúÕlmaktadÕr [17], [18]. Süreç metrikleri ile geliútirilen tahmin modellerinin üretti÷i sonuçlar umut verici iken [19], [20] statik kod metrikleri ile geliútirilen modeller daha dura÷andÕr. Buna ra÷men statik kod metrikleri hata veri seti kalitesi açÕsÕndan tam olarak araútÕrÕlmÕú de÷ildir [21]. Statik kod metriklerinin avantajlarÕ otomatik ve ucuz toplanmasÕdÕr [22].

Di÷er taraftan tanÕmlanmamÕú modüllerin ayÕrt edilebilmesi için karakter sayÕsÕ gibi düúük seviyeli metriklerin kullanÕlmasÕ gereklidir [23]. AyrÕca hata veri setleri birbirine benzer örnekleri içermektedir. Bu örnekler tekrar eden veriler olarak adlandÕrÕlmakta ve sÕnÕflandÕrma baúarÕsÕnÕ olumsuz etkilemektedir. Bu da tekrar eden verileri do÷ru bir úekilde tespit edip eleyen bir metodun ihtiyacÕnÕ ortaya çÕkarmaktadÕr [24].

Bu çalÕúmada, düúük seviyeli metrik türetiminin sÕnÕflandÕrmaya etkisi araútÕrÕlmÕú ve tekrar eden verileri temizleyen bir yöntem önerilmiútir. Yöntem tera-PROMISE [25]

veri deposundan alÕnan 15 veri seti ve açÕk kaynak kodlu beú veri seti [25] üzerinde denenmiútir. 15 veri seti Softlab ve Nasa Metric Data Program (Nasa MDP) veri setlerinden oluúmaktadÕr. Ön-iúleme öncesi durumla ön-iúleme sonrasÕ durumu karúÕlaútÕrmak için Bayes, Naive Bayes, Rastgele Orman (Random Forest) ve J48 algoritmalarÕ ile sÕnÕflandÕrma baúarÕsÕ ölçülmüútür. Elde edilen sonuçlar e÷rinin altÕnda kalan alan (area under the curve, AUC) ve kesinlik (kesinlik) performans parametreleri ile de÷erlendirilmiútir. Ek olarak sÕnÕf karmaúÕklÕ÷Õ ile hata da÷ÕlÕmlarÕ arasÕndaki iliúki araútÕrÕlmÕútÕr.

1.2. Tezin AmacÕ

Makine ö÷renmesinin temel modellerinden denetimli ö÷renme detay özelliklerle daha anlamlÕ oldu÷undan, tahmin baúarÕsÕnda düúük seviyeli metrik türetiminin sÕnÕflandÕrÕcÕ baúarÕsÕnÕ arttÕrmasÕ amaçlanmÕútÕr. Geliútirilen ön-iúleme algoritmasÕnÕn büyük verilerle hÕzlÕ çalÕúmasÕ hedeflenmiútir. AlgoritmayÕ oluúturan istatistiksel analizlerin temel iúlemleri ortak kod üzerinden çalÕúacak úekilde düzenlenmiú, böylece veri

(19)

analizinde geçen süre kÕsaltÕlmaya çalÕúÕlmÕútÕr.

Ön-iúlemede kullanÕlacak istatistiksel metotlarÕn hata tahmin veri setlerine uygun metotlar olmasÕ ve veri seti üzerinde bu analizlere iliúkin hazÕrlÕklara en az ihtiyaç duyan metotlarÕn seçilmesi hedeflenmiútir. Örne÷in, hata veri setlerinde yer alan metrik alanlarÕ genel olarak sayÕsal verilerden oluúsa da hata-etiket bölümü "true/false" ya da

"Y/N" úeklinde yazÕ ifadeleri içermektedir. Bu ifadeler sayÕsal olarak "1/0" úeklinde yorumlandÕ÷Õnda matematiksel iúlemlerde problem oluúturmamaktadÕr. (AyrÕca seçilen istatistiksel metotlar matematiksel sayÕ bloklarÕnÕn a÷ÕrlÕklandÕrÕlarak de÷iúik úekillerde karúÕlaútÕrÕlmasÕ için en uygun yollarÕ içerir).

Metrikler arasÕndaki iliúkilere bakarak ve LOC, Halstead ve Chidamber-Kemerer gibi standartlarÕ da inceleyerek düúük seviyeli metrikleri türetmeyi ve bu metrikleri deneysel çalÕúmadaki veri setlerine de÷erleriyle birlikte eklemeyi amaçladÕk. Eklenen metriklerin bazÕlarÕ yöntem olarak mevcut fakat deneysel verilerde bulunmamakta, bazÕlarÕ ise literatürdeki standartlarda dahi yer almamaktadÕr. Örne÷in kod karakter sayÕsÕ metri÷i çoklu lineer iliúki çÕkarÕmlarÕyla elde edilebilecek düúük seviyeli bir metrik olup metrik standartlarÕnda yer almamaktadÕr. Bu metrikler, ö÷renme baúarÕsÕna dolayÕsÕyla tahmin baúarÕsÕna olumlu katkÕ yapmÕútÕr.

Ön-iúleme algoritmasÕnÕ yazÕlÕm hata veri setleri dÕúÕndaki di÷er veri setleri ile de test etmeyi amaçladÕk. Bu veriler veri tipi açÕsÕndan çok de÷iúkenli, sÕnÕflandÕrmaya uygun ve kategorik verilerdir [26].

Tezin amaçlarÕnÕ úu úekilde özetleyebiliriz:

i) YazÕlÕm hata veri setlerinde baúarÕlÕ bir ön-iúleme algoritmasÕ geliútirmek, ii) NASA MDP ve SOFTLAB veri setlerindeki tekrar eden veri oranlarÕnÕn açÕk kaynak kodlu di÷er hata veri setlerinde de genel olup olmadÕ÷ÕnÕ tespit etmek, iii) düúük seviyeli metrik kullanÕmÕnÕn tahminde kesinli÷e (precision) etkisini araútÕrmak ve önerdi÷imiz ön-iúleme yöntemini veri madencili÷inde sÕklÕkla çalÕúÕlan veri dengesizli÷i (class imbalance) probleminde kullanÕlacak bir veri budama yaklaúÕmÕ olarak sunmaktÕr.

(20)

1.3. Literatür TaramasÕ

1.3.1. Hata tahmini ile ilgili çalÕúmalar

Hata tahmin çalÕúmalarÕ iki yönlüdür: ilki, hata tahmin yatkÕnlÕ÷ÕnÕ tespit etmek için yapÕlÕr ikincisi kalan hatalarÕ tahmin eder [22]. Song ve arkadaúlarÕ [27] tarihsel verileri ve ö÷renme úemalarÕnÕ kullanarak hata yatkÕnlÕ÷ÕnÕ tespit etmeye çalÕúmÕúlardÕr.

ÇalÕúma üzerinde çalÕúÕlan farklÕ veri setleri için farklÕ ö÷renme úemalarÕ seçilmesi gerekti÷ini vurgulamÕútÕr. YazÕlÕm modüllerinin büyüklüklerinin hata yatkÕnlÕ÷Õ ile iliúkisi de bir baúka araútÕrma konusudur. Büyük ölçekli yazÕlÕm sistemlerinde büyük modüller ile karúÕlaútÕrÕldÕ÷Õnda küçük modüllerin daha hata yatkÕn oldu÷u tespit edilse de, bu varsayÕmÕn genelli÷ini do÷rulamak için tasarÕm ve kodlama ile ilgili daha detaylÕ bilgiler veren metriklere ihtiyaç duyuldu÷u belirtilmiútir [28]. Hata yatkÕnlÕ÷ÕnÕn yazÕlÕm geliútirme aúamalarÕnÕn hangisinde yapÕlmasÕ gerekti÷i de bir baúka araútÕrma konusudur [29]. TasarÕm seviyesinde yapÕlan hata tespitinin daha faydalÕ oldu÷u ancak OO modellerin [30] daha iyi analiz edilmesi gerekti÷i sonucuna ulaúÕlmÕútÕr [31]. HatalÕ modüllerin daha iyi tespit edilebilmesi için veri seti ve karmaúÕklÕk metriklerinin seçimi de önemlidir [32]. Ancak farklÕ alanlardaki(domain) veriler için genel bir kural oluúturulamamÕútÕr.

Birçok sÕnÕflandÕrma algoritmasÕnÕn baúarÕsÕ hata tahmini açÕsÕndan incelenmiútir.

Bunlardan en popüler olanlarÕ Bayes, Naive Bayes, Rastgele Orman, mantÕksal gerileme (logistic regression) ve destek vektör makineleri (support vector machine, SVM) dir [33]–[36]. KullanÕlan veri setlerindeki gürültü problemleri, deney koúullarÕ ve verilerin farklÕ olmasÕ bu parametrelere ba÷lÕ olarak algoritma baúarÕsÕnda de÷iúkenli÷e yol açmaktadÕr. DolayÕsÕyla bu algoritmalarÕn üstünlük açÕsÕndan araútÕrÕlmasÕ gereksizdir [11], [37].

Hata tahmini yapÕlÕrken e÷er e÷itim için gerekli veriler bir projeden, test için gerekli veriler de baúka bir projeden alÕnÕyorsa bu çapraz-proje hata tahmini olarak adlandÕrÕlmaktadÕr [38]. He ve arkadaúlarÕnÕn 34 veri seti üzerindeki araútÕrmalarÕnda çapraz-proje hata tahmininde e÷itim verilerinin dikkatli seçilmesi gerekti÷i savunulmuútur. Bu noktada ön-iúlemenin önemine dikkat çekmiúlerdir [39]. E÷er

(21)

rastgele modeller kullanÕlÕyorsa çapraz-proje tahmini iç-proje tahminine göre AUC performans parametresi açÕsÕndan daha iyi sonuçlar üretmiútir [40]. Ma ve arkadaúlarÕ TBN (Transfer Naive Bayes) olarak isimlendirdikleri bir a÷ÕrlÕklandÕrma algoritmasÕ geliútirmiúlerdir [41]. TBN çalÕúma zamanÕ açÕsÕndan umut vericidir. Hedef verilerin maximum ve minimum de÷erleri alÕnarak yapÕlan analizin verinin karakterini tam olarak yansÕtmadÕ÷Õ ve veriler daha fazla bilgi alÕnabilmesi için detaylÕ metrik araútÕrmalarÕna ihtiyaç duyuldu÷u sonucuna ulaúÕlmÕútÕr. Kamei ve arkadaúlarÕ [42]

çapraz-proje modelleri için JIT yaklaúÕmÕnÕ sunmuúlardÕr. Bu çalÕúmanÕn temel amacÕ tasarÕm aúamasÕnda geliútiriciye hatalar ile ilgili erken geri bildirimler sa÷lamaktÕr. 11 açÕk kaynak kodlu veri seti üzerindeki deneysel çalÕúmada veri seti seçiminin önemine dikkat çekilmiú ve daha iyi sonuçlar alabilmek için metrik setinin geniúletilmesi gerekti÷i vurgulanmÕútÕr. 8 proje üzerinde yapÕlan bir baúka araútÕrmada [43]

performans parametreleri açÕsÕndan çapraz-proje hata tahmini daha iyi Geri Ça÷Õrma (recall) göstermiútir. Aksine iç-proje tahmininde kesinlik parametresi daha etkilidir.

Rahman ve arkadaúlarÕ [40] çapraz-proje ile iç-proje hata tahminini dokuz farklÕ projenin farklÕ sürümlerini kullanarak karúÕlaútÕrmÕúlardÕr ve maliyet-hassas analizde çapraz-proje tahmininin iç-proje tahmini kadar iyi sonuçlar üretebildi÷i tespit edilmiútir.

Statik kod metrikleri üzerindeki ilk ses getiren detaylÕ çalÕúma Menzies ve arkadaúlarÕ tarafÕndan [17] yapÕlmÕútÕr. Nasa MDP veri setleri üzerinde yapÕlan deneysel çalÕúmada McCabe ve Halstead standartlarÕ sÕnÕflandÕrma baúarÕsÕ açÕsÕndan karúÕlaútÕrÕlmÕútÕr. Bu çalÕúmanÕn önemli sonuçlarÕndan biri daha iyi tahmin sonuçlarÕ alabilmek için bu standartlarÕn yenilenerek yeni metriklerin türetilmesi gerekti÷idir. AynÕ veri setlerini kullanan bir baúka çalÕúmada statik kod metrikleri açÕsÕndan özellik çÕkarÕmÕ ile ilgili daha fazla araútÕrmaya ihtiyaç duyuldu÷u vurgulanmÕútÕr [34]. KarmaúÕklÕk (complexity), eúleme (coupling) ve ba÷lÕlÕk (cohesion) metrikleri yazÕlÕm savunmasÕzlÕ÷Õ açÕsÕndan incelenmiú ve tahmin iúlemlerinin yazÕlÕm geliútirme sÕrasÕnda otomatikleútirilmesi ve süreç metriklerinin de incelenmesi gerekti÷i belirtilmiútir [44]. Malhotra statik kod metrikleri üzerinden tahmin modellerini karúÕlaútÕrmÕú ve AUC parametresi açsÕsÕndan makine ö÷renmesi modelleri mantÕksal gerileme modellerine göre daha üstün gelmiútir [45].

(22)

Statik kod metriklerinin dÕúÕnda süreç metrikleri de hata tahmininde sÕklÕkla kullanÕlmaktadÕr. Rahman ve Devanvu [19] 12 proje üzerinde süreç metrikleri ile statik kod metriklerinin tahmin baúarÕsÕnÕ AUC parametresi açÕsÕndan karúÕlaútÕrmÕútÕr. Bu çalÕúmaya göre süreç metrikleri statik kod metriklerine göre daha iyi sonuçlar üretmiútir. Ancak bu sonuç özellikle ticari projeler için veri kalite problemleri dikkate alÕndÕ÷Õnda geçerli olmayabilir. Bu da statik kod metrikleri üzerinde daha detaylÕ bir ön-iúleme sayesinde anlaúÕlabilir. Foucault ve arkadaúlarÕ sahiplik metrikleri ile yazÕlÕm kalitesi arasÕnda bir iliúki oldu÷unu regresyon modelleri ve spearman analizi ile ortaya çÕkarmÕú ancak sonuçlarÕn onaylanmasÕ için daha geniú bir metrik seti ile deneyin geniúletilmesi gerekti÷ini belirtmiúlerdir [46]. Yeni de÷iúen kodlar üzerinde süreç metriklerini kullanarak yapÕlan tahmin daha iyi sonuçlar üretebilir [20]. Ancak çapraz- proje iúlemi ve statik kod metrikleri üzerinde de denenmesi gereklidir.

1.3.2. Örnekleme teknikleri ile ilgili çalÕúmalar

Hata veri setlerinde sÕnÕflandÕrmayÕ olumsuz etkileyen birçok veri kalite problemi vardÕr. Bu problemlerden biri dengesiz veri setleridir. Dengesiz veri probleminde hatalar sÕnÕfÕn belli bölümünde yo÷unlaúÕr. Dengesiz verilerle iki çeúit baú etme yöntemi bulunmaktadÕr: örnek artÕrma (oversampling) ve örnek azaltma (under sampling) [15]. Örnek arttÕrma yöntemi örneklerin ço÷altÕlmasÕ esasÕna dayanÕrken, örnek azaltma yönteminde örneklerin bir bölümü elenir. Bu iúlem arzulanan sÕnÕf da÷ÕlÕmÕ için yapÕlmaktadÕr. Bununla beraber örnek arttÕrma yöntemi aúÕrÕ-uygunlu÷a neden olurken, örnek azaltma yöntemi bilgi verici örneklerin ihmal edilmesine yol açmaktadÕr [14]. Pears ve arkadaúlarÕ tarafÕndan SMOTE örnek arttÕrma algoritmasÕ Jazz veri deposu üzerinde denenmiú hata kesinli÷inde %80 verim elde edilmiútir.

Ancak örnek arttÕrma yöntemi ile türetilen örnekler gerçek dünya verilerin gerçek bir temsili olmayabilir [47]. SÕnÕf dengesizli÷i metotlarÕ Wang ve Yao [15] tarafÕndan 10 veri seti kullanÕlarak karúÕlaútÕrÕlmÕú ve AdaBoost.NC metodu balance, G-mean ve AUC parametreleri açÕsÕndan en iyi performansÕ sunmuútur. Hata veri setlerindeki gürültülü örneklerin tespiti için Kim ve arkadaúlarÕ [48] CLNI olarak isimlendirdikleri bir tespit algoritmasÕ geliútirmiúlerdir. Önerilen metot gürültülü örnekleri makul bir

(23)

kesinlik ile bulmaktadÕr. Bu çalÕúmanÕn sonuçlarÕndan biri daha az gürültülü örnekler için açÕk kaynak kodlu sistemlerde hata raporlarÕ ile ilgili bilgilerin geliútiriciler tarafÕndan eksiksiz bir úekilde girilmesi gerekti÷idir. AyrÕca úu anki çalÕúmalar gürültülü veriler ile baú etme problemini tam olarak çözmüú de÷ildir. økili ba÷ÕmsÕz de÷iúken (hatalÕ ve hatalÕ-de÷il) yerine çoklu-kategorili tahmin edicilerin kullanÕmÕ Shatnawi [49] tarafÕndan araútÕrÕlmÕútÕr. AçÕk kaynak kodlu CK metriklerini barÕndÕran veriler ile test edilen metot yedi sÕnÕflandÕrÕcÕda umut verici sonuçlar üretmiútir.

SonuçlarÕn geçerlili÷i için yöntemin dengesiz ve gürültülü verilerin azaltÕlmasÕna yönelik etkisinin araútÕrÕlmasÕ gerekti÷i vurgulanmÕútÕr. ùekil 1.1 (a)'da özellik sayÕsÕ az oldu÷u için bulunan denklem yanlÕú hüküm içermektedir. ùekil 1.1 (c)'de ise e÷itim e÷risi tüm örnekleri gürültüler ile birlikte yakalamÕútÕr. Bu durum aúÕrÕ-uygunluktur.

AúÕrÕ-uygunlu÷u aúabilmek için a÷ÕrlÕklandÕrma veya özellik sayÕsÕnÕn azaltÕlmasÕ ùekil 1.1 (b)'deki gibi çözüm olabilir.



ùekil 1.1. AúÕrÕ-uygunluk probleminin grafik yardÕmÕyla gösterilmesi, ùekil (a) baúarÕsÕz ö÷renme durumunu, ùekil (c) gürültülü örneklerin de ö÷renilmesi (aúÕrÕ ö÷renme) durumunu, ùekil (b) ise ideal e÷ridir

1.4. Literatürdeki Eksiklikler

YazÕlÕm parçalarÕnÕn sÕnÕflandÕrÕlmasÕ için bileúenlerin hata-yatkÕn ve hata-yatkÕn-de÷il úeklinde belirtilen özellikleri kullanÕlmaktadÕr. Bu özellikler belirlenirken daha önceden oluúturulan metrik tablolarÕndan faydalanÕlmaktadÕr. Makul düzeyde bir veri kalitesinin olmasÕ, baúarÕlÕ bir hata tahmini yürütebilmek için gereklidir [50], [51]. Fakat yazÕlÕm hata verilerinin elde edilmesi oldukça zordur. Ticari yazÕlÕm geliútiricileri genellikle hata ölçüm verilerine sahip de÷ildirler. AyrÕca böyle bir hata ölçüm sonucunun genelle

(24)

paylaúÕlmasÕ ticari açÕdan istenmez. E÷er hata seviyesi ciddi düzeylere ulaútÕysa kalite sonuçlarÕnÕ gizlemek kabul edilebilir fakat bu sonuçlar araútÕrmacÕlarla paylaúÕlÕrsa gelecek hatalarÕn önlenmesi için bir úans do÷ar.

AçÕk kaynak kodlu sistemler, araútÕrmacÕlar tarafÕndan hata veri setleri oluúturmak için sÕklÕkla kullanÕlmaktadÕr [52], [53], [54]. Geliútiriciler tarafÕndan kullanÕlan hata-izleme yazÕlÕmlarÕndan türetilen hata veri setlerinde çeúitli sorunlarla karúÕlaúÕlmaktadÕr. Bu sorunlardan biri hata bilgilerinin do÷ru ve tutarlÕ olup olmadÕ÷ÕdÕr. Bu açÕdan karúÕlaúÕlan sorunlarÕn temel nedenleri: veri ön-iúleme öncesi yetersiz dokümantasyon, makine ö÷renme metotlarÕnÕn uygulanmasÕ öncesi verilere yetersiz çaba gösterilmesi ve eksik raporlamadÕr [55]. YapÕlan iúlemlere insan müdahalesi gerekti÷i için bu veri setlerinden do÷ru bir úekilde hata verilerini elde etmek oldukça zaman alÕcÕ bir görevdir. Proje büyüklükleri ve hata bilgi akÕú hÕzlarÕ bu görevi olanaksÕz hale getirmektedir. Hata ile ilgili bilgilerin do÷rulanmasÕndan sonra sürüm kontrol mesajlarÕna girilmesi bu noktada bir çözüm olabilir. Böylece hata verileri daha sa÷lÕklÕ elde edilmiú olur. ÇalÕúmada önerdi÷imiz ön-iúleme algoritmasÕ hata verilerinin do÷rulanmasÕna yönelik yeni bir çözüm getirmektedir.

Hata tahmin çalÕúmalarÕnda ço÷unlukla tercih edilen ve aynÕ zamanda projemizde de kullanÕlacak olan veri setleri NASA ve PROMISE verileridir. Bu veri setleri belirli düzende oluúturulmuú birçok veri setini içermekle birlikte, veri madencili÷i algoritmalarÕnÕ kullanarak yapÕlan sÕnÕflandÕrmalar öncesinde yo÷un bir ön iúleme gerektirmez. KullanÕlan metrik kümesi ayrÕntÕlÕ olarak açÕklandÕ÷Õndan sistem modüllerinin özellikleri üzerinde araútÕrma yapmak kolaylaúÕr. AraútÕrmacÕlar NASA metrik programÕ (MDP) verilerini kullanÕrken verilerin belirli bir kalite düzeyinde oldu÷unu varsayarlar. Fakat ikili sÕnÕflandÕrma sÕrasÕnda belirli ön iúleme aúamalarÕndan geçmeyen veriler hatalÕ sonuçlarÕn çÕkmasÕna sebep olabilir [25]. Bu noktada önerilecek bir ön-iúleme algoritmasÕ ikili sÕnÕflandÕrma problemlerindeki veri kalitesinin önemine dikkat çekebilir ve araútÕrmacÕlarÕ kullanÕlan verileri kalite seviyesi noktasÕnda sorgulamaya sevk edebilir.

Hata tahmini ile ilgili çeúitli çalÕúmalar literatürde mevcuttur. Bunlardan biri Fenton ve

(25)

arkadaúlarÕnÕn çalÕúmasÕdÕr [56]. østatistiksel açÕdan tahmin yaklaúÕmÕ kullanÕlan çalÕúmada Bayes modeli kullanÕlmÕútÕr. Tahmin iúlemleri için kullanÕlan 22 sÕnÕflandÕrma modeli NASA MDP kullanÕlarak bir di÷er çalÕúmada incelenmiú, sonuç olarak LogReg, LP gibi lineer modeller benzer sonuçlar üretmiútir [27]. SÕnÕf dengesizli÷i üzerine yapÕlan çalÕúmalardan birinde [15] 10 veri seti üzerinde 5 farklÕ sÕnÕf dengesizli÷i ö÷renme metodu karúÕlaútÕrÕlmÕú ve AdaBoost.NC metodu en iyi sonucu üretmiútir. Fakat sadece C4.5 sÕnÕflandÕrma metodunun kullanÕlmasÕ daha fazla araútÕrma yapÕlmasÕ gerekti÷ini göstermektedir. Geliútiricilerin hata oluúumu üzerindeki etkisi de bir baúka araútÕrma konusudur. Menzies ve Koru 2013 yÕlÕnda bu konuyla ilgili yaptÕklarÕ araútÕrmada [57] dosyalar üzerinde de÷iúiklik yapan geliútirici sayÕsÕnÕn bilinmesinin tahmin için kullanÕúlÕ oldu÷unu, ancak hangi geliútiricinin bu de÷iúikli÷i yaptÕ÷ÕnÕn önemli olmadÕ÷ÕnÕ vurgulamÕúlardÕr. Bir di÷er çalÕúmada [3] geliútiricilerin sisteme eriúim bilgileriyle hata düzeyi arasÕndaki iliúki araútÕrmÕú, otomatik bir hata tespit aracÕ ile en problemli dosyalarÕn tespit edilmesinin yapÕlan çalÕúmaya yön verece÷i vurgulanmÕútÕr.

Tarihsel veriler yerine örnek tabanlÕ hata tahmininin gerçekleútirildi÷i Li ve arkadaúlarÕnÕn çalÕúmasÕnda [3] 5 adet PROMISE veri seti kullanÕlmÕútÕr. Çok hÕzlÕ de÷iúen projelerde tarihsel verilerin kullanÕmÕnÕn güçlü÷üne dikkat çekilmiú ve sorunun çözümü için ACoForest olarak adlandÕrÕlan bir ö÷renme metodu geliútirilmiútir.

Geliútirilen metot 0.685 F-skor ile MantÕksal gerileme, Naive Bayes, Karar a÷acÕ ve CoForest algoritmalarÕndan daha iyi performans elde etmiútir. Burada PROMISE veri setlerini ve Hall'Õn [58] çalÕúmasÕndaki gibi benzer sÕnÕflandÕrÕcÕlarÕ kullanmamÕzÕn temel nedeni teorik do÷rulama için uygun olmasÕdÕr.

E÷er statik kod özellikleri kullanÕlarak hata tahmin iúlemi yapÕlmak isteniyorsa, veri madencili÷i yöntemlerinin iyi bilinmesi gerekmektedir. Menzies ve arkadaúlarÕnÕn 2007 yÕlÕnda basÕlan yayÕnÕ makine ö÷renmesi tekniklerinin ve performans analizlerinin nasÕl yapÕlmasÕ gerekti÷i ile ilgili en çok atÕf alan çalÕúmalardan biridir [17]. Menzies ve arkadaúlarÕ hata tahmin ediciden (predictor) ziyade seçilen özellik kümesinin tahmin baúarÕsÕnÕ daha çok etkiledi÷ini vurgulamÕúlardÕr. 10 proje üzerinde yapÕlan 10 tekrar sonucunda Naive Bayes(log-filtreleme ile) algoritmasÕ J48 algoritmasÕna göre 71%

(26)

sonuçla daha iyi bulunmuútur. Naive Bayes algoritmasÕnÕ performans de÷erlendirmede seçilmesinin nedenlerinden biri budur.

Her ö÷renme metodu her hata veri seti için uygun de÷ildir. Örne÷in Song ve arkadaúlarÕ yeni bir hata tahmin çerçevesi geliútirmiú [27] ve bu görüúün do÷rulu÷unu savunmuúlardÕr. Buna ek olarak çalÕúmalarÕnÕn Menzies ve arkadaúlarÕnÕn [17]

çalÕúmasÕndan farklÕ yönlerini ortaya koymuúlardÕr. Bunlardan birisi Menzies ve arkadaúlarÕnÕn önerdi÷i çerçevenin sonuçlarÕnÕn seçilen veri setine göre de÷iúkenlik göstermesidir. Bu açÕdan Song'un çerçevesi daha tutarlÕ gözükmektedir. AyrÕca kullanÕlan veri setine göre ö÷renme úemasÕ seçilmesi gerekti÷i vurgulanmÕútÕr. Hata raporlarÕnÕ do÷rudan tahmin modeline sokmak do÷ru olmayabilir. Tahmin öncesi bir ön temizleme tahmin baúarÕsÕnÕ arttÕrabilir. Bu ba÷lamda Kim ve Kim'in çalÕúmasÕnda [48]

iki aúamalÕ bir tahmin modeli geliútirilmiú, ilk aúamada yetersiz raporlar elenmiú ve 70% oranÕnda do÷ru tespit yapÕlmÕútÕr. Bu çalÕúma da yapÕlan ön iúleme bakÕmÕndan çalÕúmamÕzÕ desteklemektedir. Ancak raporlarÕ sadece yeterlilik bakÕmÕndan incelememek, buna ek olarak benzer örnekleri içeren veri setlerinin tespit edilip e÷itim iúlemi öncesinde elenmesi gerekti÷ini savunuyoruz.

økili sÕnÕflandÕrma problemlerinde performans de÷erlendirmesi için ROC e÷rileri ve bu e÷rilerden elde edilen AUC, kesinlik, Geri Ça÷Õrma de÷erleri kullanÕlÕr [65].

Önerdi÷imiz hata tahmin çerçevesindeki sÕnÕflandÕrma baúarÕm analizlerini bu de÷erleri kullanarak gerçekleútirdik. Bu iúlemleri yaparken temel aldÕ÷ÕmÕz çalÕúma Davis ve Goadrich'in çalÕúmasÕdÕr [59]. Önerilen çerçeveyi geliútirirken NASA MDP verilerini kullanmamÕzÕn temel nedenlerinden biri farklÕ modelleme tekniklerine imkân vermesidir. Fakat kaynak kodlarÕna eriúimin olmamasÕ kapsamlÕ bir araútÕrma için kÕsÕtlama oluúturur [60]. Bu noktada hata raporlarÕnÕn el ile incelenmesi gerekebilir.

Herzig ve arkadaúlarÕ [55] 5 proje üzerindeki deneysel incelemelerinde 39% oranÕnda dosyalarda hata olmadÕ÷Õ halde hatalÕ olarak iúaretlendi÷ini tespit etmiúlerdir. Hata raporlarÕnÕn daha iyi analiz edilebilmesi için açÕk kaynak kodlu olmasÕ gerekti÷ini vurgulamÕúlardÕr. HatalarÕn yazÕlÕmÕn belirli bir bölümünde yo÷unlaúmasÕ sÕnÕf dengesizli÷i olarak adlandÕrÕlmaktadÕr. SÕnÕf dengesizli÷i probleminin çözümü için iki sÕnÕflandÕrÕcÕ önerilmiú, deneysel veriler için NASA ve SOFTLAB kullanÕlmÕútÕr.

(27)

AKPCAC olarak adlandÕrÕlan algoritma F-ölçüt (F-measure), Freidman's ve Tukey's [24] testlerinde di÷er algoritmaya göre daha iyi sonuç vermiútir.

AUC sÕnÕflandÕrma modellerinin baúarÕsÕ, karúÕlaútÕrmalarda sÕklÕkla kullanÕlmaktadÕr.

Örne÷in Lessmann ve arkadaúlarÕnÕn çalÕúmasÕnda [11] 20 adet sÕnÕflandÕrÕcÕ AUC de÷erleri ile kÕyaslanmÕú ve AUC'nin ayÕrt edici oldu÷u sonucuna varÕlmÕútÕr. Özellikle LogReg, LP gibi lineer modeller benzer sonuçlar üretmiútir. Tahmin baúarÕsÕnÕ temel alarak yapÕlan bir de÷erlendirmenin yetersiz olaca÷Õ süreç metriklerinin de de÷erlendirilmesi buna ek olarak yeni metriklerin tasarlanmasÕ gerekti÷i sonucuna varÕlmÕútÕr. Buradan yola çÕkarak bu çalÕúmada metrik türetimi konusu ele alÕnmÕútÕr.

NASA MDP verilerini kullanarak yapÕlan çalÕúmalardan birisi de Gray ve arkadaúlarÕnÕn çalÕúmasÕdÕr [23]. Veri temizleme üzerine odaklanÕlan çalÕúma 13 veri setinden elde edilen metriklerin ikili sÕnÕflandÕrmaya uygun hale getirilmesi amacÕyla belirli özelliklerin silinmesini kapsar. De÷erleri belli olmayan metriklere sÕfÕr de÷eri atanmÕútÕr. Sonuçlardan ilki kullanÕlan veri setinin geniúletilmesi gerekti÷idir. Bu sayede tekrar eden verilerin genel olup olmadÕ÷Õ bulunabilir. økincisi tekrar eden verilerin tespiti için daha düúük seviyeli metriklerin kullanÕlmasÕ, üçüncüsü de sÕnÕflandÕrmada tekrar eden verilerden kaynaklanan sorunlarÕn bulunmasÕdÕr.

YukarÕdaki çalÕúmalarÕn tamamÕ kullanÕlan metoda bakÕlmaksÕzÕn hata tahmin sonuçlarÕnÕn daha sa÷lÕklÕ elde edilebilmesi için tahmin verileri üzerinde derin incelemelerin gerekti÷ini anlatmakta, literatürde sÕklÕkla kullanÕlan statik kod metriklerinin yazÕlÕm modüllerini daha detaylÕ anlatan düúük seviyeli metriklerle birleútirilmesini vurgulamaktadÕr. AyrÕca hata tahmin verilerine özel olarak tasarlanmÕú bir ön-iúleme yöntemine ihtiyaç duyulmaktadÕr.

Tablo 1.1'de literatür eksikleri görülmektedir. Tablodaki "ÇalÕúma" sütunu çalÕúmayÕ yapan kiúileri ve çalÕúma ismini tarihi ile birlikte vermektedir. ÇalÕúmanÕn deneysel tasarÕm özelli÷i "Deneysel tasarÕm" sütunundan kontrol edilebilmektedir. "Veri kayna÷Õ" sütununda kullanÕlan deneysel verinin açÕk kaynak veya endüstriyel veri setlerinden oluútu÷u anlaúÕlmaktadÕr. AyrÕca bu sütunda deneysel veri seti adedi kaynak

(28)

adresi varsa birlikte sunulmuútur. "Sonuç" sütununda çalÕúmanÕn bulgularÕ yer almaktadÕr.

Tüm tablo özetlenecek olursa ilk olarak geçerli bir hata tahmin çalÕúmasÕ için deneysel ortamÕn gerekli oldu÷u görülmektedir. AyrÕca NASA MDP veri ambarÕ gibi deneysel verilerin geçerlili÷i yüksek olmalÕdÕr. SonuçlarÕ genelleyebilmek için endüstriyel veri setleri ile birlikte açÕk kaynak kodlu veri setlerinin kullanÕlmasÕ gerekmektedir. Hata tahmin çalÕúmalarÕnda özellikle veri kalitesi sorunlarÕ üzerinde duruldu÷u ve gürültülü verilere yönelik yeni yöntemlere ihtiyaç duyuldu÷u anlaúÕlmaktadÕr.

1.5. Tezin Bilime KatkÕsÕ

Veriler üzerinde iúlem yaparken sÕklÕkla kullanÕlan iki yöntem örnek-arttÕrma (oversampling) ve örnek-azaltma (undersampling) dir. Bu yöntemler, kullanÕlacak verinin büyüklü÷üne, nasÕl elde edildi÷ine ve kapsamÕna bakÕlarak kullanÕlmaktadÕr.

YapÕlan çalÕúmalar göstermiútir ki veriler üzerinde bu iki yöntemi de içeren hibrid bir metot geliútirmek en do÷ru seçimdir. Önerdi÷imiz yöntemin özgün de÷erlerinden ilki metrikler arasÕndaki iliúkileri ortaya çÕkarÕp bu iliúkileri kullanarak örnek arttÕrma iúlemini gerçekleútirmesi, di÷eri ise tekrar eden veri oranlarÕnÕ istatistiksel yöntemleri kullanarak bulmasÕ ve bu veriler üzerinde gerekli budamalarÕ yapmasÕdÕr. Böylece hem örnek arttÕrma hem de örnek azaltma iúlemlerini içeren yeni bir hibrid yöntem sunmuú oluyoruz.

ÇalÕúmamÕz seçti÷imiz deney verilerinin NASA MDP ve SOFTLAB verilerinden oluúmasÕ veri güvenilirli÷i ve daha önce yapÕlan çalÕúmalarda da sÕklÕkla kullanÕlmasÕ bakÕmÕndan bilimsel kalite unsurunu önce çÕkarmaktadÕr. Geliútirdi÷imiz algoritma örnek arttÕrma iúlemi için kullanÕlan SMOTE algoritmasÕna bir alternatif oluúturabilir.

Böylece makine ö÷renmesi alanÕna veri ön-iúleme için daha çok tercih edilen bir örnek arttÕrma metodu kazandÕrÕlabilir. Do÷al olarak önerilen yöntemin genel geçer olabilmesi için yazÕlÕm hata veri setleri dÕúÕnda baúka alanlarda farklÕ büyüklükteki veri

(29)

Tablo 1.1. Literar eksiklikleri özeti

(30)

setleri üzerinde de denenmesi gerekebilir. Diğer taraftan yazılım hata veri setlerinde örnek azaltma ve örnek arttırma operasyonlarının birlikte yapılmaması maliyet ve zaman açısından yazılım üretimlerini olumsuz etkilemektedir. Bu olumsuz etkenler göz önüne alındığında önerdiğimiz algoritmanın olumlu yönde bir iyileştirme yapması beklenmektedir. Song ve arkadaşları [27] kullanılan veri setine göre değişen bir tahmin şeması seçilmesini savunmuşlardı. Önerdiğimiz ön-işleme yöntemi ile Rastgele Orman algortiması gibi bazı sınıflandırıcılarda diğerlerine nispeten daha iyi sonuçların elde edilmesi hedeflenmektedir. Ancak genel olarak bakıldığında sınıflandırıcıya ve veri setine bağlı olmayan ancak hata veri setlerinde daha başarılı bir ön-işleme yöntemin özgünlüğüdür. Buna ek olarak süreç ve statik kod metrikleri sıklıkla kullanılmasına rağmen düşük seviyeli metriklerin ve tekrar eden verilerin tahmin başarısında etkisini ölçen bir çalışma bulunmamaktadır [12][13].

Tez bilime şu katkıları yapmaktadır: 1) Hata tahmin işlemleri için geliştirilen yeni bir çerçeve, 2) Hata veri setlerinde tekrar eden verilerin genel olup olmadığının belirlenmesi, 3) Veri tekrarlarının sınıflandırmadaki etkisinin gözlenmesi, 4) Düşük seviyeli metrik kullanımının tahmin başarısına etkisinin değerlendirilmesi.

1.6. Tez Planı

Tezin geri kalan bölümü şu şekilde organize edilmiştir. Bölüm 2'de yazılım geliştirme metodolojisi hakkında bilgi verilmiş ve yazılım geliştirme modelleri karşılaştırmalı olarak anlatılmıştır. Bölüm 3'te yazılım hata tahmini ve bu alandaki sorunlara yer verilmiştir. Makine öğrenmesi teorisi ve teknikleri Bölüm 4'te yer almaktadır. Bölüm 5'te önerilen hata tahmin çerçevesi ve geliştirilen yazılım detaylandırılmıştır. Deneysel tasarım Bölüm 6'da yer almaktadır. Son olarak Bölüm 7'de bilimsel bulgular ve gelecek çalışmalar tartışılmıştır.

(31)

BÖLÜM 2. YAZILIM GELİŞTİRME AŞAMALARI

       

Yazılım geliştirme, belirli yöntemlerin izlenmesini gerektiren süreçlerdir. Bu yöntemler, geliştirme sürecinin üretkenliğini arttırmaya yönelik çeşitli yaklaşımlar içerir. 1960'lı yıllardan itibaren çeşitli yazılım geliştirme modelleri ortaya çıkmıştır.

Zaman içinde bu modeller yazılım teknolojisinin sürekli değişimi ve gelişimine uygun yeni modeller ile değiştirilmiştir. Yazılım geliştirme modelleri belirli standartlar izlenerek geliştirilir. Bu standartlar bu alanda çalışan kişilerin oluşturdukları meslek toplulukları veya diğer iş standart grupları tarafından üretilmektedir. Bunlardan en çok bilinenleri ISO, IEC, IEEE ve ISTQB'dir [61]–[63]. Şekil 2.1'de yazılım geliştirme döngüsünün temel adımları görülmektedir. 

   

 

Şekil 2.1. Yazılım geliştirme döngüsü

2.1. Yazılım Tasarımı

Yazılım tasarımı, kullanıcı gereksinimlerini uygun hale getiren ve programcıya yazılım kodlaması ve uygulaması sırasında yardımcı olan bir süreçtir [64]. Yazılım gereksinimlerini değerlendirebilmek için gereksinim belirtim dokümanlarına kodlama

(32)

ve uygulama aşamalarında ihtiyaç vardır. Bu süreç yazılım terimlerine bakılarak detaylandırılır. Sürecin çıktısı programlama dillerinin uygulanmasında doğrudan kullanılır. Tüm bunlar yazılım yaşam döngüsünün ilk adımını kapsamaktadır. Temel amaç gereksinimleri karşılayabilmektir.

Yazılım tasarımının ortaya çıkardığı sonuçların üç seviyede değerledirilmesi gerekir.

İlk seviye olan mimari tasarım seyivesi sistemin en yüksek soyut sürümüdür. Bu seviye, yazılımı birbiriyle ilişkili birçok bileşenin etkileşimde olduğu bir sistem olarak tanımlar. Tasarımcılar bu aşamada sistemin uygun çözümü için fikir edinirler. İkinci seviye yüksek düzeyli tasarımdır. Bu aşamada soyut sistem daha az soyut alt sistemlere bölünür ve modüllerin etkileşimleri vurgulanır. Yüksek düzeyli tasarımda, sistemin modüller biçiminde nasıl uygulanacağına odaklanılır. Modüler yapının her birinin diğeri ile etkileşimi ve modül ilişkileri tanımlanır. Son aşama olan detaylı tasarımda ilk aşamadaki sistem ve alt sistem uygulanmaya çalışılır. Modüller ve uygulanma biçimleri detaylandırılır. Bu aşamada modüllerin mantıksal yapısı ve arayüzleri tanımlanır.

Yazılım sisteminin çoklu ve ayrık modüllere bölünmesi önemli bir işlemdir. Bu işlemde görevlerin birbirinden bağımsız çalışması beklenir. Modüller tüm sistemin temel yapıları olarak çalışabilir. Buradaki ayrık çalışmadan kastedilen tasarımcıların tüm modülleri birbirinden bağımsız derlenebilir ve çalışabilir şekilde tasarlamasıdır.

Modüler tasarım 'böl ve yönet' isimli problem çözme stratejisinin kurallarını takip eder [65]. Çünkü modüler tasarımın birçok avantajı bulunmaktadır. Modüler tasarımın avantajları şunlardır:

1. Küçük bileşenlerin bakımı kolaydır;

2. Programlar fonksiyonel açılardan bölünebilir;

3. İstenen seviyede soyutlama programa uydurulabilir;

4. Yüksek bağlılıklı bileşenler yeniden kullanılabilir;

5. Eşzamanlı çalıştırma mümkün hale gelir;

6. Güvenlik açısından istenen yapı elde edilir.

(33)

Sıralı çalıştırma yapısında kod komutları programın ilgili bölümü aktif edildiğinde çalışacak şekilde ayarlanır. Birden fazla modül içeren yazılım yapısı için her çalıştırmada modüllerin sadece biri aktif durumdadır. Örneğin bir yazılıma ait modül eğer yazım denetimi yapılacaksa ilgili kelime işlemcisi çalışır.

Modüler yazılımlarda görevler karakteristik özelliklerine bakılarak çeşitli alt modüllere ayrılır. Modüller bazı görevlerin tamamlanması için komut dizileridir. Modüller tek varlık olarak değerlendirilebilir ancak bir diğerini işaret ederler. Modüllerin tasarımı ve birbirleriyle etkileşimini ölçen bazı parametreler vardır: Bunlar bağlılık (cohesion) ve eşleme (coupling) dir.

Bağlılık, modül elemanlarının iç-bağımlılığını ölçen bir parametredir. Bağlılık değerinin yüksek olması program tasarımının iyi olduğu anlamına gelmektedir.

Programın küçük alt modüllere bölünmesi rastgele olabilir. Planlanmamış bağlılık programcının kafasını karıştırabilir ve kabul edilmez. Eğer yazılım elemanları mantıksal olarak aynı kategoride ise bir modülde birleştirilir ve buna mantıksal bağlılık adı verilir. Modül elemanları belirli bir zamanda organize edilir ve işlenirse buna geçici bağlılık adı verilir. Modül elemanları belirli bir görevi sıralı şekilde icra ederse buna şekilsel bağlılık denir. Sıralı çalışan modül elemanları aynı veri üzerinde işlem yapıyorsa buna iletişimsel bağlılık denir. Sıralı bağlılıkta modül elemanlarından birinin çıktısı diğerinin girdisi olarak kullanılır. Bağlılığın en yüksek derecesi fonksiyonel bağlılık olup modül elemanları tek bir fonksiyonu gerçekleştirecek şekilde gruplandırılır [66].

Eşleme modüllerin iç bağımlılığını gösteren bir ölçüttür. Eşlemenin düşük olması programın iyi tasarlandığı anlamına gelmektedir. İçerik eşlemede bir modül diğer bir modüle direk olarak erişip bu modül üzerinde değişiklik yapabilir. Aynı veri üzerinde birçok modül işlem yapıyorsa buna genel eşleme adı verilir. Kontrol eşlemesinde bir modül diğer bir modülün fonksiyonuna karar verip o modülün çalışma akışını değiştirebilir. Veri geçişi ile iki modül etkileşimde bulunuyorsa buna veri eşlemesi denir. Eşleme türleri arasında üstünlük açısından karar vermek zordur.

(34)

Yazılım tasarım sürecinin çıktısı tasarım dokümanı, simge kodları, detaylı diyagramlar, süreç diyagramları ve fonksiyonel gereksinimlerin tanımlanmasıdır. Yazılım uygulaması aşaması tüm bu çıktılara bağlıdır. Ayrıca bu çıktıların doğrulanması diğer aşamaya geçmenin ön şartıdır. Doğrulama yaklaşımının iyi olması hataların tespit edilip tasarımın güvenilir olmasını sağlar.

2.2. Gereksinim Analizi

Gereksinim, yazılım geliştirme aşamalarındaki tasarım, inşa ve testin gerekli ön değerlendirmelerini kapsar. Gereksinim yönetimi ise planlama, oganizasyon, personel ayrımı ve kontrol aşamalarından oluşur.

Bu aşamalar detaylandırılacak olursa başlangıçta gereksinimlerin dokümanlarının çıkarılması gerekmektedir. Oluşan dokümanlar üzerinden gerekli analizler yapılır.

Gereksinimler yazılım geliştirme sürecinin her aşamasında izlenir. Uygulanan modele uymayan gereksinimler değiştirilir veya silinir. Uygulama sırasına bağlı olarak gereksinimlere öncelik verilir. Proje takımı veya paydaşlar tarafından gereksinimler üzerinde anlaşılır. Herhangi bir değişiklik olduğunda tüm paydaşlara gereksinimin durumu bildirilir.

Planlama aşamasının ilk adımı proje gereksinimlerinin toplanması, analizi ve kurulmasıdır. İkinci aşamada kurulan gereksinimlerin kontrollü bir şekilde icra edildiğinden emin olunur. Üçüncü aşamada ise yazılım geliştirme döngüsü boyunca gereksinimlerin takip edilmesi ve müşteriye iletimi sağlanır.

Organizasyon bölümü gereksinimle ilgili işlemlerin etkili ve verimli bir şekilde yürütülmesi için gerekli ortamın hazırlanması ve devam ettirilmesi işlemlerinden oluşur. İstenen kalite düzeyinin yakalanabilmesi için gerekli aktiviteler sürece dahil edilir. Gereksinimler üzerinde yapılacak değişikliklerin kontrollü olması sağlanır.

(35)

Personel ayrımında gereksinimle ilgili aktiviteleri yürütecek personel belirlenir, bu personele gerekli eğitimler verilir. Ayrıca gereksinim araçları ve teknikleri personele sağlanarak motive edilir.

Kontrol aşamasında önceki üç aşamada belirtilen işlemlerin planlandığı şekilde yürütülüp yürütülmediğine bakılır, zamanlamanın takibi ve kalitenin istenen düzeyde olması sağlanır.

Risk yönetimi gereksinimlerin onaylanması için gerekli bir süreçtir. Bu süreç gereksinimlerin gerçekten gerekli olup olmadığını belirler. ANSI/EA 632 onaylama işlemini "gereksinim onaylaması" olarak tanımlar [67]. Onaylama sürecinde gereksinimlerle ilgili istenen düzeyde memnuniyetin sağlanması için kullanılabilecek birçok teknik mevcuttur. Bu teknikler simülasyon, test, analiz, gösterim ve inceleme işlemlerini kapsar. Tüm bu işlemlerin belirli bir zaman diliminde tamamlanması gerekir. Teknik performans ölçümü (TPM) gereksinimlerin istenilen zamanda tamamlanmasını takip eder.

2.3. Yazılım Kalitesi

Yazılım kalitesi gereksinimlerin karşılanma düzeyini gösteren bir ölçüttür. ISO, IEC ve IEEE standartlarında kalite tanımı birbirine yakındır [61]. Müşteri ihtiyaç ve beklentilerinin bir üründe, serviste veya bileşendeki karşılanma düzeyi olarak ifade edilir. Kalite faktörleri: fonksiyonel uygunluk, güvenilirlik, performans etkililiği, kullanılabilirlik, güvenlik, sürdürülebilirlik, taşınabilirlik ve uyumluluk olarak sıralanabilir.

Fonskiyonel uygunluk gereksinimlerin beklenen fonksiyonel işlevleri yerine getirme memnuniyeti olarak ifade edilebilir. Müşteri gereksinimleri ile fonksiyonel işlevlerin uyuşması gerekmektedir. Yazılımın fonksiyonlarının aynı zamanda doğru çalışması beklenmektedir.

(36)

Güvenilirlik terimi kalite ile birlikte sık kullanılan bir terimdir. Beklenen ve belirtilen servislerin yazılım tarafından ne kadar sıklıkla sunulduğuna bakılır. Bu terim birçok kalite faktörü ile de ilgilidir. Yazılımın doğruluğu yani hatalı olmaması bir güvenilirlik göstergesidir. Kalite faktörlerinden biri performanstır. Burada donanım kaynaklarının yazılım tarafından ne kadar etkili kullanıldığına bakılır. Performansı etkileyen karmaşık teoriler mevcuttur. Kullanılabilirlik de bir kalite faktörüdür. Kullanılabilirlik, kullanıcının yazılımı hangi düzeyde yönetebildiğini belirler.

Güvenlik, yazılımın dış saldırılara karşı hazırlık seviyesini gösterir. İnternet bağlantılı tüm yazılımlar için güvenlik düzeyinin yüksek olması beklenir. Donanım ve diğer servisler de güvenlik açısından incelemeye dahil edilmelidir. Bu açıdan tüm sistem için değerlendirilen bir terimdir.

Yazılımlar durağan değildir. Yeni gereksinimler ve değişiklikler ile birlikte yazılım sürdürülebilir olmalıdır. Değişen çevre elemanlarına bağlı olarak da yazılım üzerinde değişiklik yapılabilir. Bu açıdan istenen düzeyde bir sürdürülebilirliğin olması yazılımın yeni sürümlerinde hem kod kalitesi hem de diğer kalite faktörlerinin devamını sağlar.

Yazılımların tek platform üzerinde çalışması beklenmez. Diğer yazılım ve donanım sistemleriyle uyumlu çalışan yazılımlar daha çabuk yaygınlaşır ve kullanıcı çerçevesi genişler. Böylece farklı platformlar üzerinde aynı yazılım sistemine müdahale edilebilir.

Kalite değerlendirmesinin en zor aşaması ölçümdür. Bu ölçümün nasıl yapılması gerektiği ISO/IEC 25020 standartında belirtilmiştir [61]. Temel ölçüm kalite karakteristiğini detaylandırır. Ölçümde her elemana ait bir ölçüm metodu mevcuttur ve bu metotlardan ölçüm bilgileri alınır. Ölçüm elemanlarının nasıl doküman ile detaylandırılacağı bellidir ve her biri erişilebilir fonksiyon, kullanıcı problemleri gibi verileri sunar.

(37)

Şekil 2.2'deki modele bakılarak ürün kalitesi, karakteristik, alt-karakteristik, alt-alt- karakteristik aşamalarının sırasıyla ikili ilişkilerinin 1-* olduğu anlaşılmaktadır. Bir ürüne ait birden fazla karakteristik ve alt karakteristik özellikler bulunabilir. Bunların her birine ait kalite ölçümü için bir ölçüm fonksiyonu gereklidir. Ölçüm fonksiyonunun icra edilebilmesi için ayrıca bir ölçüm elemanına ihtiyaç vardır. Kalite ölçüm elemanı her ürün için karakteristik özelliklerine göre kalite raporunu oluşturur. Buradan yazılım kalite düzeyi hakkında fikir sahibi olunabilir.

Şekil 2.2. Yazılım kalite ölçüm referans modeli ISO/IEC 2520

Kalite değerlendirmesi kalite ölçümünden sonra yapılan bir işlem olup sadece veri toplama ve ölçüm fonksiyonlarını uygulamadan ibaret değildir. Verilere bir yorum seviyesi eklenir. Yapılan yorumdan sonra ölçüm verilerinin her bir seviyelendirilir.

ISO/IEC 25041 standardı geliştiriciler ve bağımsız değerlendiriciler için bir yol haritası sunar [69], [68], [71].

Kalite modelleri çeşitli tanımlama modelini içerir. Tanımlama modelleri yazılım geliştirme süreçlerinin bazı aşamalarında kullanılır. Bu modeller yardımıyla sistemin uygulanması için tavsiyeler ve yaklaşımlar önerilerek yüksek kalite düzeyine ulaşılmaya çalışılır. Şekil 2.3'te yazılım kalite döngüsü görülmektedir. Gözden geçirme, test ve analiz adımları kalite modelini oluşturan adımlardır. Ürün hedeflerine bakılarak ürün-model uyumu denetlenir. Buradan çıkan sonuca göre geliştirme yapılır ve yeni yazılım sürümü ortaya çıkar. Her sürümde adımlar tekrar edilmektedir.

(38)

2.4. Yazılım Bakımı

Bakım organizasyonu mevcut yazılımın devamı ve yeni sürümlerin güvenilirliği açısından önemli bir süreçtir. Yazılım geçişleri ve süreçler proje planlarında yer alır.

Kontrol listesinde tartışma, açıklama ve etkiler geliştirici tarafından ele alınır. Ürünün teslimi öncesi yapılan işlemler ile ilgili müşteri bilgilendirilir. Bakım kaynaklarında yer alan bilgi transferi ve eğitim geliştirici tarafından sağlanır. Bakım işleminden sorumlu olan kişi ile geliştirici iletişim halinde olmalıdır. Böylece ürün teslimi öncesi ve geçiş sorunları anlaşılabilir. Müşteri memnuniyeti için ürün teslim edilirken yapılan bilgilendirme yeterli olmalıdır. Eğer geliştirici ile bakım personeli arasında bir çatışma

Şekil 2.3. Yazılım kalite döngüsü

olursa bilgi kaybı olabilir. Müşteri yazılımın kısa zamanda ve bütçe sınırlarında teslim edilmesini ister. Bakım organizasyonu iyi yapılmazsa süreçler ve bütçe artar ve müşteri memnuniyeti riske girer.

Müşteri, geliştirici ve bakım personelinin birlikte yapacağı toplantılar bakım planlaması açısından önemlidir. Bakımcı müşteri ile buluşarak geçiş aktivitelerini planlamalıdır. Muhtemel problemleri açıklamalı ve yapılabilecek değişiklikleri göstermelidir. Yeni yazılımda bakım hizmetleri için ayrılan kaynakları tanımlamalıdır.

Her sistem bileşeni üzerinde donanım kaynakları bakımcı tarafından

(39)

görüntülenebilmelidir. Her ne kadar bakımcı tarafından tüm işlerin sorumluluğu üstlenilmese de, bakımcı sorumluluğunda olmayan işleri de görüntüleyebilmelidir.

Veriler müşteri tarafından anlaşılır hale getirilmelidir. Raporlama müşteri için yeterli düzeyde olmalıdır. Her müşteri isteği bir yazılım bakım mühendisine atanır ve bu kişi tarafından ilgili olduğu kısım doğrulanmalıdır. Bakım mühendisi yazılım üzerindeki veri değişikliklerini yapabilmelidir. Bunun için bakımcıya gerekli veri izinlerinin sağlanması gerekir. Bakım işlemlerinin kolaylaşması için kullanılan yazılım dili sayısının en aza indirilmesi gerekir. Aksi durumda seçilen programlama dilinin seçilme nedeni belirtilmelir.

2.5. Yazılım Geliştirme Modelleri

2.5.1. Şelale modeli

1970 yılında önerilen model sıralı adımlardan oluşmaktadır. Bu geliştirme yaklaşımının temel adımları Şekil 2.1’de görülmektedir. Geliştirilecek sistemden beklenenler bu modelde net olarak ortaya konmaktadır. Proje yöneticilerinin işlemleri rahatlıkla takip edebilmelerine olanak sağlayan yöntem diğer geliştirme modellerinin temelini oluşturmaktadır. Şelale modelinin üç temel avantajı mecvuttur. Birincisi kodlama safhasına geçilmeden önce tasarımla hataların yakalanmasını sağlar. İkincisi bakım aşamasında ihtiyaç olacak dokümantasyonu sağlar. Son olarak da gereksinim aşamasından sonra proje maliyetinin tahmin edilmesini sağlar. Bununla beraber gereksinimlerin tasarım seviyesinden önce belirlenip tekrar değiştirilmesinin zor olması geliştirme zamanını arttırmakla beraber çevik geliştirme gibi alternatif yöntemlerin geliştirilmesini sağlamıştır.

2.5.2. Spiral model

Barry Boehm tarafından 1988 yılında geliştirilen model [69], şelale modeli ve hızlı prototipleme gibi yaklaşımların bazı yönlerini birleştirerek temel prensiplerini oluşturmuştur. Şekil 2.4'te spiral modelin adımları görülmektedir. Bu yöntemde risk

(40)

analizi üzerinde oldukça yoğunlaşılmıştır. Projenin her ürünü tüm aşamaları tamamlarken spiral oluşturur. Böylelikle ürünler yazılım geliştirmenin erken safhalarında üretilir. Bu model, özellikle büyük ölçekli projeler için uygun olduğu için modeli uygulamak pahalı olabilir. Bu nedenle küçük bütçeli projeler için uygun değildir. Buna ek olarak projenin başarısı büyük oranda risk analiz safhasının iyi düzenlenmesine bağlıdır. Model, daha sonraki yıllarda geliştiricisi tarafından paydaşların kısıtlarını göz önüne alan biçimiyle yenilenmiştir.

Şekil 2.4. Spiral model

2.5.3. Çevik geliştirme

Çevik geliştirmeden bahseden ilk yayın 1974 yılında Edmonds tarafından yazılmıştır [72], [70]. Çevik metotlar 12 temel prensibe dayanmaktadır. Bu prensipler;

1. Müşteri memnuniyeti önceliğini yükseltmek,

2. Geliştirmenin geç safhalarında dahi gereksinimler üzerinde değişiklik yapabilmek, yazılım teslim zamanlarını olabildiğince kısa tutmak, proje boyunca geliştiricilerle yazılım siparişi veren iş sahiplerini birlikte çalıştırmak,

3. Geliştiricilerinin motivasyonunu üst düzeyde tutmak, yazılımı sık sık çeşitli

Referanslar

Benzer Belgeler

Gayrimenkul Geliştirme Uygulamaları: Örnek Projeler, Geliştirme Sorunları ve Çözümleri..

Burada ax+ b= 0 denkleminin kökü eşitliğinn her iki tarafında yazılırsa kalan bölme işlemi yapılmadan kalan bulunmuş

yazılabilir. 'Values' sütununda kategorik değişkenlerin kategorileri tanımlanır. Örneğin cinsiyet değişkeni için bu tanımlama, 'Values' sütununun ilgili hücresine

Öldüğünü duyduğumuzda hepimiz aynı büyük sarsıntıyı, Ağrı Dağı birden yok olmuş gibi aynı büyük şaşkınlığı ve aynı büyük kederi hissettik, hepimiz babamızı

Kurtuluş, “Köy Enstitülerinde Sa­ nat Eğitimi ve Tonguç” başlıklı çalışma­ sında, Köy Enstitüleri programlarında yer alan sanat eğitimi anlayışının

Mean, Standard deviation, and was used to analyze structural equation modeling (SEM). The external factors in policy implementations of online teaching and learning

The keywords used were digital literacy skills, learning motivations, learning strategies, special needs students, special needs education, 21st century learning,