Sarmal ve çevik yazılım geliştirme çizelgesinin sezgisel yöntemlerle optimizasyonu ve karşılaştırması
Optimization and comparing spiral and agile software development scheduling by using heuristic algorithms
Yazar: MAHMUT BAŞ
Danışman: PROF. DR. ADEM KARAHOCA
Bahçeşehir Üniversitesi / Fen Bilimleri Enstitüsü / Bilgi Teknolojileri Ana Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control ; Bilim ve Teknoloji = Science and Technology

Özet:
İlerleyen zaman ve teknoloji ile birlikte, yazılım geliştirme projeleri de büyümüş ve karmaşıklaşmıştır. Yazılım projelerindeki büyüklük ve karmaşıklığın artması insan kaynağı yönetimini zorlaştırmıştır. Bu çalışma, projenin maliyet ve verimini hesaplayarak optimizasyon algoritmalarıyla çizelgelenmesini ele almaktadır. Amaç en az maliyet ve performansı en iyi çalışanlar ile projeyi tamamlamaktır. Yazılım geliştirme süreçlerinden sarmal ve çevik model çalışma içerisinde anlatılmıştır. Ardından kısıtlı kaynaklar ile proje çizelgeleme ve sezgisel yaklaşımlar açıklanmıştır. Daha sonra sezgisel metotlar arasındaki Genetik Algoritma, Isıl İşlem Algoritması ve Karınca Koloni Algoritması için temel kavramlar anlatılmıştır. 
Temel kavramlarından bahsedilen optimizasyon algoritmalarını kullanarak, sarmal ve çevik yazılım geliştirme süreci ile oluşturulmuş örnek aktiviteler kümesini proje kısıtlarını göz önünde bulundurarak çizelgeleyen bir c#.Net uygulaması geliştirilmiştir. Bu uygulama ile farklı aktivite ve insan kaynağı oluşturulmuş örnek sarmal ve çevik yazılım projeleri için optimizasyon algoritmaları aynı girdiler ile 5 kez çalıştırılmış ve sonuçları çalışma zamanı, maliyet düşüşü ve verim artışı bakımından karşılaştırılmıştır.    
Yapılan testler sonucunda, sarmal yazılım geliştirme gibi aktivitesi fazla ve büyük yazılım geliştirme modellerinde genetik algoritma daha üstün gelmiştir. Genetik algoritmadan sonra karınca koloni algoritması ve sonrasında ısıl işlem algoritması gelmektedir.  Çevik yazılım geliştirme gibi daha küçük parçalara bölünerek oluşturulan az aktiviteli modellerde ise karınca koloni algoritmasının daha etkin olduğu gözlemlenmiştir. Sonrasında sonuçları karınca koloni algoritmasına yakın olan genetik algoritma ve son olarak ısıl işlem algoritması sıralamadaki yerini almıştır.

Abstract:
The software development projects are getting more complex by time and evolving technology. The increasing complexity in software projects brought difficulty in management of human resources. In this work, scheduling of staff that will contribute in such complex software development project with cost and productivity calculations is handled. The purpose is to complete the project with lowest cost and highest with performing staff. Spiral software development and agile software development processes are used in this work. And then, heuristic approach and project scheduling with limited resources are defined, then, genetic algorithm, simulated annealing, ant colony algorithm in between heuristic methods are mentioned.
A c# .Net application is developed which contains spiral software development and agile software development processes sample. In this application, tasks and human resources are defined, optimization algorithms for spiral and agile software development are run 5 times with same input, and results are compared in terms of total work time, cost reduction and productivity increase.  
Conclusion of tests showed that genetic algorithm has seen more powerful in spiral software development with lots of tasks and complex software development models. After genetic algorithm secondarily ant colony algorithm and thirdly simulated annealing algorithm comes.  Ant colony algorithm is observed as more useful for less task models like agile software development. And then, simulated annealing algorithm comes in the end, with results close to ant colony algorithm.