<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Çevik Model Kullanan Projelere Ait Veri Seti ile İş Gücü Kestirimi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Şeyma Nur Kolak</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gizem Çavus</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Muaz Gültekin</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oya Kalıpsız</string-name>
          <email>oya@ce.yildiz.edu.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: Çevik Süreçler</institution>
          ,
          <addr-line>Scrum Metodolojisi, Maliyet Kestirimi, Makine Öğrenmesi, Regresyon, Sınıflandırma</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Yıldız Teknik Üniversitesi</institution>
          ,
          <addr-line>Bilgisayar Mühendisliği, İstanbul</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Özet. Bilgi teknoloji alanında yapılan birçok projede bilgi yetersizliğinden ve müşteri ile yeteri kadar iletişim halinde kalınmadığından dolayı birçok proje başarısızlıkla sonuçlanmaktadır. Burada önemli olan nokta projenin başlangıcında yazılımın büyüklüğünü, yazılımı geliştirmek için gereken kişi sayısını ve yazılımın maliyetini doğru bir şekilde öngörüp planlama yapabilmektir. Yazılım projelerinin kaynak tahminin doğruluğu ve güvenilirliği yazılım projesinin gidişatı için çok önemlidir. Yazılım geliştirme teknolojisinin sürekli değişen senaryolar içinde olması efor tahminini daha zorlu hale getirmektedir. Yazılım projelerinin efor tahminin doğruluğu ve güvenilirliği yazılım şirketlerinin rekabeti açısından önemlidir. Modern yazılım projeleri, yazılım geliştirme sürecinin her yinelemesi için hızlı, artan bir şekilde teslim edilmesini gerektirdiğinden, yinelemenin yürütülmesini izlemek ve iterasyon ilerledikçe kaliteli ürünler sunmak basariyi arttıracaktır. Bugüne kadar yazılım maliyet kestirimi için birçok model geliştirilmiştir. Bu modellerin çoğu yazılım geliştirme sürecinden bağımsızdır. Bu nedenle yazılım geliştirme metodolojisine bağlı olarak efor ve maliyet tahminin yapılması projenin basarisini arttıracaktır. Bu çalışmada scrum metodolojisi kullanılarak geliştirilen yazılım projeleri için maliyet tahmini yapmaya çalıştık. Geliştirdiğimiz model de gradient boosting algoritmasını kullanarak oluşturulan scrum veri seti üzerinde başarılı sonuçlar elde ettik.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Software Effort Estimation in Agile Environment</p>
    </sec>
    <sec id="sec-2">
      <title>1Yıldız Technical University, Computer Engineering, Istanbul, Turkey {seymanur.kolak, gizem,cavus, muaz.gultekin}@std.yildiz.edu.tr ,oya@ce.yildiz.edu.tr</title>
      <p>Abstract. Many projects in the field of information technology are failing due
to lack of information and they also fail because project decision makers are not
in contact with the customer. The important point is predicting the size of the
software, predicting the number of people required to develop the software and
predicting the cost of the software accurately at the beginning of the project.
The accuracy and reliability of the software resource estimate for the project is
very important for the progress of software projects. The fact that software
development technology is in constantly changing scenarios makes effort
estimation more challenging. The accuracy of the effort estimates of software projects
and the reliability of the software projects are so important for software
companies because of the competitiveness. As modern software projects need to be
delivered quickly and incrementally for each iteration of the software
development process, it will be more successful to monitor the execution and provide
quality products as the iteration progresses. To date, many models have been
developed for software cost estimation. Most of these models are independent
of the software development process. For this reason, making effort and cost
estimation based on software development methodology will increase the success
of the project. In this study, we tried to estimate effort for software projects
which is developed in scrum environment. We have achieved successful results
on the scrum dataset created using the gradient boosting algorithm.
1</p>
      <sec id="sec-2-1">
        <title>Giriş</title>
        <p>
          Yazılım ölçümü, yazılım mühendisliğinin önemli bir bileşenidir. Tasarımın yüksek
kalitede olup olmadığını ve uygulamaya geçişten önce, gereksinimlerin tutarlı ve
eksiksiz olduğunu görebilmek için yazılımların özellikleri ölçülmelidir. Etkin proje
yönetimi gerçekleştirmek amacıyla yazılım teslim süresi ve maliyet kestirimi için süreç
ve ürünlerin nitelikleri ölçülür. [
          <xref ref-type="bibr" rid="ref2">1</xref>
          ] Tahmin riski, kaynaklar, maliyet ve program için
