=Paper=
{{Paper
|id=Vol-2201/UYMS_2018_paper_41
|storemode=property
|title=GelISlet (DevOps) Icin Ciddi Oyun Eklentisi Deneyimi(Serious Game Plug-in Experience for DevOps)
|pdfUrl=https://ceur-ws.org/Vol-2201/UYMS_2018_paper_41.pdf
|volume=Vol-2201
|authors=Cagdas Usfekes,Yagup Macit,Murat Yilmaz,Eray Tuzun
}}
==GelISlet (DevOps) Icin Ciddi Oyun Eklentisi Deneyimi(Serious Game Plug-in Experience for DevOps)==
GelİŞlet (DevOps) İçin Ciddi Oyun Eklentisi Deneyimi
  Çağdaş ÜSFEKES 1, Yagup MACİT 1, Murat YILMAZ 2, Eray TÜZÜN 3
                       1
                         HAVELSAN A.Ş., Ankara, Türkiye
                        {cusfekes, ymacit}@havelsan.com.tr
                      2
                        Çankaya Üniversitesi, Ankara Türkiye
                              myilmaz@cankaya.edu.tr
                       3
                         Bilkent Üniversitesi, Ankara Türkiye
                             eraytuzun@cs.bilkent.edu.tr
  Özet. Yazılım geliştirme ve bakım çalışmalarını kapsayan GelİŞlet(DevOps)
  açısından, verimlilik ve hız, müşteri memnuniyetini tanımlayan önemli
  boyutlardır. Ciddi oyun uygulamaları ile gündelik endüstriyel işlerin rekabetçi
  bir ortamda daha verimli ve hızlı gerçekleştirilmesi hedeflenmektedir. DevOps
  etkinliklerinin oyunlaştırılma yaklaşımı ile ele alınması, rekabet ve yarış ortamı
  sağlamaktadır. Yarış ortamına ek olarak sağlanan ödüllü sıralama sistemleri ile
  yarışmacıların onurlandırılması şeklinde ortaya çıkan ciddi oyun uygulamaları,
  verimlilik açısından değerlendirilmektedir. Hata yönetimi, DevOps etkinlikleri
  içerisinde ürünün olgunlaşması müşteri memnuniyeti açısından öne çıkan
  bileşenlerdendir. Tespit edilen hatanın kısa sürede çözülmesi için katılımcının bir
  yarış ortamında kendi iradesi ile ihaleye katılımı, yüklenim altına girmesi ve
  çalışmasına ilişkin sonuçlarının herkesin görebileceği şekilde listelenmesi oyun
  ortamının parçalarıdır. Bu çalışmada, bir hata takip sistemi üzerinde hataların
  hızlı ve etkin bir şekilde çözümlenmesini sağlamak için ihale tabanlı bir ciddi
  oyun uygulamasının geliştirilmesi ve oyun akışı anlatılmıştır.
  Anahtar Kelimeler: Uygulama yaşam döngüsü yönetimi, Ciddi oyun
  uygulamaları, Yazılımda verimlilik, Oyunlaştırma, Hata yönetimi, GelİŞlet
    Serious Game Plug-in Experience for DevOps
  Çağdaş ÜSFEKES 1, Yagup MACİT 1, Murat YILMAZ 2, Eray TÜZÜN 3
                       1
                          HAVELSAN A.Ş., Ankara, Türkiye
                        {cusfekes, ymacit}@havelsan.com.tr
                       2
                         Çankaya University, Ankara Türkiye
                              myilmaz@cankaya.edu.tr
                        3
                          Bilkent University, Ankara Türkiye
                             eraytuzun@cs.bilkent.edu.tr
  Abstract. In terms of DevOps, efficiency and speed are important dimensions
  that define customer satisfaction. With serious game applications, it is aimed to
  make the everyday industrial software efforts more efficient and faster in a
       competitive environment. DevOps activities potentially could be gamified to
       provide a competitive environment where the participants are awarded to
       increase productivity in a software development environment. Defect
       management is one of the most important components in DevOps activities in
       terms of customer satisfaction. In order to solve the detected bug in a shorter
       amount of time, the engineers participate in a competitive environment, commit
       to a bid to resolve bug faster, where the results are observable by other engineers
       in a game environment. In this study, the development and game flow of an
       auction-based serious game application for effective defect management is
       described.
       Keywords: Application lifecycle management, Serious game applications,
       Software engineering productivity, Gamification, Defect management, Devops
