=Paper= {{Paper |id=Vol-1980/UYMS17_paper_54 |storemode=property |title=Uygulama Yasam Dongusu Yonetim Araclarinin Verimini Arttirmak Icin Ciddi Oyun Uygulamasi(Examining Reward Mechanisms for Effective Usage of Application Lifecycle Management Tools) |pdfUrl=https://ceur-ws.org/Vol-1980/UYMS17_paper_54.pdf |volume=Vol-1980 |authors=Cagdas Usfekes,Murat Yilmaz,Eray Tuzun |dblpUrl=https://dblp.org/rec/conf/uyms/UsfekesYT17 }} ==Uygulama Yasam Dongusu Yonetim Araclarinin Verimini Arttirmak Icin Ciddi Oyun Uygulamasi(Examining Reward Mechanisms for Effective Usage of Application Lifecycle Management Tools)== https://ceur-ws.org/Vol-1980/UYMS17_paper_54.pdf
  Uygulama Yaşam Döngüsü Yönetim Araçlarının
  Verimini Arttırmak İçin Ciddi Oyun Uygulaması
            Çağdaş ÜSFEKES1, Murat YILMAZ2, Eray TÜZÜN3
                      1, 3
                          HAVELSAN A.Ş., Ankara, Türkiye
                        {cusfekes, etuzun}@havelsan.com.tr
                      2
                        Çankaya Üniversitesi, Ankara Türkiye
                             myilmaz@cankaya.edu.tr



  Özet. Uygulama yaşam döngüsü yönetimi (UYY), bir araç takımı yardımıyla
  yazılım ekosisteminde, gereksinim analizinden ürünün dağıtım aşamasına kadar
  olan tüm aktivitelerin daha fazla üretkenlik sağlayarak (hızlı ve güvenilir bir
  şekilde) yürütülmesini hedefler. Bu üretkenlik, yazılım geliştiricilerin
  kendilerine verilen görevleri motivasyon kaybetmeden yapabilmesi ile mümkün
  olabilmektedir. Dolayısıyla yazılım geliştiricilerin üretkenliklerinin artırımı
  kendilerine en uygun olduğunu düşündükleri işlerin seçim sorumluluğunu alarak
  sağlanabilmektedir. Makale kapsamında, bu problemin çözümü için algoritmik
  oyun kuramı kullanılarak bir market ve ödül mekanizması tasarlanması ve ciddi
  oyun kavramı yardımı ile modelin yazılım uygulamasının gerçekleştirilmesi ile
  yapılan ön çalışmalar anlatılmıştır.

  Anahtar Kelimeler: Uygulama yaşam döngüsü yönetimi, ciddi oyun
  uygulamaları, ödüllendirme mekanizmaları, yazılımda verimlilik, oyunlaştırma


Examining Reward Mechanisms for Effective Usage of
     Application Lifecycle Management Tools
            Çağdaş ÜSFEKES1, Murat YILMAZ2, Eray TÜZÜN3
                       1, 3
                          HAVELSAN A.Ş., Ankara, Turkey
                       {cusfekes, etuzun}@havelsan.com.tr
                       2
                         Çankaya University, Ankara Turkey
                            myilmaz@cankaya.edu.tr



  Abstract. Application lifecycle management aims to provide higher productivity
  using a set of tools for software development processes. It supports all processes
  from requirement analysis to deployment. This productivity is possible with
  software developers when they perform their tasks without losing motivation. If
  software developers can choose the optimum tasks, their productivity can
  increase. In this article an auction market and reward mechanism is developed by
  using algorithmic game theory and the studies on development software
  application.




                                                                                       158
       Keywords: Application Lifecycle Management, serious game applications,
       reward mechanisms, software engineering productivity, gamification


1      Giriş
Günümüzde yazılım sektöründen çıkan ürün veya fikirler farklı sektörlere de fayda
sağlamaktadır. Bu sebeple uygulama yazılım geliştirme süreci sadece yazılım
geliştirme temelli firmaların değil tüm firmaların başlıca işlevlerinden biri olmuştur.
    Uygulama yaşam döngüsü yönetimi (UYY) kuramı günümüze kadar iki versiyon
üzerinden evrilmiştir. Bu versiyonlardan ve versiyonlar arası farklardan makalenin ileri
aşamalarında detaylı bahsedilecektir. UYY araçlarındaki gelişmeler ile birlikte bu
araçların proje geliştirme süreçlerindeki önemi artmaktadır. Bir projenin fikir
aşamasından, teslimat ve bakım aşamasına kadar geçen tüm süreçlerde UYY
araçlarının rolü büyüktür. Bu sebeple UYY araçlarından alınan verimin artması
projeden elde edilecek olan ürünün kalitesinin artmasını sağlayacak ve proje maliyetleri
ile birlikte zamandan tasarruf edilmesini sağlayacaktır.
    UYY araçlarından alınan verimi artırmanın en önemli yolu bu araçları kullanan
farklı alandan çalışanların (yazılım mühendisleri, test mühendisleri, konfigurasyon
yöneticileri, proje yöneticileri vb.) UYY süreçleri üzerindeki bilgi, deneyim ve
tecrübelerini artırmaktır. Çalışanların UYY araçları üzerindeki bilgi ve tecrübelerini
artırmak için çeşitli eğitimler, seminerler, kurslar vb. aktiviteler düzenlenebilir. Bu
eğitimler için çalışanlar mesai zamanlarından vakit ayıracak ve eğitim sonunda ilgili
araçlar üzerinde çalışırken tecrübe kazanacaktır. Bu noktada oyunlaştırma ve ciddi
oyun uygulamaları kullanarak çalışanlar ayrı bir eğitim almadan bir yandan işlerini
yaparken bir yandan da oyun uygulamaları ile sıkılmadan tecrübe ve yetkinliklerini
artıracaklardır. Bu çalışmada ciddi oyun uygulaması kullanarak UYY araçlarından
alınan verimin arttırılmasından bahsedilecektir.
    Bildirinin ikinci bölümünde UYY ve ilgili çalışmalar, üçüncü bölümde,
oyunlaştırma konusunda literatürdeki çalışmalar özetlenmiştir. Dördüncü bölümde,
Yazılım Yaşam Yönetimi için oyunlaştırma tabanlı kaynak dağıtım çerçevesi
önerilmiş, beşinci bölümde, UYY Süreçleri ile Entegre Ciddi Oyun Uygulaması
Geliştirimi anlatılmıştır. Bu uygulama bir UYY aracı olan TFS (Team Foundation
Server) ile entegre çalışmaktadır ve buradan aldığı iş öğelerini açık artırma olarak
kullanıcıların teklifine sunmaktadır. Kullanıcılardan alınan teklifler kredi, yapılabilirlik
gibi parametreler ile değerlendirilerek işlerin kullanıcılara dağıtılması sağlanır.
Uygulamaya ilişkin teknik detaylar ilgili başlıkta anlatılmıştır. Son bölümde ise
sonuçlar ve gelecek çalışmalar sunulmuştur.


2      Uygulama Yaşam Döngüsü
Uygulama Yaşam Döngüsü (UYY) bir yazılım projesi çıktısının fikir aşamasından
geliştirme, dağıtım ve bakım süreçlerinin hepsini kapsayan bir yaklaşımdır [1]. Bu
sayede yazılım geliştirme süresi boyunca güçlü bir raporlama yeteneği ile izlenebilirlik
yeteneği sağlar [2]. UYY kavramı UYY 1.0 sürüm adı ile ortaya çıkmıştır. UYY 1.0
her disiplin için farklı araçların kullanımını ve tüm bu araçların kendi aralarında uyumlu




                                                                                               159
çalışması çözümünü önerir. Geliştirme, test, inşa, tasarım gibi farklı UYY süreçlerini
kapsayan farklı araçlar diğer süreçleri yöneten araçlarla karşılıklı bilgi alışverişi
yapabilir ve birlikte çalışabilir [3]. UYY 1.0 çözümünde farklı firmalar tarafından
üretilen farklı araçların birbirleri ile entegrasyonlarında yaşanan problem ve eksiklikler
sebebiyle UYY 2.0 çözümü doğmuştur [3,4]. UYY 2.0 yaklaşımında yazılım geliştirme
süreçlerinin farklı araçlardan ve süreçlerden farklı alanların takip edilmesi yerine tüm
bu süreçlerin tek bir araç altında toplanması benimsenmiştir [5,6]. UYY 2.0 çözümüne
uygun araçlar tüm bu süreç boyunca rol ve yetki tabanlı bir yaklaşım izler. UYY 2.0
sürümünde süreçler arası veri eşlemesi düzenli olarak otomatik olarak sağlandığından
dolayı UYY 1.0 çözümündeki veri eşleme maliyetleri sıfırlanmıştır. Bu sayede ürün
çıktısı üretimi, yazılım geliştirme yönetimi ve raporlama daha hızlı bir şekilde
yapılmaktadır [7,8]. UYY 2.0 çözümünün sağladığı bu avantajlardan sonra büyük çaplı
yazılım şirketinde de süreçlerin yönetimi gün geçtikçe UYY üzerinden yapılmaya
başlanmıştır. Bu yazılım şirketlerinde bir projenin başlangıcından müşteriye teslimatına
kadarki süreçte yazılım geliştirme mühendisleri, test mühendisleri, konfigürasyon
yöneticileri, proje yöneticileri gibi pek çok farklı görevde bulunan çalışanlar çeşitli
UYY (Uygulama Yaşam Döngüsü) araçları kullanır. Bu araçlar yazılım geliştirme
süreçlerinde kullanılan modülleri tek bir uygulama altında kullanıcılara sunar [5]. UYY
yaklaşımı gereksinim yönetimi, test yönetimi, inşa yönetimi, kaynak kod yönetimi,
proje yönetimi ve risk yönetimi süreçlerinin tümünü kapsar.
   Bütün bu farklı süreçleri birbiri ile entegre şekilde yürütebilmek bir yazılım
projesinin başarılı şekilde sonuçlanmasında ve kalite seviyesinin belirlenmesinde
büyük önem taşır.


3      Oyunlaştırma
Oyunlar, bireylerin, takımların ve kurumların stratejik etkileşimlerinin modellenmesi
üzerine kuruludur. Tarihte araştırmalar, bireylerin etkileşimleriyle ilişkili olan
oyunlara, analitik metotlara ve karar verme mekanizmalarına yardımcı olan araçlara
odaklanmıştır [9]. 1960’larda yapılan araştırmalar ve çalışmalar sosyal bilimler ile oyun
kuramı arasındaki ilişkiyi başarılı bir şekilde ortaya çıkarmıştır. Özellikle son yıllarda
oyunlaştırma ekonomik analiz alanında yaygınlaşmıştır [47]. Bu süreçte şirketler oyun
kuramını çalışanlarının karakter analizini yapmak amacıyla da kullanmaktadır.
   Oyun kavramı üzerine kurulan analizler, bireyler arası etkileşimleri inceleyen çeşitli
analitik araçlar barındırır. Bu analizler etkileşen öğelerin (bireyler, şirketler, uluslar
vb.) arasındaki etkileşimleri oyun düzeyinde inceler. Bununla birlikte, oyun kuramı
zorunlu kararları, davranışları ve sonuç olarak katılımcılar arasındaki çelişki içeren
etkileşimleri de keşfetmek için kullanılabilir. Oyun kuramının önemli kabüllerinden bir
tanesi de tüm oyuncuların rasyonel olduğudur. Diğer bir deyişle, tüm oyuncular oyun
içindeki kurallara uyarlar ve oyunu kazanmaya çalışırlar. Son on yılda oyun kuramı
ekonomi dışında psikoloji, biyoloji, dil bilimi ve bilgisayar bilimi alanlarında da
kullanılmaya başlanmıştır [10].
   Oyun kuramı genel olarak iki bölüme ayrılabilir. Bunlar “Rekabetçi oyun kuramı”
ve “İşbirlikçi oyun kuramı” olarak isimlendirilir [10]. Rekabetçi oyun kuramında
seçimler oyun içindeki her bireysel oyuncunun çıkarlarını etkiler. Bu oyuncular kendi
şahsi çıkarlarını düşünerek hareket ettikleri zaman daha kazançlı olurlar. 1950 yılında




                                                                                             160
John Nash “Nash Dengesi” adı verilen kavram geliştirmiştir. Nash dengesi oyuncuların
stratejik seçimlerinin bir türüne verilen isimdir [11]. İşbirlikçi oyun kuramı rekabetçi
oyun kuramından farklıdır. İşbirlikçi oyun kuramı bireylerin bir araya gelerek
oynamalarına imkanı sağlar. Bu teoriye göre oyuncular kendi aralarında çıkarlarını göz
önünde bulundurarak gruplara ayrılırlar. Bu teori yazılım geliştirme projelerinde
kullanılabilir.
    Son yıllarda oyun kuramının yazılım geliştirme mühendisliğinde kullanıldığı pek
çok örnek bulunmaktadır [12, 13]. Bu çalışmalardan göreceğimiz üzere oyun kuramı
yazılım geliştiriciler tarafından tanımlanmış veya potansiyel pek çok problemin
çözümünde kullanılabilir. Lagesse [14] görev atama problemleri üzerine bir oyun
geliştirmiştir. Bir diğer çalışmada Cockburn [15] yazılım geliştirmeyi bir çeşit oyun
olarak kabul etmiş ve bu oyunun sınırlı proje kaynakları üzerinde iletişim ve
koordinasyon yeteneklerinden ibaret olduğunu iddia etmiştir. Baskerville ise farklı bir
çalışmasında [16] hızlı kaynak kullanımına dayanan yüksek hızlı internet gelişimini
incelemiştir. Sullivan [17] yazılım tasarım kararlarının değerlendirilmesi için ekonomik
bir yaklaşım sunan çalışma sunmuştur. Bir diğer çalışmada Sazawal ve Sudan [18]
yazılım tasarım gelişimini şekillendirmek için karar vermeyi modelleme yapısına oyun
kuramını dahil etmişlerdir. Bu çalışmada Sazawal ve Sudan yazılım tasarım evrimi
oyunu adlı, geliştirici ve müşteri tarafından oynanabilen bir yaklaşım kurgulamıştır. Ek
olarak, yazılım geliştirme takımlarına durum analizi yapmak için hafif oyun teorik
analiz tekniği kullanmalarını önermişlerdir.
      Gao [19] yaptığı çalışmada karar hataları ile algılama yazılımlarının
ilişkilendirmesine yönelik bir oyun geliştirmiştir. Gao-hui [20] tarafından yapılan bir
başka çalışmada kurumsal şirketlerin yazılım proje geliştirmelerinin oyun kuramına
dayandırılması ile ilgili analizden bahsedilmiştir. Soska [21] ve diğerleri tarafından
akademik hayattaki öğrencileri baz alan bir çalışma yapılmıştır. Bu çalışmada
öğrencilerin yazılım testi konusunda daha detaylı ve derinlemesine bilgi sahibi olmaları
amacıyla bir kart oyunu geliştirilmiştir. Oscar Pedreira ve diğerleri tarafından yapılan
çalışmada [22] yazılım mühendisliğinde oyunlaştırma kullanımı üzerine bir
haritalandırma yapılmıştır. Bu sayede gelecekteki araştırmalara yönelik açık fırsatlar
tanımlanmaya çalışılmıştır. Oyunlaştırmanın son yıllarda yazılım mühendisliği gibi
akademik programlara, konferanslara ve akademik dergilere konu olması ile ilgili
Sweedyk [23] bir çalışma yapmıştır. Kitagawa ve diğerleri tarafından bir çalışmada
[24] ise yazılım geliştirme sürecinde yazılımın kalitesine etkisi büyük olan ve
çıkabilecek hataları minumuma indirmeyi amaçlayan kod gözden geçirme üzerinde bir
oyun kuramı modellenmiştir. Bir başka çalışmada Szabo [25] iş simülasyonu oyunu
olarak bilinen “Game Dev Tycoon” adlı oyunu akademik alanda öğrencilerin yazılım
mühendisliği öğrenimine uyarlamıştır.
      Yazılım süreçlerinin iyileştirilmesi için kullanılan yöntemler, yazılım ürünü
kalitesini artırmayı sağlayan tüm aktiviteleri kapsamalıdır [26, 27]. Bu aktiviteler
yazılım geliştirmeye etkileri bakımından yeniden değerlendirilmelidir (yazılım
geliştirmedeki insan faktörü, sosyal iletişim problemleri vb.). Yazılım geliştirme
süreçleri genellikle bireysellikten ziyade takım olarak çalışıldığından, tüm bu
çalışmalar birer sosyal faaliyet olarak kabul edilebilir [28]. Bu takımlardaki çalışanlar
çalışma koşulları, karakterleri, rasyonellikleri ve dayanışma gibi özellikleri ile
tanımlanırlar [29]. Yazılım süreç iyileştirme mekanizmalarının önemli amaçlarından
bir tanesi de yazılım projelerinin kalitesini maksimum seviyede tutmak için proje




                                                                                            161
planına ve proje bütçesine uygun bir yol çizmektir. Buna göre yazılım geliştirme süreci
boyunca bakım ve yönetim önemlidir. Örneğin projeler büyüdükçe sadece kaynak
kodun okunabilirliği değil teknik dokümantasyonların da okunabilirliği azalmaktadır.
Projelerin büyüklüğü arttıkça birbiri ile uyumlu çalışması gereken yazılım birimleri ve
çalışan sayısı da artmaktadır. Yazılım geliştirme sürecinde bu uyum ile ortaya çıkan
ürünün kalitesi doğru orantılıdır. Bu noktada yazılım geliştirme sırasında ortaya çıkan
hatalar doğru kişilere atanabilir.
     Yazılım geliştirmeyi sistematik hale getirmek için oyun benzeri aktiviteler
tasarlamak gerektiği pek çok kanıt ile belirlenmiştir [30, 31, 32]. Özellikle, Yılmaz [32]
yazılım geliştirmede takımların karakter özelliklerinin etkisini ortaya koyan oyun
benzeri bir yaklaşımda bulunmuştur. Yılmaz ve diğerleri [31] yazılım geliştirme
süreçlerini iyileştirmek için bir oyunlaştırma yaklaşımı üzerinde çalışmıştır. Yılmaz
[30] tarafından tanımlanan ve yazılım geliştirme için ekonomik mekanizma tasarımı
yaratma fikri ilgili alanda yapılan ilk çalışmalardan biri olmuştur. Bir çalışmada Yılmaz
ve diğerleri [33] yazılım geliştirme süreçlerini iyileştirmek için bir ekonomik
mekanizma geliştirilmesi üzerine çalışmışlardır. Yılmaz ve O'Connor oyunlaştırma
kullanarak yazılım geliştirme süreçlerini iyileştirmeyi amaçlayan tamamlayıcı bir
yaklaşımda bulunmuştur [34]. Bir diğer çalışmada Yılmaz ve O'Connor yazılım
geliştirmeyi bütünüyle ekonomik bir aktivite olarak görmüş ve yazılım geliştirme
sürecindeki görev atama problemlerine piyasa bazlı bir yaklaşım geliştirmiştir [35]. Bu
çalışmalara genel olarak bakıldığında oyun benzeri yaklaşımların yazılım geliştirme
süreçlerindeki verimliliğin artırılmasında önemli olduğu görülmektedir.


3.1 Ödüllendirme Mekanizmaları

Ödüllendirme mekanizmaları oyun kuramına bağlı bir alt araştırma alanıdır. Bu alan
oyun tasarımında büyük rol oynar. Bir oyun içinde her oyuncu bireysel ve takım olarak
başarılı olmak ve ödül kazanmak için çaba sarf eder. Ödüllendirme mekanizmaları, her
türlü alan için geliştirilmiş oyun mekanizmaları olarak kullanılabilir. Houk [36] tıp
alanında sinir ağları ile oyun kuramını birleştiren bir çalışma yapmıştır. Singh [37],
insan bilgisayar etkileşimi üzerine, çevrim içi öğrenme sistemi ile ödüllendirme
mekanizmalarını kullanmıştır. Lua [38] ise P2P sistemleri üzerine geliştirilmiş bir
ödüllendirme mekanizması üzerinde çalışmıştır. Wang ve Sun [39] bilgisayar oyunları
üzerindeki ödüllendirme mekanizmaları üzerine bir araştırma yapmışlardır.
     Ödüllendirme mekanizmaları, insan-bilgisayar etkileşimi ve insan öğrenmesi
üzerinde etkili bir araçtır. Eğer ödüllendirme mekanizması doğru bir oyun kuramı
üzerine inşa edilirse, herhangi bir alan için geliştirilmiş olan oyun kurgusu da o kadar
verimli olur. Oyunlaştırma teorileri insanın bir sistemi öğrenirken ortaya çıkabilecek
zorlukları daha kolay ve eğlenceli yoldan çözmeye yardımcı olur. Walz [40]
çalışmasında oyunlaştırma teorilerini toplumların sosyal ve kültürel temellerine
dayanan bir sistem olarak tanımlamıştır. Gonzales [41] bilgisayar mühendisliğinde
öğretme ve öğrenme sürecinde oyunlaştırma teknikleri ve oyun mekanizmalarının
kullanımından bahsetmiştir. Bunlara ek olarak, Qu [42] yazılım mühendisliğinin
öğretimi ile ilgili araştırmalar yapmış ve bu süreçte oyunlaştırma mekanizmalarının
kullanımını incelemiştir. Largo [43] çalışmasında pek çok öğrenciden gelen geri
dönüşlere göre öğrenme sürecinde oyunlaştırma kullanımını incelemiştir.




                                                                                             162
     Büyük çaplı kurumsal şirketlerde çalışanlar daha kompleks sistemler kullanmak
durumunda kalabilir. Bunlar mühendislik yönetim araçları, finansal otomasyon araçları
gibi pek çok çeşide sahip olabilir. Bu sistemleri verimli bir şekilde kullanmak ise bilgi
birikimi ve deneyim gerektirir. Bu noktada çalışanlar bu sistemleri verimli
kullanabilmek için gerektiğinde normalden çok daha fazla efor ve iş gücü sarf ederler.
Bu süreçte oyunlaştırma kuramı kullanımı çalışanların öğrenme sürecini hızlandırır.
Örneğin mühendislik alanı üzerinde Pariza yazılım testleri ve kaynak arasındaki
izlenebilirlik üzerine bir oyun kuramı geliştirmiştir [44]. Bir diğer çalışmasında ise test
ile kod çıktıları arası izlenebilirlik için oyunlaştırma çalışması yapmıştır [45].
     Ödüllendirme mekanizmaları üzerine yapılan bu çalışmaları inceledikten sonra
UYY ile oyunlaştırma kuramının harmanlancağı bir çerçeve (framework) üzerine
çalışmaya karar verdik ve ismi “Aykun” olan yazılım yaşam yönetimi için oyunlaştırma
tabanlı kaynak dağıtım çerçevesi geliştirdik. Bir sonraki başlıkta bu model hakkında
detaylı bilgi verilecektir.


4      Yazılım Yaşam Yönetimi için Oyunlaştırma Tabanlı Kaynak
       Dağıtım Çerçevesi
UYY, yazılım geliştiricilere iş ataması yapılırken kullanıcıların farklı tercihlerine göre
daha verimli olmalarını sağlayacak bir sistem önermemektedir. Aykun, tüm UYY
süreçlerinin oyun kuramı üzerinden yönetilmesini ve veriminin artırılmasını sağlayan
ciddi oyun temeline dayanan bir modeldir. Bu model, yazılım üretkenliğinin
iyileştirilebilmesi için geliştiricilere kaynak atama işini bireylerin tercihleri
doğrultusunda yapılmasını hedeflemektedir. Kullanıcılar, yazılım sistemi içinde
bulunan gereksinim analizinden yazılım testlerine kadar bir çok alanda tanımlanacak
olan yüzlerce küçük ölçekli açık arttırmaya katılabilecektir. Dolayısıyla, katılımcılar
belli kısıtlar ve kendi tercihleri doğrultusunda tanımlanan işlere talip olarak kaynak
ayırımı sağlanması yoluyla, kendilerini en çok motive eden işleri seçme hakkına sahip
olacaktır. Aykun, yazılım geliştiricilerin önceliklerini ve iş seçimlerini belirlemek için
düşünülmüş genel bir kaynak yönetimi çerçevesidir. Sistem kaynakların en verimli
şekilde iş paylaşımını ve zamanlamasını yapabilir. Şekil 1’de sistemin genel yapısı
görülebilir. Açık artırma havuzunda tanımlanan açık artırmalara katılımcılar teklif verir
ve sistem ilgili işleri katılımcılar ile eşler.




                                                                                              163
     Şekil 1. Yazılım Yaşam Yönetimi için Açık Artırmaya Dayalı Kaynak Dağıtım Modeli

      Aykun, kullanıcılar adına tanımlanmış işleri yazılım geliştiricilere duyurur.
Kişiler, tasarlanmış açık arttırma mekanizması yardımıyla ödedikleri kredi miktarına
bağlı olarak belli işler için istekte bulunurlar. Bu istekler doğrultusunda sistem uygun
adaylar arasından işi en çok isteyeni bu işi en çok yapmak isteyen kişi olarak kabul
eder. Bu sayede işlerin ve kaynakların arasında bir değer biçimi gerçekleşir. Sistem, bir
kullanıcının kendi bütçesine göre teklif vermek zorunda kalmasını ve fiyatın zaman
içinde sabit kalmasını sağlar. Sistem kullanıcılara yaptıkları işlerden dolayı puan, rozet
ve lider tablosu desteğiyle birlikte motivasyon arttırıcı bir fayda fonksiyonu oluşturur.
Kişiler kazanımları ve başarıları doğrultusunda sistem tarafından ödüllendirilir.
      Bu tekniği kullanarak bir takımdaki bireyler yapmak istedikleri iş ile ilgili mevcut
kredilerini kullanarak teklif verebilirler. Bu model ile yazılım geliştirme takımlarındaki
bireyler arasında verimlilik ve bilgi çeşitliliği açısından ilginç sonuçlar alınabilir. Bu
noktada tüm bireylerin kendi kredi tutarları doğrultusunda teklif verme hakkı bulunur.
Bu yöntem yazılım şirketlerinde risk azaltma amaçlı olarak kullanılabilir. Daha iyi
açıklamak için golf handikapı isimli metaforu inceleyebiliriz. Amatör golf
yarışmalarında kişiler yarışmaya bireysel olarak katılır fakat yarışma sonuçları
katılımcıların yetenek değerlerine göre belirlenir. Böylece tüm katılımcılar yarışmayı
kazanma yetisine göre yarışırlar ve herkes kişisel performansını geliştirmek için çalışır.


5      UYY Süreçleri ile Entegre Ciddi Oyun Uygulaması
       Geliştirimi
Bu bölümde HAVELSAN’da geliştirilmekte olan projeler üzerinde kurgulanacak olan
ciddi oyun uygulamasından bahsedilecektir. Projelerin geliştirilme aşamasında farklı
UYY (ALM) araçları kullanılabilir. HAVELSAN’da 2012 yılından bu yana Microsoft
ürünü olan Team Foundation Server (TFS) kullanılmaktadır [46]. Bu ciddi oyun
uygulaması da veri beslemesini TFS üzerinden RESTful servisleri kullanarak
yapacaktır. TFS’te tanımlı olan HAVELSAN projeleri bu sistemde de tanımlı olacak
ve TFS üzerindeki iş öğeleri üzerinden açık artırmalar yapılacaktır.




                                                                                             164
      Ciddi oyun uygulaması web tabanlı uygulama geliştirme teknolojileri kullanarak
geliştirilmiştir. Web arayüzü geliştirilmesinde ASP.NET / MVC, JavaScript, JQuery,
Bootstrap gibi popüler teknolojiler ile sunucu tarafında nesne tabanlı C# programlama
dili kullanılmış olup veritabanı seviyesinde Microsoft SQL Server 2012 teknolojisinden
faydalanılmıştır. ASP.NET / MVC ile SQL Server veritabanı iletişimi için üçüncü parti
herhangi bir uygulamaya veya araca ihtiyaç olmadığı için SQL Server tercih edilmiştir.
Ciddi oyun uygulamasına ait veritabanı tablo yapısı ve tablolar arası ilişkiler Şekil 2’de
görülmektedir.




                      Şekil 2. Ciddi Oyun Uygulaması Veritabanı Şeması

      Kullanıcılar sisteme HAVELSAN kullanıcı adı ve şifreleri ile giriş yapabilecektir.
HAVELSAN’da bu ciddi oyun uygulamasını kullanacak kullanıcılar (sistem
mühendisleri, yazılım mühendisleri, test mühendisleri, proje yöneticileri vb.) farklı
genel müdür yardımcılığı altında bulunan bir veya birden çok projede görev alır.
Oyuncular bu projelerdeki yetki seviyelerine göre sisteme giriş yaptığında erişim
sağlayabildikleri projeler ile bu projeler üzerinden tanımlanmış olan açık artırmaları
görebilir. Oyuncu dilerse yeni bir açık artırmaya katılabilir ve önceden katıldığı ve
kapanan açık artırmaları listeleyerek bunlardaki genel başarı durumunu grafiksel olarak
görerek diğer oyuncular arasındaki sıralamasını takip edebilir.
      Kullanıcı sisteme giriş yaptığında ilgili açık artırmalarına katılabileceği projelerin
listesi şekil 3’teki gibi görünür.




                                                                                               165
                                Şekil 3. Proje Listeleme Ekranı

      Ekranın sol üst köşesinden proje adına göre arama yapılarak istenilen proje
bulunabilir. Proje arama alanının sağında ise kullanıcı anlık olarak kalan kredi miktarını
görebilir.
      Proje listesinin sol bölümünde kullanıcıların yetkileri dahilinde yapabilecekleri
işlemler menü olarak listelenmiştir. Bu menü iki ana gruba ayrılır. Bunlar açık artırma
işlemleri ve kredi işlemleridir. Açık artırma işlemlerinde kullanıcı eğer yetkisi var ise
bir proje üzerinden yeni açık artırma başlatabilir. Bunun haricinde canlı açık artırmalar,
yaklaşan açık artırmalar, kapanan açık artırmalar ile kullanıcının katıldığı ve kazandığı
açık artırmalar da ayrı ayrı görülebilir. Kullanıcı, “İstatistikleri Görüntüle” menüsünden
yine yetkileri dahilinde katıldığı açık artırmaların veya tüm açık artırmaların sayısal
istatistiklerini grafiksel olarak görebilir. Kredi işlemlerinde ise kullanıcı ihtiyacı olan
olan krediyi limiti dahilinde yükleyebilir veya başka bir kullanıcıya kredi gönderimi
yapabilir. Her kullanıcı sadece kendine ait olan kredi kazanma, harcama, gönderme gibi
tarihçe bilgilerini de zamana göre sıralı olarak görüntüleyebilir.
      Kullanıcı, proje listesindeki projelerden birini seçerek o projeye ait açık artırmaları
listeleyebilir (Şekil 4).




                                                                                                166
              Şekil 4. Seçili Projenin Açık Artırma Listesi ve Detayları Ekranı

      Kullanıcı seçili projeye ait açık artırmalardan istediğini seçtiğinde ekranın alt
yarısında seçili açık artırmaya ait detay bilgileri listelenir. Açık artırmanın başlama ve
bitiş tarihi, fiyatı, katılan kişi sayısı ve zorluk derecesi (% cinsinden) gibi bilgiler bu
alanda görülebilir. Kullanıcı kendi başlattığı açık artırmayı “Artırmayı Durdur”
düğmesini kullanarak sonlandırabilir, “Başkasına Gönder” düğmesi ile farklı bir
kullanıcıyı bu açık artırmadan haberdar edebilir ya da “Artırmaya Katıl” düğmesi ile
açık artırmaya katılabilir.


6      Sonuç ve Gelecek Çalışmalar
Bu çalışmada UYY süreçleri ile oyun kuramı UYY araçları üzerinden birleştirilmiş
böylece proje süreçlerinden alınan verimin artırılması amaçlanmıştır. Bu uzun vadeli
çalışmanın ilk aşamasında UYY araçlarından TFS (Team Foundation Server) baz
alınmış olup ileriki aşamalarda Jira gibi araçlarla ciddi oyun uygulamasının
entegrasyonuna çalışılacaktır. Böylece HAVELSAN içinde daha çok projeye ve
kullanıcıya ulaşılması amaçlanmaktadır. Proje ile elde edilmesi beklenen sonuçlar şu
şekildedir:
      HAVELSAN bünyesinde kullanılmakta olan Geliştirme Ortamının (GO)
         üretkenliğinin arttırılması.
      Oyun tasarım kavramlarının (puan, rozet, ün, vb.) kullanılarak katılımcıların
         yapmaları beklenen en uygun işleri seçmelerinin sağlanması ve dolayısıyla
         bu işleri en verimli şekilde üretmelerinin sağlanması.




                                                                                              167
        Bu seçimler ve sonuçlarının proje yaşam döngüsüne olan katkılarının
         incelenerek iyileştirmeler önerilmesi.
     Kullanıcı ve iş dağılımları üzerine kurgulanacak bir veri modeli yardımı ile
         işlerin verimli bir şekilde dağıtılması ve bu dağılımların bilimsel yöntemler
         yardımıyla ölçülmesi.
     Yazılım geliştiricilerin proje veya alt görevlerin yazılım proje yaşam
         döngüsündeki durumlarının ve bu durumların projeye olan etkilerinin görsel
         olarak gösterilmesi.
   Proje ile elde edilecek kazanımlar ise şu şekildedir:
     HAVELSAN çalışanlarının UYY araçları konusundaki yetkinliğini en üst
         seviyeye çıkarmak
     HAVELSAN’ın oyun kavramı, oyunlaştırma ve ciddi oyun alanlarında
         yetkinliğinin artırılması
     HAVELSAN çalışanlarının üretkenliğinin ve motivasyonunun artırılması
     Bu proje ile yazılım geliştirme süreçlerinin uygulanış kalitesinin artırılması
         planlanmaktadır.
     Proje ile kullanım oranı yüksek olan UYY araçlarının veriminin artırılması ile
         HAVELSAN’a katkı yapılması amaçlanmaktadır.


Referanslar
 1. D. Chappell,“What is Application Lifecycle Management?”, Chappell & Associates, 2008.
 2. Ahsen İkbal Aytekin, Eray Tüzün, Yagup Macit, Bedir Tekinerdoğan, Uygulama Yaşam
    Döngüsü Yönetimi - Sistematik Eşleme Çalışması, UYMS, 2015
 3. Kääriäinen, J., Välimäki, A.: Impact of Application Lifecycle Management – A Case Study.
    In: International Conference on Interoperability of Enterprise, Software and Applications (I-
    ESA), Berlin, Germany, March 25-28, pp. 55–67, 2008
 4. Schwaber, Carey, et al. “The Changing Face of Application Lifecycle Management”
    Forrester Research, August 18, 2006.
 5. Shaw, K. (2007) “Application Lifecycle Management for the Enterprise”, Serena Software,
    White                                                                                 Paper,
    http://www.serena.com/Docs/Repository/company/Serena_ALM_2.0_For_t.pdf
 6. J. K. and A. Välimäki, “Applying ALM for the Development of Complex Systems :
    Experiences from the Automation Industry,” in EuroSPI, 2009, pp. 149–160.
 7. Kitchenham, B. A., Dyba, T., and Jorgensen, M., “Evidence-Based Software Engineering”,
    Proc. Of the 26th International Conference on Software Engineering (ICSE '04), Scotland,
    UK, pp. 273-281.
 8. Y. Macit, E. Tüzün, K.Ince and A.I.Aytekin, “Büyük Ölçekli Bir Organizasyonda Uygulama
    Yaşam Döngüsü Yönetimi Uygulama Deneyim”, UYMS, 2014.
 9. Yilmaz, M.and O'Connor, Rory, Oyun Kuramı Kullanarak Yazılım Takımlarının
    Üretkenliğini Artırmak İçin Geliştirilen Bir Yazılım Süreç Mühendisliği Yaklaşımı, UYMS,
    2011
10. S. Zahran, Software Process Improvement: Practical Guidelines for Business Success.
    Addison Wesley, 1998.
11. Eric Maskin, Nash equilibrium and mechanism design, Institute for Advanced Study,
    Princeton University, United States, 2008




                                                                                                    168
12. T. Dingsøyr, T. Dybå, and N. B. Moe, Agile Software Development: Current Research and
    Future Directions, 1st ed. Springer, 2010.
13. F. P. Deek, J. A. McHugh, and O. M. Eljabiri, Strategic software engineering: an
    interdisciplinary approach. CRC Press, 2005.
14. B. Lagesse, "A Game-Theoretical model for task assignment in project management," in
    2006 IEEE International Conference on Management of Innovation and Technology,
    Singapore, 2006, pp. 678-680.
15. A. Cockburn, Agile software development: the cooperative game. Addison-Wesley, 2007.,
    "A Game-Theoretical model for task assignment in project management," in 2006 IEEE
    International Conference on Management of Innovation and Technology, Singapore, 2006,
16. R. L. Baskerville, L. Levine, B. Ramesh, and J. Pries-Heje, “The high speed balancing game:
    How software companies cope with internet speed,” Scandinavian Journal of Information
    Systems, vol. 16, no. 1, pp. 11–54, 2004.
17. K. Sullivan, P. Chalasani, and S. Jha, “Software design decisions as real options,” University
    of Virginia, Tech. Rep., 1997.
18. V. Sazawal and N. Sudan, “Modeling software evolution with game theory,” Trustworthy
    Software Development Processes, vol. 5543, pp. 354–365, 2009.
19. Xing Gao, Weijun Zhong, Shue Mei, A game-theory approach to configuration of detection
    software with decision errors, 2013
20. Nie Gao-hui, Analysis on Enterprise's Software Project Management Based on Game
    Theory, Management Science and Engineering, 2006
21. A. Soska, J. Mottok, C. Wolff, An experimental card game for software testing:
    Development, design and evaluation of a physical card game to deepen the knowledge of
    students in academic software testing education, EDUCON, 2016 IEEE, 2016
22. Oscar Pedreira, Félix García, Nieves Brisaboa, Mario Piattini, Gamification in software
    engineering – A systematic mapping, Information and Software Technology, v. 57, 2015
23. Elizabeth Sweedyk, Robert M. Keller, Fun and games: a new software engineering course,
    ITiCSE '05 Proceedings of the 10th annual SIGCSE conference on Innovation and
    technology in computer science education, Pages 138-142, 2005
24. N. Kitagawa, H. Hata Nara, A. Ihara, K. Kogiso, K. Matsumoto, Code review
    participation: game theoretical modeling of reviewers in gerrit datasets, CHASE '16
    Proceedings of the 9th International Workshop on Cooperative and Human Aspects of
    Software Engineering, Pages 64-67, 2016
25. Claudia Szabo, Evaluating GameDevTycoon for teaching software engineering, Proceeding
    SIGCSE '14 Proceedings of the 45th ACM technical symposium on Computer science
    education, Pages 403-408, 2014
26. Yilmaz, Murat and O'Connor, Rory, Oyun Kuramı Kullanarak Yazılım Takımlarının
    Üretkenliğini Artırmak İçin Geliştirilen Bir Yazılım Süreç Mühendisliği Yaklaşımı, Turkish
    National Software Engineering Symposium, 2011
27. R. Conradi and A. Fuggetta, “Improving Software Process Improvement,” IEEE Software,
    vol. 19, no. 4, pp. 92–99, 2002
28. Y. Dittrich,C. Floyd, and R. Klischewski,Social thinking software practice.The MIT, 2002.
29. M. Grechanik and D. E. Perry, “Analyzing Software Development as a Noncooperative
    Game,” in IEE Seminar Digests, 2004, vol. 29.
30. Yilmaz, Murat and O'Connor, Rory (2010) Maximizing the value of the software
    development process by game theoretic analysis. In: 11th International Conference on
    Product Focused Software, 21-23 Jun 2010, Limerick, Ireland. ISBN 978-1-4503-0281-4
31. Yilmaz, Mert and Yilmaz, Murat and O'Connor, Rory and Clarke, Paul (2016) A
    gamification approach to improve the software development process by exploring the




                                                                                                     169
    personality of software practitioners, Communications in Computer and Information
    Science, 609 . Springer, pp. 71-83. ISBN 978-3-319-38980-6
32. Yilmaz, Murat, 2013, A software process engineering approach to understanding software
    productivity and team personality characteristics, PhD Thesis, Dublin City University.
33. Yilmaz, Murat and O'Connor, Rory and Collins, John (2010) Improving software
    development process through economic mechanism design. In: 17th European Software
    Process Improvement Conference, 1-3 Sept 2010, Greno France. ISBN 978-3-642-15666-3
34. Yilmaz, Murat and O'Connor, Rory (2016) A Scrumban integrated gamification approach
    to guide software process improvement: a Turkish case study. Tehnicki Vjesnik (Technical
    Gazette), 23 (1). pp. 237-245. ISSN 1330-3651
35. Yilmaz, Murat and O'Connor, Rory (2012) A market based approach for resolving resource
    constrained task allocation problems in a software development process. In: 19th European
    Conference on Systems, Software and Services Process Improvement (EuroSPI 2012), 25-
    27 June 2012, Vienna, Austria.
36. J. C. Houk, J. L. Davis, D. G. Beiser,"Reward Mechanisms", The MIT,pp. 185 - 185, 1994
37. N. Singh, N. S. Chaudhari, "Differential Reward Mechanism Based Online Learning Algo-
    rithm for URL-based Topic Classification",IEEE, CICN, 2014 International Conference
38. K. Lua, S. Wanga, Ling Xiea, Zhen Wanga, b, Mingchu Li, "A dynamic reward-based in-
    centive mechanism:Reducing the cost of P2P systems", vol. 112, pp. 105 - 113, 2016
39. H. Wang, C.Tsai, Game Reward Systems:Gaming Experiences and Social Meanings, 2011
40. S. P. Walz, Sebastian Deterding, "Gamification and Learning", MIT Press,pp. 688, 2014
41. C. S. González, A. M. Carreño, "Methodological proposal for gamification in the computer
    engineering teaching", IEEE, Computers in Education, 2014 International Symposium
42. W. Qu, Y. Zhao, M. Wang, B. Liu, "Research on teaching gamification of software engi-
    neering", IEEE, Computer Science & Education, 2014 9th International Conference
43. F.Largo,F. Durán,C. Arnedo,P. Rosique,R. Cuerda,R. Carmona,"Gamification of the learn-
    ing process:lessons learned",Revista Iberoamericana de Tecnologias del Aprendizaje, 2016
44. R. M. Parizi, "On the gamification of human-centric traceability tasks in software testing
    and coding", IEEE 14th International Conference on, 2016
45. R. M. Parizi, A. Kasem, A. Abdullah, "Towards gamification in software traceability: Be-
    tween test and code artifacts", 2015 10th International Joint Conference on, 2015
46. https://en.wikipedia.org/wiki/Team_Foundation_Server
47. J. Hamari, K. Huotari, and J. Tolvanen, “Gamification and Economics”,2015 MIT Express




                                                                                                 170