<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Sanal Ofis Ortamında Kod Gözden Geçirme ile Kod Değerlendirmesi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Merve Kaymak</string-name>
          <email>mervekaymak1993@gmail.com</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mehmet Namıduru</string-name>
          <email>mehmetnamiduru@gmail.com</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Eray Tüzün</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>ve Murat Yılmaz</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Çankaya Üniversitesi</institution>
          ,
          <addr-line>Bilgisayar Mühendisliği, Ankara</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>HAVELSAN A.Ş, Teknoloji ve Akademi Direktörlüğü</institution>
          ,
          <addr-line>Ankara</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Oyun Araştırma ve Geliştirme Laboratuvarı, Çankaya Üniversitesi</institution>
          ,
          <addr-line>Ankara</addr-line>
        </aff>
      </contrib-group>
      <fpage>706</fpage>
      <lpage>711</lpage>
      <abstract>
        <p>Özet. Yazılım geliştirirken hataların erken fazlarda fark edilmesi, doğacak masrafları en aza indirgemektedir. Bu bağlamda kullanılabilecek süreçlerden biri “Kod Gözden Geçirme”dir. Yazılımcıların kod standartları, kod kalitesi, kod hataları gibi ölçütleri gözeterek birbirlerinin kodlarını değerlendirmesi, kod gözden geçirmedir. Bildiride ayrıntılarıyla bahsedilen projede, bu sürecin pratiğinin bir simülasyon ortamında takıma yeni dâhil olan pratisyene kazandırılması ve bu sayede eğitim maliyeti ve süresi azaltılırken eğlenerek öğrenme amaçlanmaktadır. Sanal ofis ortamını daha gerçekçi kılmak için ofis sesleri, objeleri, personeli, animasyonlarının yanı sıra sürecin gerçekçiliğini artırmak için verilen görevlerde bütçe ve zaman kısıtları bulunmaktadır. Kod gözden geçirmenin önemini daha iyi vurgulamak adına kod derleme ve test gibi yan unsurlara da projede yer verilmiştir. Bilgisayar mühendisliği öğrencileri ile yürütülen çalışmada, katılımcılar kendilerini bir ofis ortamında hissettiklerini ve verilen görevleri yerine getirirken eğlendiklerini belirtmişlerdir. Projeden senaryolarla gerçekleştirilen kullanılabilirlik testleri ve katılımcıların görüşleri doğrultusunda sorunlar tespit edilmiş ve bu kısımlarda iyileştirme yoluna gidilmiştir.</p>
      </abstract>
      <kwd-group>
        <kwd>Anahtar Kelimeler - Oyunlaştırma</kwd>
        <kwd>eğitim simülasyonu</kwd>
        <kwd>kod gözden geçirme</kwd>
        <kwd>kod derleme</kwd>
        <kwd>yazılım testleri</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>[1]. Ayrıca kod gözden geçirme para ve zamandan tasarruf sağlar. Örneğin IBM,
20.000 satırlık bir programda test fazı yerine kod gözden geçirmede ana hataları
bularak %85’ten fazla programcı eforu kazanmıştır [2].</p>
      <p>HAVELSAN gibi savunma sektöründe faaliyet gösteren firmalarda özellikle görev
kritik yazılımlarda kod gözden geçirme işlemi oldukça hassas bir şekilde
uygulanmaktadır. Ancak yeni gelen takım elemanları bu işlemi tam olarak bilmediklerinden
eğitimleri hem zaman kaybettirir hem de tecrübeli elemanların üretkenliğini olumsuz
etkiler. Bu projeyle eğitim maliyeti ve zamanından tasarruf hedeflenmektedir.</p>
      <p>Eğitici simülasyon örneklerinden olan SESAM [3], SimSE [4] ve SimVBSE [5],
oyun tabanlı yazılım geliştirme süreci simülasyonlarıdır. Amaçları, katılımcılara sanal
bir yazılım projesi sağlayarak katılımcıların duruma uygun kararlar almalarını
öğretmektir. Katılımcılar personel işe alma, işten çıkarma, gerekli malzemeleri satın alma
gibi bazı yetkilere sahiptir ve bu oyunlarla daha etkili proje yönetimi öğrenilebilir.</p>
      <p>Literatürde bu bildirideki simülasyona en çok benzeyen çalışma Anukarna [6].’dır.