1      Giriş
Yazılım geliştirme süreçlerinde yeterli kalitenin sağlanması, üretim verimliliği ve
rekabet açısından önem taşımaktadır. Bir yazılım geliştirme projesinde ortaya çıkan
hatalar için işleyen bir çözümlenme sürecinin olması ve uygun zamanda çözümün
sağlanması, projenin kalitesini doğrudan etkilemektedir. Bu noktada, yazılım hataların
erken çözümü için yapılabilecek çalışmalar veya uygulanacak yöntemler önem
kazanmaktadır. Oyunlaştırma yaklaşımı, hata çözümleme süreçleri için hız ve işlerlik
sağlayabilecek potansiyel barındırmaktadır.
   Hata çözümleme sürecinde etkinlik sağlama amacıyla HAVELSAN’da kullanılmak
üzere “BidGame” isimli web tabanlı ciddi oyun projesi geliştirilmiştir. Bu oyun ile
yazılım geliştirme süreçlerinde oyunlaştırma tabanlı ciddi oyun kullanarak hataların
yazılım geliştiriciler arasında teklif usulüne göre paylaştırılması ve uygulama
kalitesinin artırılması amaçlanmıştır. Bu ciddi oyun uygulamasının bir sonraki sürümü
ise bir DevOps aracı olan Team Foundation Server (TFS) üzerinde eklenti olarak
geliştirilmiş ve bu araç ile bütünleşik olarak kullanılabilmesi sağlanmıştır. Bu bildirinin
ikinci bölümünde DevOps ve oyunlaştırma hakkında bilgi verildikten sonra eklentinin
geliştirildiği TFS aracı hakkında genel bilgi verilecektir. Üçüncü bölümde geliştirilen
eklenti hakkında detaylı bilgiler ile ekran görüntüleri verildikten sonra çalışmadan
beklenen faydalar ile gelecek çalışmalardan bahsedilecektir.
2      Uygulama Yaşam Döngüsü ve Oyunlaştırma
2.1    Yazılım Mühendisliğinde Oyun Kavramı
Oyunlar kurumların, kurumlar da çalışan takımların ve takım üyelerinin arasındaki
stratejik etkileşimi üzerine kuruludur. Oyun kuramı ile ilgili yapılan analizler oyun
katılımcıları arasındaki karşılıklı etkileşimi inceleyen farklı analitik yardımcı araçlar
içerir. Oyun kuramının dayandığı ana noktalardan birisi de oyun içerisindeki tüm
oyuncuların rasyonel ve rekabetçi olduğudur. Her oyuncu oyun kurallarına uyarak
oyunu kazanmakla yükümlüdür. Oyun kuramı üzerinden geliştirilen ciddi oyunlar ise
oyun bazlı öğrenim yeteneklerini ve iş verimini eğlenceli yöntemlerle geliştirmeyi
sağlar. Bu amaçla Gao ve ark. yazılım ürün çıktılarını ve hataları yönetebilmek için bir
ciddi oyun uygulaması geliştirmiştir [1].
   Sistematik bir şekilde yazılım geliştirebilmek için oyun kavramı kullanmanın gerekli