belirlenen niceliksel tahminlerdeki belirsizlik derecelendirme ile ölçülür. [
          <xref ref-type="bibr" rid="ref4">3</xref>
          ] Proje
kapsamı yeterince anlaşılmamışsa veya proje gereksinimleri değişiyorsa, belirsizlik ve
tahmin riski tehlikeli derecede yüksek olur.
        </p>
        <p>
          Yazılım projeleri maliyet ve zamanlamayı aşma eğilimindedir. 2012 yılında
McKinsey ve Oxford Üniversitesi tarafından, 5400 büyük ölçekli Bilgi Teknoloji (BT)
projelerine yapılan çalışmada, bu projelerin ortalama %66’ sının maliyet kestiriminin
üzerinde olduğu ve %33’ ünün planlanan zamanın üzerine çıktığı tespit edilmiştir.
Yazılım projelerinin %82’ sinin planlanan program ve zamanda tamamlanamadığı
tespit edilmiştir. Bu tür problemlerin nedeni, proje yöneticilerinin maliyet kestirimini
ve riskleri doğru yönetememesidir. [
          <xref ref-type="bibr" rid="ref1 ref3">2</xref>
          ]
        </p>
        <p>
          Geç teslimat ve maliyet aşımları uzun yıllar yazılım projelerinde sıkça karşılaşılan
sorunlardan olmuştur. Modern yazılım geliştirme, geliştiricilerinin önceki bölümlerin
veya sürümlerin geliştirilmesi sırasında öğrenilenlerden faydalanmasına olanak
sağlayan, artımlı ve yinelemeli bir yaklaşıma dayanmaktadır. Yazılımı artan ve yinelemeli
geliştirmek, Birleştirilmiş Süreç (Rational), XP, Scrum ve diğer çevik yazılım
geliştirme yöntemleri gibi birçok popüler yazılım geliştirme metodolojisinin önemli
parçalarıdır [
          <xref ref-type="bibr" rid="ref4">3</xref>
          ]. Bu çalışmada, çalışma miktarı, bir iterasyonun sonunda teslim edilip
edilemeyeceği konusunda teslimat yeteneğini tahmin etmek hedeflenmektedir. Apache
ortamında geliştirilmiş açık kaynak projesine ait veri seti ile çalışma
gerçekleştirilmiştir. Bu projede, her iterasyonda, bir dizi iş (konu, issue) tamamlanması gerekir.
Projenin tamamlanmasına göre 4 ayrı zaman dilimi bulunmaktadır. Bu zaman dilimleri
projenin başlangıç halindeki, projenin %30-%50-%80 lik kısmının bittiği andan
sonraki iterasyonlar ve iterasyonlara ait konuları içermektedir. Bu zamanlarda yer alan
iterasyonlara ait konuların hikâye noktası (story point) tahminleri ayrı ayrı
hesaplanmıştır. Yazılım projelerinin maliyet kestiriminde kullanılan yöntemler makine
öğrenme algoritmaları, veri madenciliği algoritmaları ve regresyon tabanlı algoritmalar
olarak 3 başlık altında toplanmıştır. Bu çalışmada bir iterasyona ait konuların
ölçümlerini tahmin edebilecek doğru modeller geliştirilmiştir. Tahmine dayalı modellerden
regresyon tabanlı yöntemler seçilmiş ve Stokastik Gradient Artırma Makineleri
(Gradient Boosting Maching, GBM) örneklenmiştir. Bu yöntem, hız farkını ve hikâye
noktasını (story point) tahmin etmeye dayanır. Tahmin modellerini oluşturmak için hız
farkı ve hikâye noktası parametreleri gerekecektir. Bu bildirinin yazım organizasyonu
şu şekildedir; Bölüm 2’de; maliyet tahmini konusunda yapılan benzer çalışmalar
anlatılacaktır. Bölüm 3’te; belirlenen regresyon tabanlı öğrenme algoritmalarının
tanımlaması yapılacak ve bu algoritmalar üzerine optimizasyon işleminin nasıl
gerçekleştirildiği açıklanacaktır. Bölüm 4’te; uygulama ve testler incelenecektir. Bölüm 5’te;
başarılı bir şekilde sonlanan uygulamanın sonuçları incelenecek ve gelecek araştırmalar
için tavsiyeler ele alınacaktır.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2 İlgili Çalışmalar</title>
        <p>Yapılan çalışmaya benzer literatür taraması yapılmıştır. Yazılım geliştirmede iş gücü