Anukarna, kod gözden geçirmede pratik karar vermeyi öğreten bir yazılım
mühendisliği simülasyonudur. Oyunda proje yöneticisi olacak kullanıcının sorularla kod gözden
geçirmede uygulanacak 12 doğru yöntemi öğrenmesi amaçlanmaktadır. Anukarna
daha çok proje yönetimi alanında sorularla teorik eğitim verirken, bildiride bahsedilen
proje kod gözden geçirmeye odaklanmakta ve 3B ofis ortamında uygulamalı eğitim
sağlamaktadır. Bildirinin 2. bölümünde eğitim simülasyonunun bölümleri anlatılmış,
3. bölümünde ise sonuçlardan bahsedilmiştir. Bildiri, özet bölümüyle sonlanmaktadır.
2</p>
      <p>Simülasyon Bölümleri</p>
      <p>Bu simülasyon kod gözden geçirme sürecini sanal bir ofis ortamında (Şekil 1’de
görülebilir), gerçek bir yazılım projesi üzerinde çalışılıyor hissi vererek öğretmeyi
amaçlamaktadır.</p>
      <p>Şekil 1: Ofis ortamı</p>
      <p>Bunun için kod gözden geçirmenin yanı sıra kod derleme ve maymun testi işlemleri
de projeye dâhil edilmiştir. Maymun testi, programa verilen rastgele girdilerle
programın davranışını gözlemlemeye yarayan bir test uygulamasıdır.</p>
      <p>Gerçekçiliği artırmak için kullanıcıya başlangıç bütçesi ve zamanı verilmiştir. Şekil
1’deki örnekte sol üstte kalan zaman 30 gün ve bütçe 1000$ olarak belirlenmiştir. Her
30 saniyede bir kalan zaman 1 gün azalacaktır. Oyunda alınan yanlış kararlar ve
harcanan zaman bütçeyi azaltırken, personelden bilgi almak (Şekil 2’de görülebilir) ve
oyunun sonundaki soruları doğru yanıtlamak bütçeyi artırır. Oyunun her aşamasında
personelden bilgi alınıp kod gözden geçirmeyle ilgili bilgiler elde edilebilir.</p>
      <p>Şekil 2: Personelden bilgi alınması
Aşağıda, personelden alınabilecek iki bilgi örneği verilmiştir:
1.
2.</p>
      <p>Kontrol listesi (checklist) kullanımı hem yazarı hem de gözden geçiren kişiyi
önemli derecede geliştirmektedir [6].</p>
      <p>Kod gözden geçirme süresi 60 ila 90 dakika olmalıdır [1].</p>
      <p>Ofiste yapılacak görevler için renklerle ayrılan farklı alanlar belirlenmiştir. Şekil
1’de yeşil alan kod seçim, kırmızı alan kod derleme, mavi alansa test alanıdır.
Katılımcı, verilen göreve uygun yere yön tuşlarıyla gidebilir. Şekil 1’de sağ üstteki
ilerleme çemberinden simülasyonun aşaması ve yüzde kaçının tamamlandığı görülebilir.
Sağ alttaki not simgesine tıklanarak edinilen bilgiler not edilebilir ve notlar
simülasyonun sonunda katılımcıların soruları cevaplamasına yardımcı olabilir.</p>
    </sec>
    <sec id="sec-2">
      <title>2.1 Kod Gözden Geçirme</title>
      <p>Bu aşamaya geçmeden önce kullanıcı yeşil alanda kod seçimi yapmalıdır. Yapılan
çalışmada hali hazırda yalnızca tek bir kod parçası bulunmaktadır. Bu kod C#
programlama dilinde yazılmış basit bir hesap makinesi kodudur.</p>
      <p>Kod seçiminin ardından katılımcıdan sarı alana (kod gözden geçirme) gitmesi
istenir. Sarı alandaki bilgisayara tıklayınca gelen ekran Şekil 3’teki gibidir. Katılımcı
kodu gözden geçirir ve tespit ettiği hata satırlarını metin alanına birer birer girer.
Girilen satırda hata varsa düzeltildi mesajı gösterilir ve o satır sistem tarafından düzeltilir,
hata yoksa bütçeden 50$ düşülür. Örneğin 85. satırda bir hata varsa ve katılımcı bunu
tespit ederse satır hatalı olmaktan çıkar ve ilerleyen aşamalara bu düzeltme yansır
ancak hata yoksa kullanıcının bütçesinden para eksilir. Satır numarası yazılınca
otomatik düzeltilen hataların katılımcılar tarafından düzeltilmesi planlanan çalışmalar
arasındadır. Çoktan seçmeli bir soruyla katılımcıya hatalı satırı hangi kod satırıyla
değiştirmek istediği sorulacaktır. Kodda derleyici, mantık ve çalışma zamanı hatası
kategorilerinde toplamda altı adet hata bulunmaktadır.</p>
      <p>Şekil 3: Kod gözden geçirme ekranı</p>
    </sec>
    <sec id="sec-3">
      <title>2.2 Kodu Derleme</title>
      <p>
        Bu aşama, katılımcının asgari düzeyde kod gözden geçirme işlemini tamamlamış