olduğu çeşitli çalışmalarda belirtilmiştir [2, 3, 4]. Yılmaz [4] yazılım geliştirme
süreçlerinde takımların karakterlerinin etkisini gösteren bir oyun çalışması yapmıştır.
Yılmaz ve diğerleri [3] yazılım geliştirme süreçlerinden alınan verimin artması için bir
oyun çalışması yapmışlardır. Yılmaz ve ark. [2] tarafından geliştirilen yazılım
geliştirme için ekonomik modelleme fikri ilgili alanda yapılan örnek çalışmalardan biri
olmuştur. Yılmaz ve O'Connor [5] yazılım geliştirme süreçlerini iyileştirmek için bir
oyunlaştırma çalışması yapmışlardır. Genel olarak bu çalışmalara bakıldığında yazılım
süreçlerindeki verimliliğin artırılmasında büyük rolü olduğu görülmektedir.
2.2    Hata Yönetimi
Hata yönetimi yazılım geliştirme projelerinin önemli süreçlerinden biridir. Hata
yönetiminde verimi artırmak için oyunlaştırma kullanılabilir çünkü oyun kuramı ve
oyun senaryoları yazılım geliştirme mühendislerini belirli zamanda daha çok hata
çözmeye motive etmeyi sağlar. Lotufo ve ark. [6] bir çalışmasında Stack Overflow
sitesinin soru veritabanını kullanmıştır. Stack Overflow pek çok farklı kategoride
yazılım programlama ile ilgili problem ve cevaplarının olduğu bir sitedir. Dal Sasso ve
ark. [7] oyunlaştırmayı hata raporlama alanında kullanmıştır. Bir diğer çalışmada
Fraser [8] yazılım testine ve hata yönetimine karşı oyunlaştırma kullanarak farklı bir
bakış açısı geliştirmişlerdir. Aqlan ve ark. [9] similasyon modelleme ile hata yönetimi
yapabilmek için bir yazılım sistemi geliştirmiştir. Bir diğer çalışma ile Rahman ve ark.
[10] yazılım kalitesini artırmak için hata yönetimi için bir çerçeve (framework)
geliştirmiştir. Weerd ve ark. [11] yazılım ürün yönetimi (SPM) ve arıza yönetimini
dağıtılmış bir ortamda entegre etmek için kavramsal bir model sunduğu bir çalışma
yapmıştır. Bir diğer çalışmada Nair ve ark. [12] proje yöneticileri için yazılım
süreçlerinde etkili hata yönetimi yapabilecekleri bir kavram ortaya koymuştur.
2.3    Uygulama Yaşam Döngüsü (UYY) Altyapısı
Bu çalışmada anlatılan ciddi oyun eklentisi, UYY araçlarından olan Team Foundation
Server (TFS) üzerinde geliştirilmiştir. TFS, Microsoft tarafından geliştirilmiş bir
DevOps aracıdır [13]. TFS bir DevOps altyapı aracı olarak, görev yönetimi, gereksinim
yönetimi, sürüm denetimi, inşa yönetimi, test yönetimi, dağıtım yönetimi, izleme ve
geri besleme, süreçlerini yönetir [14]. TFS, yazılım geliştiricilere sağladığı API ve
dokümantasyon desteği ile yazılımcıların kendi eklentilerini geliştirebilmelerini sağlar.
TFS mimarisi şekil 1’de görüldüğü gibidir [15].
                                  Şekil 1. TFS Mimarisi
3      Ciddi Oyun Eklentisi
3.1    Eklentinin Oyun Akışı
Bu bildiride geliştirilen ciddi oyun, üç eklentiden oluşur. İlki “Bug” iş öğesinden yeni
açık artırma tanımlamak için geliştirilen sağ klik menü (context-menu) eklentisidir.
İkinci eklenti, oyuncuların teklif verebilecekleri ve teklif verdikleri açık artırmaları
görebilecekleri sekme (hub) eklentisidir. Üçüncü eklenti ise oyuncuların puan
sıralamasını ve hangi açık artırmaları kazandıklarını görebilecekleri sekme (hub)
eklentisidir. Şekil 2’de sağ klik menü eklentisi görülmektedir. Bu eklenti ile seçili bir
“Bug” iş öğesinden tipi “Auction” olan açık artırma iş öğesi yaratılır.
                            Şekil 2. Sağ Tuş Menü Eklentisi
   Bu menü üzerinden açılan popup ekranında kullanıcı, açık artırma puanını 1 ile 100