tahmin için makine öğrenimi algoritmaları kullanan çalışmalar ele alınmıştır.
Yazılım boyutu tahmini, bir yazılım ürünü geliştirmek için gereken çabayı belirlemek
için önemli bir özelliktir. Yetersiz, sorgulanabilir ve usulsüz veriler ışığında kalkınma
görevlerini oluşturmak veya sürdürmek için gerekli olan en pratik efor ölçüsünü
(bireysel saat ya da sermaye olarak iletilen) öngörme metodolojisidir. Yazılım Çaba
Tahminleri (Software Effort Estimation-SEE), yazılımı geliştirmek veya sürdürmek
için gereken çabanın en makul şekilde kullanılmasını öngörme prosedürüdür. SEE, bir
yazılım projesini tamamlamak için gereken toplam çabayı tahmin etme faaliyetidir. Bu
çalışmada web uygulama projeleri üzerinde iş gücü tahmini yapılmıştır.</p>
        <p>
          Web uygulamalarının çabuk tahmin edilmesi için geçmiş web geliştirmenin veri
kümesi projeler ISBSG veri kümesinden toplanmıştır. Benzer şekilde, çevik projeler
söz konusu olduğunda, Story Point Approach (SPA), bir kullanıcı hikayesini
uygulamak için gereken çabayı ölçmek için kullanılır. Bir iterasyon sırasında bitirilen
kullanıcı hikayelerinin tahminlerini ekleyerek (hikâye noktası tekrarı), proje hızı elde edilir.
CPA, UCP, Web ve SPA veri setleri kullanılarak elde edilen modellerin verimliliği,
üzerlerinde belirli akıllı teknikler kullanılarak geliştirilebilir. Önerilen araştırma
çalışması, EBM, UCP, Web üzerinden Karar Ağacı (DT), Stokastik Gradient Yükseltme
(SGB), Rasgele Orman (RF) ve Destek Vektör Regresyon (SVR) kernel yöntemleri
gibi çeşitli makine öğrenimi (ML) tekniklerinin uygulanmasını ele almaktadır. Bu veri
kümeleri, veri kümesi üzerinde iş gücü tahmini sürecini kullanmak için içeriklerine ve
alaka düzeyine göre seçilir. Makine öğrenme tekniklerini uyguladıktan sonra elde
edilen çeşitli modellerin sonuçları, performanslarını değerlendirmek amacıyla,
literatürdeki mevcut sonuçların yanı sıra birbirleriyle karşılaştırılmıştır. [
          <xref ref-type="bibr" rid="ref5">4</xref>
          ]
3
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Metodoloji</title>
        <p>Bu çalışmada, Scrum ile geliştirilen projeye ait veri seti, iş gücü tahmini için
kullanılmıştır. Scrum projelerinde geçen hikâye noktası kavramı, konuyu çözmeye yönelik
tüm iş gücü, karmaşıklığını, kesinlik olmamayı ve riskleri içerir. Her bir iterasyonda
bir konuya hikâye noktası atanır. Tüm iş bittiğinde o iterasyondaki tüm hikâye
noktaları toplamı da hız(velocity) olarak adlandırılır. Veriler, kullanım için sınıflandırıcılar
tarafından anlamlı hale getirilmiştir. Bu amaçla veri setinde bazı düzenlemeler
yapılmıştır. Böylece, veri madenciliği yöntemleri ile bir model elde edilir.Geliştirilen
uygulamada, model oluşturmak için veri kümesi üzerinde çalışılacak algoritmalar
incelenmiştir. Bu algoritmalardan Stokastik Gradient Yükseltme (GBM) algoritması
seçilmiştir. Uygulama için yazılım tasarımı Bölüm 3.1’ de, seçilen algoritma ile ilgili kısa
açıklamalar Bölüm 3.2 de, veri seti tasarımı ise Bölüm 3.3’ de yer almaktadır.
Sistemin genel mimarisi ise Şekil 1’ de yer almaktadır.
3.1</p>
        <p>Yazılım Tasarımı
