Professional Documents
Culture Documents
C
ATATÜRK ÜNİVERSİTESİ
HAZIRLAYAN:
Özmen AKBULUT
ERZURUM
İçindekiler
ÖZET ........................................................................................................................................................ 2
GİRİŞ ........................................................................................................................................................ 3
YAZILIM GELİŞTİRME PROJELERİNDE BÜYÜKLÜK/EFOR KESTİRİM YÖNTEMLERİ.................................... 5
1- Algoritmik Modeller.................................................................................................................... 5
1.1 İşlev Puan Analizi (Function Point Analysis) ..................................................................... 5
1.2 Kaynak Kod Satırı (SLOC-Source Line of Codes) ............................................................. 5
1.3 SEER-SEM (Software Evaluation and Estimation of Resources-Software Estimation
Model) 5
1.4 Putnam Modeli .................................................................................................................... 6
1.5 COCOMO Model (Constructive Costing Model) ............................................................... 6
2- Algoritmik Olmayan Modeller (Non-Algorithmic Model) ......................................................... 6
2.1 Anolji (Analogy) ......................................................................................................................... 7
2.2 Uzman Görüşü / Değerlendirmesi (Expert Judgement) ............................................................ 7
3- Makine Öğrenmesi Metotları (Machine Learning Methods)....................................................... 7
4- Kestirim Yöntemlerinin Karşılaştırılması ................................................................................... 7
1
YAZILIM GELİŞTİRME PROJELERİNDE BÜYÜKLÜK/EFOR KESTİRİM
YÖNTEMLERİ
Özmen AKBULUT
ÖZET
Her ne kadar temel hedef yazılımın üretilmesi olsa da, yazılım projesinin öngörülebilir bir bütçe
ve kabul edilebilir bir süre içerisinde gerçekleşmesi gerekmektedir. Bu açıdan bakıldığı zaman
bir yazılım geliştirme projesi için bütçe ve süre kavramları en önemli iki kısıt ya da ulaşılması
gereken hedefler olarak ele alınabilir. Atanabilecek bütçe sınırlarını aşan ya da kabul edilebilir
bir süre içerisinde bitirilemeyen projeler, yazılım mühendisliği açısından gerçek başarıyı elde
etmiş sayılmamaktadır. Standish Grubunun 2014 yılında yayınladığı “Chaos Report” raporuna
göre Amerika’da yapılan yazılım geliştirme projelerinden sadece %16 ‘sı gerçekten başarılı
olmuştur. Yine aynı raporda yazılım projelerinin başarısında düzgün bir planlamanın önemli
olduğu vurgulanmıştır (Standish Report, 2014:4,8). Bu nedenle bir yazılım projesinde proje
planlama en önemli faaliyetlerden biridir. Zayıf planlama genellikle proje hatalarına ve proje
ekibi için dramatik sonuçlara yol açar. Yazılım projelerinde büyüklük, efor, süre ve dolayısıyla
maliyet tahminleri yazılım geliştirme projelerinin başarısı açısından önem arz etmektedir.
2
GİRİŞ
Tablo 1: Firma ölçeklerine göre proje başarı yüzdeleri - Standish Report, 2014
Son yıllarda yazılım geliştirme projelerinin başarısızlığının nedenini bulmak için birçok
çalışma yapılmıştır. Galorath ve Evans ‘ın yaptığı bir araştırmada 2100 internet sitesi
incelenmiş ve yazılım projesi başarısızlıklarıyla ilgili 5500 neden bulmuştur. Bulunan nedenler
arasında, yetersiz ihtiyaç analizi ve mühendisliği, projelerin kötü planlanması, projenin erken
aşamalarında aniden karar verilmesi ve yanlış tahminler en önemli nedenler arasında yer
almaktadır (Galorath and Evans: 2006).
Konuya tam ters açıdan bakacak olursak, Standish Grup raporunda yazılım projelerinde
yaşanan başarısızlıkların nedenini araştırılırken, yapılan önemli analizlerden birisi de bir
3
projeyi başarıya ulaştıran etkenlerin incelenmesi olmuştur. Bu etkenler ve başarıya etki oranları
aşağıda tablo halinde verilmiştir (Standish Report, 2014);
Yukarıda verilen tabloya göre doğru planlama yazılım geliştirme projelerinde 4.sırada etki
düzeyine sahip bir süreçtir. Bu sürecin sağlıklı ve doğru bir şekilde yapılabilmesi aynı zamanda
büyüklük kestiriminde sağlanan başarıya da bağlıdır.
Bazı proje yöneticileri ise; a) ortaya çıkan ürün ve kalitesinin önemli olan tek şey olduğu, b)
var olan proje planlama modellerinin çoğunlukla proje başında net olmayan bilgilere dayalı ve
net sonuç vermediğini, c) planlamaya harcanan zamanın boşa harcandığını düşünerek proje
planlama adımlarını atlamaktadırlar (Chatzoglou & Macaulay, 1996:4).
Araştırmaların sunduğu bazı verilerinde gösterdiği üzere yazılım üretimi konusunda kestirim
ve tahmin yöntemlerinin önemi büyüktür. Yazılım geliştirme sürecinin başında, büyüklük,
emek, süre ve maliyet kestirimleri geliştiricilerin ve yöneticilerin daha başarılı sonuçlar elde
etmesine katkı sağlayacaktır. Yazılım proje yönetiminde çok önemli olan kestirim yöntemleri
aracılığı ile zaman ve işgücü gibi planlamaların daha iyi yapılabilmesi sağlanır.
4
YAZILIM GELİŞTİRME PROJELERİNDE BÜYÜKLÜK/EFOR KESTİRİM
YÖNTEMLERİ
Yazılım projeleri genel olarak geliştirme sürecinde değişkenlik gösteren bir yapıdadır, bu
yüzden farklı yazılım projelerinde farklı yöntemler kullanımı söz konusu olmuştur. Daha iyi bir
proje planlaması yapabilmek, kestirim hatalarını en aza indirmek ve başarılı sonuçlar elde
edebilmek birçok kestirim yöntemi geliştirilmiştir. Bu yöntemler genel dört ana kategori altında
incelenmiştir (Tailor, O., Saini, J., & Rijwani, M. P. 2014).
1- Algoritmik Modeller
Algoritmik yöntemlerde, geçmiş veriler ve deneyimlerle oluşturulan matematik denklemleri
kullanılır. Yani algoritmik yöntemler için bir kestirim fonksiyonu oluşturulur ve bu fonksiyon
ile kullanılan modele göre değişen zorluk/maliyet faktörleri kullanılarak yazılım projesi
büyüklüğü toplam efor değeri üzerinden bulunmaya çalışılır (Tailor, O., Saini, J., & Rijwani,
M. P. 2014). Aşağıda günümüzde genel olarak kullanılan algoritmik modellerin kısaca
tanımları yapılmıştır.
5
algoritmik bir proje yönetimi yazılımı uygulamasıdır. İsimden gelen SEER, geleceği
öngörebilme yeteneğine sahip olana atıfta bulunarak, proje yöneticilerinin, mühendislerin
ve maliyet analistlerinin bir proje için gerekli efor, maliyet takvimi ve risk faktörlerini
doğru tahmin etmesini sağlamak için parametrik algoritmalara, bilgi bankalarına,
simülasyon tabanlı olasılığa ve daha önce yapılan emsal projelere dayanır (Pauline, M.,
Aruna, D. P., & Shadaksharappa, D. B. (2013).
COCOMO (Basic): COCOMO, proje için harcanan eforu ve geliştirme için gerekli olan
süreyi proje büyüklüğünün bir fonksiyonu olarak kod satır sayısı cinsinden hesaplar.
Detaylı COCOMO (Detailed): COCOMO II’nin üzerine projenin test, geliştirme ve tasarım
gibi fazlarının ve ürünün sistem, alt-sistem ve modül gibi farklı seviyelerine göre maliyet
hesaplamalarının yapıldığı COCOMO modelidir.
6
kullanılan ve üzerine araştırmalar yapılan Algoritmik Olmayan Modeller, Analoji, Uzman
Görüşü/Değerlendirmesi ve Makine Öğrenmesi Modelleridir.
7
Metod Kategori Avantajları Dezavantajları
Kaynak Kod Algoritmik Uygulaması çok kolay Proje erken safhalarında satır
Sayısı (LOC-SLOC) sayısı tahmini zor, çok büyük
projelerde iyi değil, dile
bağımlı
İşlev Puan Analizi Algoritmik LOC-SLOC dan daha iyi, dil’e Çok fazla yargı var, tasarım
(Functional bağımlı değil, grafik arayüz şartnamesinden sonra başlar,
point) tabanlı işlevde araştırma verisi az
PUTNAM Algoritmik Olasılıksal model, çok büyük Sadece çok büyük projeler için
projelerde kullanılır
Analogy Algoritmik Gerçek deneyime dayalı olarak Geçmiş projeler hakkında çok
Olmayan çalışır, özel uzmana sahip fazla bilgi gereklidir, bazı
olmak önemli değildir durumlarda benzer bir proje
yoktur
8
Sinir Ağları Makine Veritabanlarından farklı olarak Tasarım için bir kılavuz yoktur,
(Neural Öğrenmesi tutarlı olması, muhakeme gücü performans büyük eğitim
networks) verilerine bağlıdır
9
Kaynakça;
1- Chatzoglou, P. D., & Macaulay, L. A. (1996). A review of existing models for project
planning and estimation and the need for a new approach. International Journal of
Project Management, 14(3), 173-183.
2- The Standish Group Report- CHAOS, 2014
3- Galorath, D. D., & Evans, M. W. (2006). Software sizing, estimation, and risk
management: when performance is measured performance improves. CRC Press.
4- Tailor, O., Saini, J., & Rijwani, M. P. (2014). Comparative analysis of software cost
and effort estimation methods: a review. Interfaces, 5(7), 10.
5- Keskinkılıç, M, Kahveci, F. (2019). Yazılım Mühendisliğinde Çevik Yöntemler
Üzerine Kavramsal Bir İnceleme ve Sınıflandırma. Atatürk Üniversitesi Sosyal
Bilimler Enstitüsü Dergisi, 23 (3) , 1067-1091.
6- Rehber, D. (2003). Yazılım Projelerinde Başarısızlık.
7- Keskin, M., & Alptekin, G. I. (2016).Yazılım Maliyet Tahmininde İşlev Puanı Analizi
ve Yapay Sinir Ağları Kullanımı.
8- Borandağ, E., Yücalar, F., & Şahinaslan, Ö. (2013) Yazılım Projelerinde Büyüklük
Tahmini.
9- Eveleens, J. L., & Verhoef, C. (2010). The rise and fall of the chaos report figures.
IEEE software, 27(1), 30.
10- Boehm, B., Clark, B., Horowitz, E., Westland, C., Madachy, R., & Selby, R. (1995).
Cost models for future software life cycle processes: COCOMO 2.0. Annals of
software engineering, 1(1), 57-94.
11- Pauline, M., Aruna, D. P., & Shadaksharappa, D. B. (2013). Comparison of available
Methods to Estimate Effort, Performance and Cost with the Proposed Method‖.
International Journal of Engineering Inventions, 2(9), 55-68.
12- Sharma, T. N., Bhardwaj, A., & Sharma, A. (2011). A Comparative study of
COCOMO II and Putnam models of Software Cost Estimation. vol, 2, 1-3.
13- Tripathi, R., & Rai, D. P. (2016). Comparative Study of Software Cost Estimation
Technique. International Journal of Advanced Research in Computer Science and
Software Engineering, 6(1).
14- Chiu, Nan-Hsing, and Sun-Jen Huang. "The adjusted analogy-based software effort
estimation based on similarity distances." Journal of Systems and Software 80, no. 4
(2007): 628-640.
15- Chemuturi, M. (2011). Analogy based software estimation. Chemuturi Consultants.
16- Rush, C., & Roy, R. (2001). Expert judgement in cost estimating: Modelling the
reasoning process. Concurrent Engineering, 9(4), 271-284.
17- Pospieszny, P., Czarnacka-Chrobot, B., & Kobylinski, A. (2018). An effective
approach for software project effort and duration estimation with machine learning
algorithms. Journal of Systems and Software, 137, 184-196.
18- BaniMustafa, A. (2018, July). Predicting software effort estimation using machine
learning techniques. In 2018 8th International Conference on Computer Science and
Information Technology (CSIT) (pp. 249-256). IEEE.
19- Ian Sommerwille “Software Engineering Tenth Edition”
10