arasında belirler. Bu değer açık artırmayı kazanan kullanıcının, ilgili hatayı vaad ettiği
sürede çözerse kazanacağı puandır.
   Şekil 3’te sekme (hub) tipindeki eklenti görülmektedir. İlk listede kullanıcı teklif
verebileceği tüm açık artırmaları görebilir ve dilediği açık artırmaya teklif verebilir.
Açık artırma sonlandıktan sonra en küçük süre ile teklif veren kullanıcı, açık artırmayı
kazanmış olur. Sekmenin ikinci listesinde ise kullanıcı teklif verdiği açık artırmaları
görüp, dilerse verdiği teklifleri geri çekebilir.
                            Şekil 3. Açık Artırma Listesi
    Şekil 4’te ise üçüncü eklenti görülmektedir. Bu ekranda oyunculardan puanı en
yüksek ilk 10 oyuncu görülmektedir. Oyuncular oyun içinde verdiği tekliflerde taahhüt
ettiği sürede ilgili hatayı çözerse açık artırmanın değeri kadar puan kazanırlar. Bu
şekilde en çok puanı olan ilk 10 oyuncu belirlenir. Ayrıca her oyuncu bu ekranda kendi
puanını ve aylık olarak hesaplanmış oyunla ilgili istatistik verisini de görebilir.
                          Şekil 4. Açık Artırma Puan Ekranı
3.2    Beklenen Fayda
Bu ciddi oyun eklentisi ile projelerdeki hata çözme sürecinde verimin artırılması
amaçlanmıştır. Oyunlaştırma ile oyuncuları (yazılım geliştiricileri) daha çok puan
kazanmaya teşvik etmek amacıyla eğlenceli ve rekabetçi bir mücadele ortamı
yaratılmaya çalışılmıştır. Bu sayede daha kısa sürede daha çok hatanın çözülmesi
öngörülmüştür. Sonuç olarak yazılım geliştirme süreçlerinden alınan verim ile
geliştirilen yazılım ürününün olgunluk ve kalitesinin artırılması amaçlanmıştır.
3.3    Kullanılan Teknolojiler
TFS yazılım mimarisi, önyüz tarafında TypeScript, AJAX ve HTML, sunucu tarafında
Visual C# ve MVC teknolojilerini içermektedir. TypeScript, derlendiği zaman
Javascript kodu üreten nesne temelli bir programlama dilidir [16].
   TFS içerdiği bu teknolojiler ile kullanıcılara esnek ve güçlü bir eklenti mekanizması
sağlamaktadır. Eklentiler vsix uzantılı arşiv dosyalarıdır ve manuel olarak TFS
arayüzünden sisteme yüklenirler. Bir eklenti dosyası, TypeScript kodu içeren dosya,
önyüz için HTML sayfası ve konfigurasyon bilgilerini içeren json uzantılı dosyalardan
oluşur. Eklenti Microsoft Visual Studio editörü ile geliştirilip derlenir. Derleme işlemi
başarılı ise NodeJS teknolojisi ile vsix paketi oluşturulur ve TFS arayüzünden
yüklemeye hazır hale getirilir.
4      Sonuç ve Gelecek Çalışmalar
Bu çalışmada, GelİŞlet etkinliklerinin yazılım kalitesini arttırmak amacıyla geliştirilen
bir ciddi oyun eklentisinin geliştirilmesi deneyimi aktarılmıştır. Ciddi Oyun eklentisi
ile yazılım hatalarının çözümleme süreci oyunlaştırılmıştır. Ciddi oyun içerisinde açık
arttırma tanımlama, teklif verme ve başarı listelerinin kullanımı ile rekabetçi bir yarış
ortamı ve ödül mekanizması sağlanmıştır.
    Kullanıcı memnuniyeti için önemli boyutlardan biri olan yazılım hata çözümleme