İş gücü tahmini için gereken tüm özellikler tek bir dosyada birleştirilir ve üzerinde
algoritmalar çalıştırılır. Bu işlem için adımlar aşağıda listelenmiştir.</p>
        <p>▪ Bir projenin iş gücü tahmini için gerekli olan özellikler 3 veri seti üzerinden
belirlenmiştir.
▪ Bu seçili özellikler tek bir veri setinde birleştirildi.
▪ Sınıflandırmada kullandığımız özellikler bu veri setinde belirlenir.
▪ İş gücünü tahmin etmek için kullandığımız algoritmalar belirlenir.
▪ Algoritmalar bu belirtilen özellikte çalışmaya başlar.</p>
        <p>Her bir proje için, bir tahmin tablosu elde etmek için regresyon algoritmaları 4
farklı zamanda çalıştırılmıştır. Tahmin edilen değerler test verilerindeki gerçek
değerler ile karşılaştırılarak hata sonuçları elde edildi. Bu modele genel bakış Şekil-1’ de
gösterilmiştir.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Sekil 1. Sistemin Genel Mimarisi</title>
      <p>3.2</p>
      <sec id="sec-3-1">
        <title>Gradyan Artırma Algoritması</title>
        <p>Gradyan güçlendirme makineleri, çok çeşitli pratik uygulamalarda önemli başarı
gösteren güçlü bir makine öğrenme tekniğidir. Farklı kayıp fonksiyonlarına göre
öğrenmek gibi, uygulamanın belirli ihtiyaçlarına göre özelleştirilebilir. Teorik bilgi, gradyan
artırma model tasarımının tüm aşamalarını kapsayan betimsel örnekler ve çizimlerle
tamamlanır. Gradyan artırma, tahmin modelleri oluşturmak için en güçlü tekniklerden
biridir.</p>
        <p>Rasgele Orman algoritması bağımsız karar ağaçları yetiştirir (bu da paralel olarak
yapılabilir) ve sadece bu ağaçların ürettiği tahminlerin ortalamasını nihai tahmin
olarak alır. Öte yandan, gradyan takviye makineleri ağaçları üretir ve bunları sıralı bir
şekilde topluluğa ekler. İlk ağaç, Rasgele Ormanlarda yapıldığı gibi üretilir. Buradaki
temel fark, ilk ağacın ürettiği tahmin hatalarını en aza indirmeyi amaçlayan ikinci
ağacın üretilmesidir. Hem birinci hem de ikinci ağaçlar topluluğa eklenir ancak her
birine farklı ağırlıklar verilir. Bu süreç birden çok kez tekrarlanır: her adımda,
öğrenilen tüm topluluğun hatalarına göre yeni bir ağaç eğitilir ve daha sonra topluluğa
eklenir.</p>
        <p>Son topluluk, yeni girdilerin sonucunu kestirmek için bir model olarak kullanılır.
Rasgele Ormanların aksine, GBM'lerde düşük bir öğrenici sadece regresyon ağaçları
değil, sinir ağları veya doğrusal regresyon gibi diğer regresyon öğrenme algoritmaları
da olabilir. Uygulamada regresyon ağaçları düşük öğreniciler olarak kullanılmış ve
100 ağaç üretilmiştir
3.3</p>
      </sec>
      <sec id="sec-3-2">
        <title>Veri Seti Tasarımı</title>
        <p>Scrum Veri Kümesi, Apache’den gelen veri kümesini içerir. Bu veri kümesi .csv
uzantılı dosya türünde tutulur. Her proje için 3 ayrı veri seti mevcuttur. Bunlardan ilki, her
iterasyona ait konuların genel özelliklerini ve hikâye noktası bilgisini tutar. İkinci veri
seti, projedeki her bir iterasyonun özellikleri ve hız farkı (velocity different) değeri
tutulur. Sonuncusunda ise konular arasındaki ilişkiyi gösteren değerler mevcuttur. Bu
veri setlerinin örnekleri Şekil 2, 3 ve 4'te gösterilmiştir.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sekil 2. Apache Issue Veri Seti</title>
    </sec>
    <sec id="sec-5">
      <title>Sekil 3. Apache Iterasyon Veri Seti</title>
      <p>Sekil 4. Apache Issue link Veri Seti
