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.
İ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.