olmasını bir derleyici gibi kontrol eder. Kod derleme kısmından bir sonraki aşama
olan test aşamasına ancak kod gözden geçirmede tüm derleyici hataları düzeltildiğinde
geçilebilecektir. Kod gözden geçirmede düzeltilmeyen de
        <xref ref-type="bibr" rid="ref8">rleyici hataları Visual Studio
2015</xref>
        ’ten alınan hata mesajlarıyla gösterilmektedir. Bu hataları düzeltmek için
katılımcı tekrar kodu gözden geçirmek zorunda kalacaktır. Kod gözden geçirme düzgün
yapılmadığında katılımcı zaman kaybedecek, bu da sonuca olumsuz yansıyacaktır.
2.3 Test
      </p>
      <p>Test bölümünde ilk aşamadaki koda uygun bir kullanıcı arayüzü ile çalışılır. İki
farklı sayı ve işlem seçiminden oluşan arayüz, kod gözden geçirmede düzeltilmeyen
hatalarla işlemi gerçekleştirecektir. Örneğin Şekil 4’te de görülebileceği gibi bir
mantık hatasının düzeltilmemesi “5*2” işlemini “2,5” olarak sonuçlandırmıştır. Bu hata
testte fark edilmesi zor ancak kod gözden geçirmede kolaylıkla bulunabilecek türden
bir hatadır çünkü yalnızca ilk sayının 5 olması durumunda testte tespit edilebilir.
Şekil 4: Hatalı işlem yapan test ekranı</p>
      <p>Bu aşamada katılımcıdan hatalı olan özellikleri tespit ettikten sonra bu özelliklerin
istenilen şekilde çalışması için tekrar kod gözden geçirme alanına gidip kodu daha
dikkatli bir şekilde değerlendirerek hataları gidermesi beklenir. Yukarıda bahsedilen
mantık hatası düzeltildikten sonra aynı işlemin sonucu “10” olacaktır.</p>
      <p>Testte de derleme aşamasında olduğu gibi gözden geçirmenin yeterince iyi
olmaması zaman kaybettirdiğinden, katılımcının performansı olumsuz etkilenecektir.
Hatanın erken fazlarda bulunmasının çok daha az maliyeti olacağının altı çizilmek istendiği
için iki aşamada da kullanıcı kod gözden geçirme işlemini tekrarlar.
2.4 Quiz</p>
      <p>Simülasyonun sonunda 5 adet çoktan seçmeli soruyla katılımcının kazanımları
ölçülecektir. Her yanlış cevap bütçeden 20$ götürürken doğru cevaplar bütçeyi 20$
artırmaktadır. Aşağıda sistemimizdeki sorulardan iki örnek verilmiştir:
1.</p>
    </sec>
    <sec id="sec-4">
      <title>2.5 Puanlama</title>
      <p>Simülasyonun sonunda katılımcıya düzeltemediği hataların ve kalan bütçenin
bilgisi verilmiştir. Katılımcı hangi bölümlerde bütçeden ne kadar para düşüldüğünün ve
eklendiğinin bilgisine de erişebilecek, böylece hangi alanlarda kendisini geliştirmesi
gerektiği konusunda fikir sahibi olabilecektir.</p>
    </sec>
    <sec id="sec-5">
      <title>2.6 Yönetici Paneli</title>
      <p>Simülasyonda ayrıcalıklı kullanıcıların olması yetkili kişilerin sisteme bilgi ve soru
ekleyip sistemden çıkarabilmesi amacını taşımaktadır. Sisteme kullanıcı adı ve şifreyle
giriş yapan yöneticiler gerekli kısımları doldurarak işlemlerini gerçekleştirebilirler.
Çalışma kapsamında, bilgisayar mühendisliği öğrencilerine simülasyon öncesinde
yapılan anketle, öğrencilerin kod gözden geçirme sürecini ve önemini tam olarak
bilmedikleri anlaşılmıştır. Ayrıca daha kullanıcı dostu bir program oluşturabilmek için
öğrencilere simülasyonda tamamlamaları istenen 12 görevden oluşan bir senaryo
verilmiştir. Katılımcılar bir görevi yapmakta zorlanırken, üç görevde daha az zorlanmış,
diğer görevleri kolaylıkla yapabilmişlerdir. Görevler sonrasında katılımcılara
memnuniyet anketi yapılmış, kullanımın genel olarak beğenildiği ancak bazı aşamalarda
zorlandıkları anlaşılmıştır. Öğrencilerin önerileriyle bu noktalar iyileştirilmiştir.
4</p>
      <p>Özet</p>
      <p>Bu bildiride kod gözden geçirme sürecinin oyunlaştırılarak bir simülasyon