Şekil 5 ‘te regresyon tabanlı makine öğrenmesi tekniklerinin denendiği veri seti
görülmektedir. Burada dikkat edilmesi gereken nokta tüm özelliklerin nümerik olması
gerektiğidir. Bu sebeple de Şekil 6’da görülen işlemler yapılarak veri setinde
düzenlemeye gidilmiştir. Bu veri setine ait özelliklerin bir projede nasıl kullandıklarını
anlamak önemlidir. Bunun için veri setinin özellikleri ile ilgili açıklamalar aşağıda
maddeler halinde açıklanmıştır.</p>
      <p>▪ Type: Her bir konuya, konunun çözülmesiyle ilgili görevin niteliğini belirten
bir tür (ör. Görev (Task), Hata (Bug), Yeni özellik (new feature), İyileştirme
(Improvement) ve İşlev Testi (Function Test)) atanır.
▪ Priority: Konunun önceliğini, bir konunun diğer konulara ilişkin olarak
katılması gereken sırayı göstermektedir. Örneğin, engelleyici öncelikli konular,
▪
▪
▪
büyük veya küçük öncelikli konulardan daha fazla endişelendirmelidir.
Engelleyici önceliği, tamamlanacak diğer sorunları engelleyen bir sorundur. Bu
çalışmada, beş öncelik seviyesini dikkate alınmıştır: önemsiz, küçük, büyük,
kritik ve engelleyici.</p>
      <p>Number of Comment:Tahmin sırasında geliştiricilerin yorum sayısı ekip
işbirliği derecesinin göstergesidir.</p>
      <p>Number of FixVersion: Her bir konudaki düzeltme sürümü alanı, sorunun
giderildiği (veya alınacağı) sürümü gösterir. Çok sayıda düzeltme sürümü olan
sorunlar, geliştirme, test etme ve bütünleştirme açısından daha fazla dikkat
gerektirir.</p>
      <p>Number of Affect Version: Bir konunun bulunduğu sürümleri belirtir.</p>
    </sec>
    <sec id="sec-6">
      <title>Sekil 5. Kategorik Veri Seti Düzenlenmiş veri setleriyle GBM algoritması denenmiş ve sonuçları kaydedilmiştir.</title>
    </sec>
    <sec id="sec-7">
      <title>Sekil 6. Kategorik Verinin Düzenlenmiş Hali</title>
      <p>4</p>
      <sec id="sec-7-1">
        <title>Uygulama ve Test</title>
        <p>We Çalışmanın uygulaması R dili gerçekleştirilmiştir. Uygulamanın çalıştırılması için
en az 2GB RAM ve 400MB Disk alanına ihtiyaç duyulmaktadır. Kullanıcı ara yüzü
Şekil 7, Şekil 8 ve Şekil 9’da gösterilmiştir.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Sekil 7. Uygulama Giriş Ekranı</title>
    </sec>
    <sec id="sec-9">
      <title>Sekil 8. Uygulama Secim Ekranı</title>
    </sec>
    <sec id="sec-10">
      <title>Sekil 9. GBM Algoritmasının Sonuç Ekranı</title>
      <p>Uygulamanın ilk açılan sayfası Şekil 7’ de verilmiştir. Burada veri setinin içeriği
görülmektedir. Daha sonra regresyon algoritma bölümünden GBM algoritması seçilir.
GBM algoritmasının parametreleri kullanıcı tarafından girilecek şekilde ayarlanmıştır.
Seçilen veri setinin 0-30-50-80 için ayrı ayrı veri setleri üzerine algoritma
çalıştırılmıştır. Veri setinin ne kadarlık kısmı eğitim ne kadarlık kısmı test için kullanılacağı da
kullanıcı tarafından belirlenecektir. En ideal olarak %70’ i eğitim, %30’ u test olarak
seçilmiştir. Ağaç sayısı olarak 100 ağaç türetilmiştir. Her bir düğümdeki yaprak sayısı
5 olarak, öğrenme oranı 0.05, ağaç derinliği de 10 olarak seçilmiştir. Bu değerlere
göre algoritmanın ürettiği hikâye noktaları Şekil 9’ da görülmektedir.</p>
      <sec id="sec-10-1">
        <title>5 Sonuçlar ve Yapılacak Çalışmalar</title>
      </sec>
    </sec>
    <sec id="sec-11">
      <title>Uygulanan GBM algoritmasının sonuçları Şekil 10‘daki gibidir</title>
    </sec>
    <sec id="sec-12">
      <title>Sekil 10. GBM Algoritmasının RMSE Değerleri</title>
      <p>Burada RMSE (Root Mean Square Error) değerleri esas alınmıştır. Regresyon
