=Paper=
{{Paper
|id=Vol-2201/UYMS_2018_paper_88
|storemode=property
|title=Cevik Model Kullanan Projelere Ait Veri Seti Ile Is Gucu Kestirimi(Software Effort Estimation in Agile Environment)
|pdfUrl=https://ceur-ws.org/Vol-2201/UYMS_2018_paper_88.pdf
|volume=Vol-2201
|authors=Seyma Nur Kolak,Gizem Cavus,Muaz Gultekin,Oya Kalipsiz
}}
==Cevik Model Kullanan Projelere Ait Veri Seti Ile Is Gucu Kestirimi(Software Effort Estimation in Agile Environment)==
Çevik Model Kullanan Projelere Ait Veri Seti ile İş Gücü Kestirimi Şeyma Nur Kolak1, Gizem Çavus1, Muaz Gültekin1, Oya Kalıpsız1 1 Yıldız Teknik Üniversitesi, Bilgisayar Mühendisliği, İstanbul, Türkiye {seymanur.kolak, gizem,cavus, muaz.gultekin}@std.yildiz.edu.tr ,oya@ce.yildiz.edu.tr Ö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 senar- yolar içinde olması efor tahminini daha zorlu hale getirmektedir. Yazılım proje- lerinin 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, yine- lemenin 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 tah- minin yapılması projenin basarisini arttıracaktır. Bu çalışmada scrum metodolo- jisi kullanılarak geliştirilen yazılım projeleri için maliyet tahmini yapmaya ça- lış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. Anahtar Kelimeler: Çevik Süreçler, Scrum Metodolojisi, Maliyet Kestirimi, Makine Öğrenmesi, Regresyon, Sınıflandırma Software Effort Estimation in Agile Environment Şeyma Nur Kolak1, Gizem Çavus1, Muaz Gultekin1, Oya Kalipsiz1 1Yıldız Technical University, Computer Engineering, Istanbul, Turkey {seymanur.kolak, gizem,cavus, muaz.gultekin}@std.yildiz.edu.tr ,oya@ce.yildiz.edu.tr 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 de- velopment technology is in constantly changing scenarios makes effort estima- tion more challenging. The accuracy of the effort estimates of software projects and the reliability of the software projects are so important for software compa- nies because of the competitiveness. As modern software projects need to be delivered quickly and incrementally for each iteration of the software develop- ment 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 es- timation 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. Keywords: Agile, Scrum Methodologies, Effort Estimation, Machine Learning, Regression, Clustering 1 Giriş 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 ek- siksiz 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. [1] Tahmin riski, kaynaklar, maliyet ve program için belirlenen niceliksel tahminlerdeki belirsizlik derecelendirme ile ölçülür. [3] Proje kapsamı yeterince anlaşılmamışsa veya proje gereksinimleri değişiyorsa, belirsizlik ve tahmin riski tehlikeli derecede yüksek olur. 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. [2] 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ğla- yan, 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ça- larıdır [3]. Bu çalışmada, çalışma miktarı, bir iterasyonun sonunda teslim edilip edi- lemeyeceğ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. Proje- nin 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 son- raki iterasyonlar ve iterasyonlara ait konuları içermektedir. Bu zamanlarda yer alan iterasyonlara ait konuların hikâye noktası (story point) tahminleri ayrı ayrı hesaplan- mıştır. Yazılım projelerinin maliyet kestiriminde kullanılan yöntemler makine öğren- me 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çümle- rini tahmin edebilecek doğru modeller geliştirilmiştir. Tahmine dayalı modellerden regresyon tabanlı yöntemler seçilmiş ve Stokastik Gradient Artırma Makineleri (Gra- dient 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 anla- tılacaktır. Bölüm 3’te; belirlenen regresyon tabanlı öğrenme algoritmalarının tanımla- ması yapılacak ve bu algoritmalar üzerine optimizasyon işleminin nasıl gerçekleştiril- diği açıklanacaktır. Bölüm 4’te; uygulama ve testler incelenecektir. Bölüm 5’te; başa- rılı bir şekilde sonlanan uygulamanın sonuçları incelenecek ve gelecek araştırmalar için tavsiyeler ele alınacaktır. 2 İlgili Çalışmalar 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. 2.1 Makine Öğrenimi Algoritmalarını Kullanarak Yazılım Geliştirmede Is Gücü Tahmin Yöntemleri 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ü (bi- reysel 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. 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 uygula- mak için gereken çabayı ölçmek için kullanılır. Bir iterasyon sırasında bitirilen kulla- nı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 ça- lış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, litera- türdeki mevcut sonuçların yanı sıra birbirleriyle karşılaştırılmıştır. [4] 3 Metodoloji Bu çalışmada, Scrum ile geliştirilen projeye ait veri seti, iş gücü tahmini için kullanıl- mış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 nokta- ları 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ıl- mıştır. Böylece, veri madenciliği yöntemleri ile bir model elde edilir.Geliştirilen uygu- lamada, model oluşturmak için veri kümesi üzerinde çalışılacak algoritmalar incelen- miş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. Siste- min genel mimarisi ise Şekil 1’ de yer almaktadır. 3.1 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. ▪ 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. 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ğer- ler ile karşılaştırılarak hata sonuçları elde edildi. Bu modele genel bakış Şekil-1’ de gösterilmiştir. Sekil 1. Sistemin Genel Mimarisi 3.2 Gradyan Artırma Algoritması Gradyan güçlendirme makineleri, çok çeşitli pratik uygulamalarda önemli başarı gös- teren güçlü bir makine öğrenme tekniğidir. Farklı kayıp fonksiyonlarına göre öğren- mek 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. 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 ola- rak 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, öğreni- len tüm topluluğun hatalarına göre yeni bir ağaç eğitilir ve daha sonra topluluğa ekle- nir. 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 Veri Seti Tasarımı Scrum Veri Kümesi, Apache’den gelen veri kümesini içerir. Bu veri kümesi .csv uzan- tı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. Sekil 2. Apache Issue Veri Seti Sekil 3. Apache Iterasyon Veri Seti 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üzen- lemeye gidilmiştir. Bu veri setine ait özelliklerin bir projede nasıl kullandıklarını an- lamak önemlidir. Bunun için veri setinin özellikleri ile ilgili açıklamalar aşağıda mad- deler halinde açıklanmıştır. ▪ 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 ka- tılması gereken sırayı göstermektedir. Örneğin, engelleyici öncelikli konular, büyük veya küçük öncelikli konulardan daha fazla endişelendirmelidir. En- gelleyici ö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. ▪ Number of Comment:Tahmin sırasında geliştiricilerin yorum sayısı ekip işbir- liği derecesinin göstergesidir. ▪ Number of FixVersion: Her bir konudaki düzeltme sürümü alanı, sorunun gi- derildiğ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. ▪ Number of Affect Version: Bir konunun bulunduğu sürümleri belirtir. Sekil 5. Kategorik Veri Seti Düzenlenmiş veri setleriyle GBM algoritması denenmiş ve sonuçları kaydedilmiştir. Sekil 6. Kategorik Verinin Düzenlenmiş Hali 4 Uygulama ve Test 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. Sekil 7. Uygulama Giriş Ekranı Sekil 8. Uygulama Secim Ekranı Sekil 9. GBM Algoritmasının Sonuç Ekranı 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ıl- mış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. 5 Sonuçlar ve Yapılacak Çalışmalar Uygulanan GBM algoritmasının sonuçları Şekil 10‘daki gibidir Sekil 10. GBM Algoritmasının RMSE Değerleri Burada RMSE (Root Mean Square Error) değerleri esas alınmıştır. Regresyon ta- banlı 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. Sekil 11. Apache Veri Seti Üzerinde RMSE Gösterimi 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 Gelecek çalışmalarda regresyon tabanlı makine öğrenme tekniklerine devam edile- bilir 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ül- müştür Kaynaklar 1. B. Flyvbjerg and A. Budzier “Why Your IT Project May Be Riskier Than You Think”, Har- vard Business Review, 2011 2. B. Michael, S. Blumberg, and J. Laartz, “Delivering large-scale IT projects on time, on budget, and on value,” Tech. Rep., 2012. 3. Olcaysoy Buharalı, A. Kalıpsız, O.: Bilişim Projelerinde Yazılım Risk Yönetimi: Telekomü- nikasyon Örneği, 2015 4. Shashank Mouli Satapathy, Effort Estimation Methods in Software Development using Machine Learning Algorithm(2016) 5. L. Williams,"What agile teams think of agile principles”, Communications of the ACM,2012 6. M. Cohn,"Agile estimating and planning", 2005, Pearson Education. 7. Brischoux, Francois and Legagneux, Pierre "Don't Format Manuscripts”, The Scientist,2009 8. Roger S. Pressman ,"Software Engineering A Practitioner's Approach", McGraw.Hill Inter- national Edition 9. https://en.wikipedia.org/wiki/Gradient_boosting 10.https://www.cprime.com/resources/what-is-agile-what-is-scrum/ 11.http://www.statisticshowto.com/rmse/