sürecinin oyunlaştırılması ile yazılım kalitesinin ve olgunluğunun arttırılması için bir
altlık hazırlanmıştır.
    Oyunlaştırma uygulamasının bir eklenti olarak, TFS gibi hali hazır bir GelİŞlet
altyapısı üzerinde gerçekleştirilmesi ile kullanıcıların kendi çalışma ortamlarında ve
hayatlarının doğal akışı içerisinde ciddi oyun deneyimleyecekleri bir ortam
sağlanmıştır.
    Oyunlaştırma uygulamasının, hali hazır bir GelİŞlet altyapısı üzerinde Web API
olanakları kullanılarak geliştirilmesi ile bu tür altyapıların kurumsal veya fonksiyonel
alanlara göre özelleştirilebileceği görülmüştür.
    Gelecek çalışma olarak, geliştirilen eklentinin kullanım deneyimine dayalı olarak,
yazılım hatalarının çözülme süresinin ve yazılım kalite değişiminin incelenmesi
hedeflenmektedir.
   Teşekkür. Yazarlar HAVELSAN yönetimine çalışmaya verdiği destek için
teşekkürler ederler
Referanslar
 1. Xing Gao, Weijun Zhong, Shue Mei, “A game-theory approach to configuration of detection
    software with decision errors”, 2013
 2. 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
 3. 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
    personality of software practitioners, Communications in Computer and Information
    Science, 609 . Springer, pp. 71-83. ISBN 978-3-319-38980-6
 4. Yilmaz, Murat, 2013, A software process engineering approach to understanding software
    productivity and team personality characteristics, PhD Thesis, Dublin City University.
 5. 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
 6. Rafael Lotufo, Leonardo Passos, Krzysztof Czarnecki, "Towards improving bug tracking
    systems with game mechanisms", Proceedings of the 9th IEEE Working Conference on
    Mining Software Repositories, 2012, pp.2-11
 7. Tommaso Dal Sasso, Andrea Mocci, Michele Lanza, Ebrisa Mastrodicasa, "How to Gamify
    Software Engineering", Software Analysis, Evolution and Reengineering (SANER), 2017
 8. Gordon Fraser, "Gamification of software testing", Proceedings of the 12th International
    Workshop on Automation of Software Testing, 2017, pp.2-7
 9. Faisal Aqlan, Sreekanth Ramakrishnan, Abdulrahman Shamsan, "Integrating data analytics
    and simulation for defect management in manufacturing environments", Simulation
    Conference (WSC), 2017
10. Aedah Abd Rahman, Nurdatillah Hasim, "Defect Management Life Cycle Process for
    Software Quality Improvement", : Artificial Intelligence, Modelling and Simulation
    (AIMS), 2015
11. Inge van de Weerd, Rudy Katchow, "On the integration of software product management
    with software defect management in distributed environments", Software Engineering
    Conference in Russia (CEE-SECR), 2009
12. T. R. Gopalakrishnan Nair, V. Suma, N. R. Shashi Kumar, "An analytical approach for
    project managers in effective defect management in software process", Software
    Engineering (MySEC), 2011
13. https://en.wikipedia.org/wiki/Team_Foundation_Server
14. Ahsen İkbal Aytekin, Yagup Macit, Eray Tüzün, "Uygulama Yaşam Döngüsü Yönetimi
    Altyapısı için GelISlet (DevOps) Deneyimi", UYMS 2016, pp. 349-355
15. https://docs.microsoft.com/en-us/tfs/server/architecture/architecture
16. https://www.typescriptlang.org/