tabanlı makine öğrenmesi teknikleri uygulanması durumunda doğruluk oranlarından çok
hata oranlarının karesel değerleri bizi daha doğru sonuçlara götüreceğinden dolayı bu
değerler kullanılmıştır. Şekil 11’de Apache ortamından elde edilmiş projelere ait
RMSE değerlerinin zamanla iterasyona bağlı artışları görülmektedir.</p>
    </sec>
    <sec id="sec-13">
      <title>Sekil 11. Apache Veri Seti Üzerinde RMSE Gösterimi</title>
      <p>Bu grafiklerden de görüldüğü üzere RMSE değerleri iterasyon sayısı arttıkça
düşmektedir. Eğitim veri setleriyle kendini eğiten sistem zamanla daha iyi öğrenir ve daha
doğru tahminlerde bulunur. Burada işlemler 300 iterasyona kadar test edilmiştir. Bir
süre sonra sistemin eğitiminin durduğu iterasyon sayısının arttırımının gereksiz olduğu
gözlenmiştir</p>
      <p>Gelecek çalışmalarda regresyon tabanlı makine öğrenme tekniklerine devam
edilebilir aynı zamanda Yapay Sinir Ağları modelleriyle de testler yapılabilir. Bir sonraki
çalışma olarak Deep Learning ile Yapay Sinir Ağları teknikleri kullanılması
öngörülmüştür
Kaynaklar</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          2.1
          <string-name>
            <given-names>Makine</given-names>
            <surname>Öğrenimi Algoritmalarını Kullanarak Yazılım Geliştirmede Is Gücü</surname>
          </string-name>
          Tahmin Yöntemleri
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          1.
          <string-name>
            <given-names>B.</given-names>
            <surname>Flyvbjerg</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Budzier “Why Your IT Project May Be Riskier Than You Think</surname>
          </string-name>
          ”,
          <source>Harvard Business Review</source>
          ,
          <year>2011</year>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          2.
          <string-name>
            <given-names>B.</given-names>
            <surname>Michael</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Blumberg</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Laartz</surname>
          </string-name>
          , “
          <article-title>Delivering large-scale IT projects on time, on budget</article-title>
          , and on value,
          <source>” Tech. Rep.</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Olcaysoy</given-names>
            <surname>Buharalı</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kalıpsız</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.: Bilişim</given-names>
            <surname>Projelerinde Yazılım Risk Yönetimi: Telekomü- nikasyon Örneği</surname>
          </string-name>
          ,
          <year>2015</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Shashank</given-names>
            <surname>Mouli</surname>
          </string-name>
          <string-name>
            <surname>Satapathy</surname>
          </string-name>
          ,
          <article-title>Effort Estimation Methods in Software Development using Machine Learning Algorithm(</article-title>
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          5.
          <string-name>
            <given-names>L.</given-names>
            <surname>Williams</surname>
          </string-name>
          ,
          <article-title>"What agile teams think of agile principles”</article-title>
          ,
          <source>Communications of the ACM</source>
          ,
          <year>2012</year>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          6.
          <string-name>
            <given-names>M.</given-names>
            <surname>Cohn</surname>
          </string-name>
          ,
          <article-title>"</article-title>
          <source>Agile estimating and planning"</source>
          ,
          <year>2005</year>
          ,
          <string-name>
            <given-names>Pearson</given-names>
            <surname>Education</surname>
          </string-name>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          7.
          <string-name>
            <surname>Brischoux</surname>
          </string-name>
          ,
          <article-title>Francois and Legagneux, Pierre "Don't Format Manuscripts”</article-title>
          ,
          <source>The Scientist</source>
          ,
          <year>2009</year>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          8.
          <string-name>
            <surname>Roger</surname>
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Pressman</surname>
          </string-name>
          ,
          <article-title>"Software Engineering A Practitioner's Approach"</article-title>
          ,
          <source>McGraw</source>
          .Hill International Edition
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          9. https://en.wikipedia.org/wiki/Gradient_boosting 10.https://www.cprime.com/resources/what-is
          <article-title>-agile-what-is-scrum/ 11</article-title>
          .http://www.statisticshowto.com/rmse/
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>