ortamında takıma yeni dâhil olan pratisyene kazandırılması ve bu sayede eğitim maliyeti
ve süresi azaltılırken eğlenerek öğreten bir uygulama anlatılmıştır.</p>
      <p>Katılımcılar bu simülasyonu tamamlarken eğlendiklerini ve ofis ortamını gerçekçi
bulduklarını da belirtmişlerdir. Literatürdeki örneklere göre üç boyutlu ortamla daha
gerçekçi ve eğlenceli bir eğitim sağlanmıştır. Katılımcının proje yöneticisi bakış
açısıyla değil, geliştirici açısından bakması sağlanıp kod gözden geçirmeye
odaklanılmıştır. Yalnızca çoktan seçmeli sorularla değil uygulamalarla eğitim daha interaktif bir
hale getirilmiştir. Ortamdaki karakterlerden alınan bilgiler ve simülasyon sonundaki
sorularla içerik zenginleştirilmiş, bilgilendirici yönü de artırılmıştır.</p>
      <p>Daha fazla senaryoyla kod gözden geçirmenin birçok pratiğinin katılımcılara daha
etkili bilgi ve soru sistemiyle sağlanması planlanan çalışmalar arasındadır.
Referanslar
1.
2.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>Hangisi kod gözden geçirmenin avantajlarından biri değildir [5]? a. Deneyimsiz geliştiricilerin eğitilmesini sağlar. b. Daha kaliteli kod yazılmasına yardımcı olur. c. Yazılımın tüm hatalardan arınmasını sağlar</article-title>
          .
          <source>d. Test süresini kısaltır.</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>Hangi aşamada hata bulmak en az maliyetlidir? a. Test b</article-title>
          .
          <article-title>Kod gözden geçirme c</article-title>
          .
          <source>Bakım d. Dağıtım</source>
          <volume>3</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>J.</given-names>
            <surname>Cohen</surname>
          </string-name>
          et al. , “Resistence to Code Review”,
          <source>in Best Kept Secrets of Peer Code Review, Canada: SmartBear Software</source>
          ,
          <year>2013</year>
          , p. 19
          <string-name>
            <given-names>S.</given-names>
            <surname>Bhosale</surname>
          </string-name>
          et al. , “
          <article-title>Achieving Code Quality using Code Review System”</article-title>
          ,
          <source>International Journal of Computer Applications</source>
          , p.
          <fpage>24</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Iste.</surname>
          </string-name>
          uni-stuttgart.de, “SESAM - Simulation System”,
          <year>2010</year>
          . [Online]. Available:http://www.iste.uni-stuttgart.de/en/seold/forschung/schwerpunkte/sesam/system.html.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [Accessed:
          <fpage>08</fpage>
          - Nov- 2015].
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>E.</given-names>
            <surname>Navarro</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Hoek</surname>
          </string-name>
          , “
          <source>Comprehensive Evaluation of an Educational Software Engineering Simulation Environment”, 20th Conference on Software Engineering Education &amp; Training (CSEET'07)</source>
          , pp.
          <fpage>195</fpage>
          -
          <lpage>201</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>Apurva</given-names>
            <surname>Jain</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Boehm</surname>
          </string-name>
          , “
          <article-title>SimVBSE: Developing a Game for Value-Based Software Engineerin”</article-title>
          ,
          <source>19th Conference on Software Engineering Education &amp; Training (CSEET'06)</source>
          , pp.
          <fpage>104</fpage>
          -
          <lpage>113</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>R.</given-names>
            <surname>Atal</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Sureka</surname>
          </string-name>
          . “Anukarna:
          <string-name>
            <given-names>A Software</given-names>
            <surname>Engineering</surname>
          </string-name>
          <article-title>Simulation Game for Teaching Practical Decision Making in Peer Code Review”</article-title>
          ,
          <source>1st International Workshop on Case Method for Computing Education (CMCE</source>
          <year>2015</year>
          ), pp.
          <volume>63</volume>
          ,
          <issue>70</issue>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>