<!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>Görme Engelli Yazılım Geliştiricilerin Yazılım Geliştirme Araçları Kullanırken Karşılaştıkları Problemler</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Çağdaş Evren Gerede</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>TOBB Ekonomi ve Teknoloji Üniversitesi</institution>
          ,
          <addr-line>Ankara</addr-line>
          ,
          <country>Türkiye Web sayfası:</country>
        </aff>
      </contrib-group>
      <fpage>582</fpage>
      <lpage>593</lpage>
      <abstract>
        <p>Özet. Yazılım geliştirme süreçleri sırasında kullanılan yazılım geliştirme araçlarının birçok özelliği maalesef görme engelli yazılım geliştiriciler tarafından kullanılamaz. Yazılım geliştirme araçlarının yeterli oranda erişilebilir olmaması görme engellilerin profesyonel olarak yazılımcı olmasının önünde önemli bir engel teşkil etmektedir. Diğer taraftan bu engeli aşabilen geliştirici sayısı az olduğu için de bu geliştiricilerin ihtiyaçlarının karşılanması önceliklendirilmemektedir. Erişilebilirlik sorunlarının neler olduğu anlaşılmadan bu engelleri kaldıracak yeni destek teknolojilerinin geliştirilmesi mümkün olamaz. Bu çalışmayla amacımız görme engelli geliştiricilerin yazılım geliştirme araçları kullanırken karşılaştıkları sorunların neler olduğunu incelemektir. Anahtar Kelimeler: Yazılım geliştirme araçları, Erişilebilirlik, Görme engelli yazılım geliştiriciler</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>? Başlıca yazar
TOBB University of Economics and Technology, Ankara, Turkey</p>
      <p>Web page: http://cegerede.etu.edu.tr
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giriş</title>
      <p>
        Yazılım geliştirme süreçleri sırasında yazılımcılar tarafından sıkça kullanılan
yazılım geliştirme araçlarına örnek olarak şunlar sayılabilir: kaynak kodların
incelendiği ve yazıldığı Eclipse, NetBeans, IntelliJ benzeri entegre yazılım geliştirme
ortamları (İng., integrated development environments, kısaca IDE); kaynak kod
değişim önerilerinin denetlendiği (İng. code review) Gerrit[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], Crucible[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
benzeri araçlar; kaynak kod dosyalarının değişim tarihçesinin incelenip kodun
evriminin incelenebildiği Git benzeri kod versiyon yönetim sistemleri. Bu tip araçların
birçok özelliği maalesef görme engelli yazılım geliştiriciler tarafından
kullanılamamaktadır. Görme engelli yazılım geliştiricilerin yazılım geliştirme araçlarını
kullanmada birçok erişilebilirlik (İng. accessibility) problemi ile karşılaştıkları
hem akademik çalışmalar ile gösterilmiş[
        <xref ref-type="bibr" rid="ref10 ref11 ref13 ref23">10, 11, 13, 23</xref>
        ] hem de bu problemlerin
görme engelli geliştiricilerin çalışma performansını oldukça negatif etkilediği görme
engelli yazılım geliştiriciler tarafından rapor edilmiştir[
        <xref ref-type="bibr" rid="ref5 ref8 ref9">5, 8, 9</xref>
        ].
      </p>
      <p>
        Örneğin, kaynak kod değişimi denetim araçlarında iki metin arasındaki değişimi
tespit etmek için yaygın olarak düzeltme mesafesi (İng. edit distance) temelli
metinsel “diff” algoritması [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] veya türevleri[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] kullanılmaktadır. Geleneksel
olarak bu algoritmanın ürettiği çıktı, kaynak kodun kıyaslanan iki versiyonu
üzerine yansıtılır ve aradaki değişimler renkler yardımıyla ifade edilir. Şekil 1’de
Gerrit[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] aracından alınmış bu tür bir kullanımı gösteren bir ekran görüntüsü
yer almaktadır.
? Primary author
Şekil 1. Gerrit[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] kod denetim aracı ekran görüntüsü - PatchSetInserter.java dosyasının
iki versiyonu arasındaki değişim farklı renk tonları kullanılarak gösterilmektedir.
Soldaki kırmızılar ve sağdaki açık yeşiller değişime uğrayan satırları; sağdaki koyu yeşiller
ise eklenen yeni karakterleri göstermektedir. Sağ ekranda sarı arkafonlu kutuda iki
yazılım geliştirici arasındaki kodun değişimi üzerinde yapılan tartışmaya dair mesaj
dizisi de görülmektedir.
      </p>
      <p>Burada solda “PatchSetInserter.java” adlı kaynak dosyasının eski hali, sağda
ise yeni hali gösterilmektedir. Sol tarafta açık kırmızı ile sağ tarafta ise açık yeşil
ile boyanan satırlar değişime uğramış satırları belirtmektedir. Sağ tarafta koyu
yeşil ile boyalı karakterler ise yeni versiyonda eklenmiş karakterleri
vurgulamaktadır. Bu tür bir gösterim büyük bir kaynak kod dosyasında meydana gelen kısıtlı
değişikliklerin nerelerde gerçekleştiğinin hızlıca farkedilmesini ve değişimin
etkilerinin anlamlandırılmasını hızlandırmaktadır. Fakat yazılım geliştirici görme
engelliyse bu tür bir gösterim geliştiriciye beklenilen faydayı sağlayamaz.</p>
      <p>
        Yazılım geliştirme araçlarının yeterli oranda erişilebilir olmaması görme
engellilerin profesyonel olarak yazılımcı olmasının önünde önemli bir bariyer teşkil
etmekte, diğer taraftan bu bariyeri aşabilen geliştirici sayısı az olduğu için de bu
geliştiricilerin erişilebilirlik ihtiyaçlarının karşılanması endüstri tarafından
önceliklendirilmemektedir[
        <xref ref-type="bibr" rid="ref5 ref8 ref9">5, 8, 9</xref>
        ].
      </p>
      <p>Erişilebilirlik engellerinin neler olduğu anlaşılmadan bu engelleri ortadan
kaldıracak yeni destek teknolojilerinin geliştirilmesi ve yazılım geliştirme araçlarına
entegre edilmesi mümkün olamayacaktır. Bu hedefe yönelik olarak, bu
bildirideki amacımız görme engelli geliştiricilerin yazılım geliştirme faaliyetlerini ve
kullandıkları güncel yazılım geliştirme araçlarını inceleyerek, bu geliştiricilerin
yazılım geliştirme faaliyetleri sırasında karşılaştıkları erişilebilirlik problemlerini
rapor etmektir.
2
2.1</p>
      <p>Görme Engelli Yazılımcıların Kod Geliştirme Süreci</p>
      <sec id="sec-2-1">
        <title>Kaynak Kodun Okunması</title>
        <p>
          Kod geliştiricilerin kod geliştirme süreçleri sırasında gerçekleştirdiği iki temel
faaliyet bulunmaktadır. Birinci faaliyet bir kod bloğunun işlevini anlamaktır.
Görme engeli olmayan geliştirici bu faaliyeti kod metnini programın kontrol akışı
yönünde satır satır okuyarak yapar. Görme engelli bir geliştirici aynı adımı iki tür
temel araç kullanarak yapabilir[
          <xref ref-type="bibr" rid="ref5 ref8 ref9">5, 8, 9</xref>
          ]. Birinci tür araç JAWS[
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] veya NVDA[
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]
benzeri bir ekran okuyucu yazılımdır (İng. screen reader). Bu tür bir yazılım
ekrandaki metinleri konuşmaya çevirerek kullanıcıya seslendirir. Görme engelli
yazılım geliştirici seslendirilen metni dinler ve kodun bir modelini zihninde
oluşturmaya çalışır. Ekran okuyucular metinleri değişik hızlarda
seslendirebilmektedir. Ekrandaki metne karşılık gelen sentetik konuşmanın üretilmesi sırasında
kullanılacak birim eleman olarak harfler, heceler veya kelimeler seçilebilmektedir
        </p>
        <p>Kaynak kod metnine ulaşmakta kullanılabilecek ikinci tür araç ise
kabartmalı ekran cihazıdır (İng. braille display) (Bakınız Şekil 2). Bilgisayara bağlanan
bu mekanik araç vasıtasıyla ekrandaki metinler bir levhaya kabartmalı fiziksel
şekiller olarak yansıtılır. Böylece geliştirici kabartmalara dokunarak kod metnine
ulaşmış olur.
Şekil 2. Klavyenin altında iğneli bir levha olarak kabartmalı ekran cihazi (İng. braille
display) görülmektedir2.</p>
        <p>Kabartmalı ekranlar herhangi bir anda tipik olarak 40 ila 80 arası karakteri
kabartabilmektedir. Kullanıcı ekranda imleci hareket ettirdikçe mekanik
kabartmalar otomatik olarak yenilenir. Kabartmalı ekranlar, kabartmalı etiketli tuşlara
sahip bir klavyenin yanında konumlandırılır ve eş zamanlı olarak kod yazma
işlemi bu klavye vasıtasıyla yapılır. Kabartmalı ekran cihazlarının ekran
okuyuculara göre farkı duyu hissi yerine dokunma hissini kullandırmasıdır.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Kaynak Kodun Yazılması</title>
        <p>Kod yazma işlemi sırasında görme engelli geliştiriciler kabartmalı tuşlar içeren
bir klavye kullanarak kod yazımı yapabilirler. Eş zamanlı olarak yazdıkları
metnin doğruluğunu ekran okuyucu veya kabartmalı ekran cihazı kullanarak teyit
edebilir.
2 Kaynak: https://goo.gl/kMV4z8</p>
        <p>Kaynak Kod Geliştirme Araçlarında Görme Engelli
Kullanıcıların Karşılaştıkları Problemler</p>
      </sec>
      <sec id="sec-2-3">
        <title>Görsel Etkileşim Tekniklerinin Kullanımının Yol Açtığı</title>
      </sec>
      <sec id="sec-2-4">
        <title>Sorunlar</title>
        <p>
          Kod geliştirme araçlarında bazı fonksiyonlar yalnızca “pencereler, simgeler, menüler,
işaretçiler”, kısaca PSMİ (İng. “windows, icons, menus, pointer”, kısaca WIMP[
          <xref ref-type="bibr" rid="ref17">17</xref>
          ])
etkileşimi düşünülerek tasarlanmıştır [
          <xref ref-type="bibr" rid="ref12 ref24 ref25">12, 24, 25</xref>
          ]. Bu da kullanıcının imleci
ekrandaki görüntünün belirli bir koordinatına götürmesini gerektirir. Görme engelli
kullanıcının bu işlemi yapması oldukça zordur. Genelde fare kullanımına
alternatif olarak erişilebilirliğin arttırılması amacıyla aynı fonksiyonlar için klayve
kısayolları da sağlanır. Fakat zaman zaman bu tür kısayolların eklenilmesi
unutulmaktadır[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Bazen de kullanıcılar görsel diyaloglar üzerinden daha karmaşık
bir etkileşim yürütmek durumunda kalırlar. Bu durumlar için tek bir klavye
kısayolu tanımlamak imkansız hale gelmektedir. Örneğin, Şekil 3’de Sublime
Text adlı editörün sağladığı otomatik tamamlama (İng. auto-completion) ekranı
görülmektedir.
        </p>
        <p>Şekil 3. Sublime Text Auto-completion Ekranı3.</p>
        <p>Bu ekranın başlatılması bir klavye kısa yolu arkasına konulabilir. Fakat görme
engelli geliştiricinin kullandığı ekran okuyucu yazılım veya kabartmalı ekran
cihazı vasıtasıyla diyalogta gösterilen tamamlama önerilerinin neler olduğunu
anlaması ve bunlardan uygun olanı seçmesi oldukça yorucu hale gelmektedir. Her
liste elemanı birden fazla metin gurubundan oluşur. Bu örnekte sağdaki metin
gurubu “httpser” adlı değişkenin veri tipini, soldaki metin gurubu ise önerilen
metni göstermektedir. Dolayısıyla diyalog oldukça fazla sayıda metin
içermektedir. Editörde her yeni karakter yazımı ile beraber öneri listesinin otomatik olarak
güncelleniyor olması bu etkileşimi daha da yorucu hale getirir. Sonuç olarak bir
fonksiyon bu şekilde bir diyalog ile sunulduğunda, her ara etkileşim erişilebilir
3 Kaynak: https://goo.gl/RHBXQo
olsa dahi, tüm etkileşim görme engelliler tarafından etkin olarak
gerçekleştirilemediğinden, bu fonksiyon erişilemez hale gelmektedir.
Geleneksel olarak kaynak kodlar yazılırken geliştiriciler tarafından girintiler (İng.
indentation) kodun hiyerarşik yapısının daha rahat anlaşılması amacıyla sıkça
kullanılmaktadır. Örnek Kod 2.1 bu şekilde bir kullanımı göstermektedir.
public c l a s s B i n a r y S e a r c h {
public i n t f i n d ( f i n a l i n t [ ] data , f i n a l i n t key ) {
i n t low = 0 , h i g h = data . l e n g t h 1 ;
while ( low &lt;= h i g h ) {
f i n a l i n t i = ( low + h i g h ) &gt;&gt; 1 ;
f i n a l i n t v = data [ i ] ;
i f ( v == key ) return i ;
e l s e i f ( v &lt; key ) low = i + 1 ;
e l s e // v &gt; k e y</p>
        <p>h i g h = i 1 ;
}
return</p>
        <p>1;
}
} // end o f c l a s s
Örnek Kod 2.1. Girintilerin ve boşlukların kodun anlaşılırlığını arttırmak için
kullanımı5</p>
        <p>Örneğin altıncı ile on ikinci satırlar arasındaki kod bloğunun beşinci satırdaki
“while” ifadesi tarafından kapsandığı kolaylıkla görülebilmektedir; çünkü altıncı
ve on ikinci satırlar beşinci satıra göre daha sağda konumlandırılmıştır. Bu tür
bir görsel gösterim sayesinde, örneğin, şu kanıya çok hızlı bir şekilde varılabilir:
Program, beşinci satırdaki şart sağlanmadığında dokuzuncu satıra uğrayamaz.
Maalasef bu yöntem görme engelli geliştiriciler için aynı faydalı etkiyi yaratamaz
çünkü bu geliştiricilerin kullanabildikleri metne ulaşma mekanizmaları (ekran
okuyucu ve kabartmalı ekran cihazı) metnin görsel konumlandırmasını
geliştiriciye aynı biçimde aktaramaz (Bakınız Tablo 1).</p>
        <p>
          Girinti kullanımına ek olarak programda kullanılan andaçlar (İng. token)
arasında anlaşılırlığı arttırmaya yönelik boşluk kullanımı da oldukça yaygındır.
Örneğin, yedinci satırda “v = data[i]” ifadesinde “v”, “=” ve “data[i]” arasında
birer boşluk bırakılmıştır. Fakat görme engelli kullanıcı bu metne ekran okuyucu
ile ulaştığında boşluk karakteri metni anlamada kullanıcıya ek kognitif yük
getirmektedir (Şöyle bir seslendirme yapılır: “ve boşluk eşittir boşluk data köşeli
parentez aç i köşeli parentez kapa”). Bunu önlemek için boşluk karakterlerinin
5 Kaynak kod Emma[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] adlı projedeki bir kaynak kod dosyasından uyarlanmıştır
Tablo 1. Örnek Kod 2.1’deki metnin görme engelli geliştirici tarafından ulaşıldığındaki
hali
public boşluk class boşluk binary search boşluk dalgalı parentez aç yeni satır boşluk boşluk boşluk
boşluk public boşluk int boşluk find boşluk aç parentez final boşluk int köşeli parentez aç köşeli
parentez kapa boşluk data, boşluk final boşluk int boşluk keykapa parentez boşluk dalgalı parentez
aç yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk int boşluk low boşluk eşittir
boşluk sıfır virgül boşluk high boşluk eşittir boşluk data nokta length boşluk eksi boşluk bir noktalı
virgül yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk yeni satır boşluk boşluk
boşluk boşluk boşluk boşluk boşluk boşluk while boşluk aç parentez low boşluk küçüktür eşittir
boşluk highkapa parentez boşluk dalgalı parentez aç yeni satır boşluk boşluk boşluk boşluk boşluk
boşluk boşluk boşluk boşluk boşluk boşluk boşluk final boşluk int boşluk i boşluk eşittir boşluk aç
parentez low boşluk artı boşluk high kapa parentez boşluk büyüktür büyüktür boşluk bir noktalı
virgül yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk
boşluk final boşluk int boşluk ve boşluk eşittir boşluk data köşeli parentez aç i köşeli parentez kapa
noktalı virgül yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk
boşluk boşluk yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk
boşluk boşluk if boşluk aç parentez ve boşluk eşittir eşittir boşluk key boşluk return boşluk i noktalı
virgül yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk
boşluk else boşluk if boşluk aç parentez ve boşluk küçüktür boşluk keykapa parentez boşluk low
boşluk eşittir boşluk i boşluk artı boşluk bir noktalı virgül yeni satır boşluk boşluk boşluk boşluk
boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk else boşluk slaş slaş boşluk ve boşluk
büyüktür boşluk key yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk
boşluk boşluk boşluk boşluk boşluk high boşluk eşittir boşluk i boşluk eksi boşluk bir noktalı virgül
yeni satır boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk dalgalı parentez kapa yeni satır
boşluk boşluk boşluk boşluk boşluk boşluk boşluk boşluk yeni satır boşluk boşluk boşluk boşluk
boşluk boşluk boşluk boşluk return boşluk eksi bir noktalı virgül yeni satır boşluk boşluk boşluk
boşluk dalgalı parentez kapa yeni satır dalgalı parentez kapa boşluk slaş slaş boşluk end boşluk of
boşluk class
ekran okuyucu tarafından görmezden gelinmesi istenebilir (Bu defa şöyle bir
seslendirme yapılır: “ve eşittir data köşeli parentez aç i köşeli parentez kapa”).
Fakat bu durumda da boşluk kullanımı konusunda takım geleneğine aykırı yapılan
hatalar geliştirici tarafından tespit edilemez. Örneğin, kodda “v” ile “=” arasında
yanlışlıkla boşluk bırakılmadıysa veya iki boşluk karakteri bırakıldıysa, bu
durum görme engelli geliştirici tarafından tespit edilemez.
        </p>
        <p>Bir başka ilginç durum ise on birinci satırda gözlemlenmektedir. Bu satırın
sonunda “else” ifadesine hangi durumda ulaşılacağını açıklayan bir yorum ifadesi
bulunmaktadır. Görsel olarak bu tür bir yorum ifadesini satırın geri kalanından
ayırmak çok fazla efor gerektirmez çünkü konum olarak yorum ifadesi satırın en
sağında bulunmaktadır. Fakat aynı durum görme engelli bir kullanıcı için geçerli
değildir çünkü bu kullanıcıya ulaşan metin görsel konum özelliklerini kaybeder
(Bakınız Tablo 1).</p>
        <p>Sonuç olarak sıradan bir ekran okuyucu veya kabartmalı ekran cihazı
kullanıldığında kod metninin hiyerarşik yapısının, kod parçaları arasındaki
ilişkilerin ve program akışının anlaşılması, engelsiz bir geliştiriciye kıyasla, daha fazla
zaman ve daha yoğun bir konsantrasyon gerektirir.
3.3</p>
        <p>Kısıtlı Bağlam
Kaynak kodlar üzerinde çalışan görme engelli bir geliştiricinin karşılaştığı bir
diğer zorluk ise kullandıkları metne ulaşma araçlarının birim zamanda çok kısıtlı
bir bağlam bilgisini sağlıyor olmasıdır. Örnek Kod 2.2’de görüldüğü üzere dokuzuncu
satırı inceleyen geliştirici bu satırın yazılıma olan etkisini anlamak için “v”, “k”,
ve “i” değişkenlerinin nerede tanımlandıklarını, tanımlandıkları yerde olan ilgili
yorumları, değişkenlerin veri tiplerinin ne olduklarını, dönülen “i” değişkeninin
daha önce nerede hesaplandığını incelemeye ihtiyaç duyabilir. Dolayısıyla
yalnızca bu satırın metin olarak ne içerdiğini bilmek satırın program üzerindeki
etkilerini anlamaya yetmemektedir.
Örnek Kod 2.2. Ekran okuyucu ve kabartmalı ekran cihazı ile görme engelli bir
geliştirici herhangi bir anda kod hakkında çok daha kısıtlı bir bağlam bilgisine
ulaşabilmektedir. Bu deneyimi görsellemek için Örnek Kod 2.1’deki dokuzuncu satır hariç
diğer satırlar gizlenmiştir.
3.4</p>
      </sec>
      <sec id="sec-2-5">
        <title>Kodun Hiyerarşik Yapısı Üzerinde Gezinmek</title>
        <p>Bir kaynak kod dosyasının içeriği düz bir metin olarak görülebilir. Fakat aslında
dilin dil bilgisi kuralları (İng. grammar) düşünüldüğünde, aslında kod metni
hiyerarşik bir yapıyı tanımlar. Şekil 4’de bu hiyerarşik yapı gösterilmiştir.</p>
        <p>Geliştirici program kodunu anlamak için koddaki satırlar arasında ardışık
olarak gezinmek yerine kodun hiyerarşik yapısı üzerinde gezinmek isteyebilir.
Örneğin, Örnek Kod 2.1’de beşinci satırdaki döngü başlangıcını inceleyen geliştirici
döngü içerisindeki ifadeleri incelemeye devam edebilir veya döngü detayları
yerine bir sonraki kod bloğunun yer aldığı on beşinci satıra göz atmak isteyebilir.
Fakat sıradan ekran okuyucular ve kabartmalı ekran cihazları bu tür bir rastgele
erişime (İng. random access) olanak sağlayamazlar.
method find
...</p>
        <p>while(low
high) (Satır 5)</p>
        <p>return (Satır 15)
... if-statement (Satır 9) else-statement (Satır 10) -1
assign return</p>
        <p>if-statement ...
v
key
i
&lt;</p>
        <p>statement
v
key
low
statement</p>
        <p>+
Şekil 4. Örnek Kod 2.1’de yer alan kodun hiyerarşik yapısı (Burada derleyicinin inşa
edeceği soyut sözdizimi ağacının basitleştirilmiş hali resmedilmiştir).
3.5</p>
      </sec>
      <sec id="sec-2-6">
        <title>Görsel Geri Bildirimler</title>
        <p>Kod yazım araçları kod yazımı sırasında geliştiriciye sık sık görsel geri bildirimde
bulunur. Örneğin Şekil 5’de Eclipse kod geliştirme aracı editöründe kodda yapılan
bir hata sonucu ortaya çıkan görsel geri bildirimler görülmektedir.
Şekil 5. Eclipse kod geliştirme aracı editöründe kodda yapılan bir hata sonucu ortaya
çıkan geri bildirimler görülmektedir7.</p>
        <p>Ekranın sol ve sağ bölümünde hatalı satır işaretlenmiş, hatayı içeren andaç
ise altı kırmızı bir çizgiyle çizilerek gösterilmiştir. Buradaki görseller kullanıcının
talebi üzerine değil, kullanıcının metni değiştirmesine tepki olarak olarak
ortaya çıkarlar. Ayrıca ekranda kod metni ve bu metin ile ilgili geri
bildirimler iki farklı görsel kanal aracılığıyla geliştiriciye sunulmaktadır. Görme engelli
7 Kaynak: https://goo.gl/dq9spp
geliştirici ekran okuyucu yazılımlar ve kabartmalı ekran cihazları vasıtasıyla kod
metnine ulaşırken tek bir kanala sahiptir. Dolayısıyla metin ve metne ait geri
bildirimler aynı kanal üzerinden sunulmak durumundadır. Bu harmanlamayı
geliştirme aracı yapar. Bu harmanlama doğru biçimde yapılmadığında görme
engelli geliştiricinin kafasını karıştıran bir deneyim ortaya çıkmaktadır.
4</p>
        <p>
          İlgili Çalışmalar
Görme engelli yazılım geliştiricilerin yazılım geliştirme sırasında karşılaştıkları
engellerin neler olduğu ile ilgili güncel bazı çalışmalar mevcuttur[
          <xref ref-type="bibr" rid="ref10 ref11 ref19 ref23">10, 11, 19, 23</xref>
          ].
Mealin vd.[
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] sekiz görme engelli geliştirici ile mülakatlar yapıp kod geliştirme
süreçlerinde yaşadıkları problemleri anlamaya çalışmış, sonuç olarak
geliştiricilerin var olan IDE’leri kullanmadıklarını rapor etmiş, fakat bunun nedenlerini
detaylı olarak incelememiştir. Albusays vd. [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] 69 görme engelli geliştirici ile
bir anket çalışması yapmıştır. Anket sonucunda geliştiricilerin IDE’lerin yerine
metin editörleri kullandıkları, büyük kodlar üzerinden gezinme konusunda
problem yaşadıkları, UML gibi kod yapısını anlatan görsel diyagramları çizmekte veya
anlamakta zorluk çektikleri, hata ayıklama (İng. debugging) araçlarını
kullanamadıkları rapor edilmiştir. Armaly vd. [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] görme engelli geliştiricilerin bir
programın ne yaptığını anlamaya çalışırken (İng. program comprehension) engelsiz
geliştiricilere göre farklı yöntemler izleyip izlemediğini araştırmıştır. Bunun için
dört kör geliştiriciye programlama görevleri verilmiş ve geliştiriciler bu görevleri
gerçekleştirirlerken ekran imleci (İng. cursor) ile kod üzerinde daha çok nereleri
gezdikleri incelenmiştir. Sonuç olarak geliştiricilerin diğer kod bölgelerine kıyasla
en çok metod imzalarını (İng. method signatures) ziyaret ettikleri ve bu ziyaret
zamanının tüm görev zamanının %25’ini oluşturduğu gözlemlenmiştir. Stefik
vd. [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] görme engelli orta okul ve lise öğrencilerine programlama öğretmek için
gerekli teknolojileri üretmek için üç yıllık bir araştırma projesi yürütmüşler.
Proje sonunda Hop adında bir programlama dili ile Sodbeans adında işitsel bir
programlama ortamı üretmişlerdir.
        </p>
        <p>
          Görme engelli geliştiricinin, kaynak kodların hiyerarşik yapısı üzerinde
gezinmesini sağlayacak bazı teknikler Smith vd. [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] ile Baker vd. [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] tarafından
önerilmiştir. İlk çalışmada görsel olmayan bir editör geliştirilmiştir. Burada
kaynak kod bir ağaç şeklinde geliştiriciye sunulur ve kullanıcı ağaç üzerinde çeşitli
klavye komutları ile gezip kod parçalarını sorgulayabilir. İkinci çalışmada Eclipse
aracı içerisine kod metni ile eş zamanlı olarak görsellenen ve koda karşılık gelen
bir soyut sözdizimi ağacının yeraldığı bir pencere yerleştirilmiştir. Bu ek pencere
ile kullanıcı ağaç üzerinde gezebilir ve bu sırada otomatik olarak kaynak kod
metni ağaçta ziyaret edilen düğüme göre güncellenir.
        </p>
        <p>
          Görme engelli yazılım geliştiricilerin kaynak kodların yapısını daha kolay
anlamalarına yönelik olarak, kodun melodilerle ve seslerle nasıl temsil edilebileceği
üzerine bazı ön çalışmalar yapılmış ve umut verici sonuçlar elde edilmiştir [
          <xref ref-type="bibr" rid="ref15 ref18 ref22">15,
18, 22</xref>
          ]. Fakat henüz bu çalışmalar pratik araçlara dönüşememiştir.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Sonuçlar ve Gelecek Çalışmalar</title>
      <p>Bu çalışmada görme engelli yazılım geliştiricilerinin günümüz yazılım geliştirme
araçlarını kullanırken karşılaştıkları fakat literatürde detaylı incelenmemiş
engellerin neler olduğunu inceledik. Bu engellerin neler olduğunun anlaşılmasının bu
engelleri ortadan kaldıracak yeni araştırmalara faydalı bir girdi olacağını
umuyoruz. Yazılım geliştirme araçlarındaki erişilebilirlik problemleri giderildiğinde
yazılım geliştirmeye meraklı görme engelli bireylerin geliştirme faaliyetlerini
etkili yapabilmelerinin önündeki önemli bir bariyer ortadan kalkacaktır. Gelecekte
çalışmalarımızda bildirdiğimiz erişim problemlerinden bir bölümüne çözüm
üretmeyi hedeflemekteyiz. Üretilen çözümlerin hem görme engelli geliştiricilerin hem
de engelsiz geliştiricilerin ortaklaşa çalıştıkları araçlar içerisine entegre olacak
şekilde tasarlanması gerektiğine inanıyoruz. Bu yaklaşım ile görme engelli
kullanıcıların deneyimlerini iyileştirme amacıyla üretilecek kod geliştirme
teknolojilerinin engelsiz geliştiricilerin de işine yarayabileceğini ve bu alanda yapılacak
ilerlemelerin aslında tüm geliştiricilerin yazılım geliştirme süreçlerini
iyileştirebileceğini düşünüyoruz.</p>
      <p>Kaynakça</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Crucible</surname>
          </string-name>
          (jun
          <year>2017</year>
          ), https://www.atlassian.com/software/crucible
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Eclipse</surname>
          </string-name>
          bug
          <article-title>- forgotten keyboard shortcut for switching between pages (jun</article-title>
          <year>2017</year>
          ), https://bugs.eclipse.org/bugs/show_bug.
          <source>cgi?id=22004</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Emma</surname>
          </string-name>
          (jun
          <year>2017</year>
          ), http://emma.sourceforge.net
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Gerrit</surname>
          </string-name>
          (jun
          <year>2017</year>
          ), https://www.gerritcodereview.com/
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <article-title>How can you program if you are blind? (jun</article-title>
          <year>2017</year>
          ), https://stackoverflow.com/ questions/118984/how-can
          <article-title>-you-program-if-youre-blind</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Jaws</surname>
          </string-name>
          (jun
          <year>2017</year>
          ), http://www.freedomscientific.com/Products/Blindness/ JAWS
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Nvda</surname>
          </string-name>
          (jun
          <year>2017</year>
          ), https://www.nvaccess.org/
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. Tools of blind programmer (jun
          <year>2017</year>
          ), https://www.parhamdoustdar.com/
          <year>2016</year>
          / 04/03/tools-of-blind-programmer
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <article-title>9. A vision of coding, without opening your eyes</article-title>
          (jun
          <year>2017</year>
          ), https://medium. freecodecamp.
          <article-title>com/looking-back-to-what-started-it-all-731ef5424aec</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Albusays</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ludi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Eliciting programming challenges faced by developers with visual impairments: Exploratory study</article-title>
          .
          <source>In: Proceedings of the 9th International Workshop on Cooperative and Human Aspects of Software Engineering</source>
          . pp.
          <fpage>82</fpage>
          -
          <lpage>85</lpage>
          . CHASE '16,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2016</year>
          ), http://doi.acm.
          <source>org/10</source>
          . 1145/2897586.2897616
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Armaly</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McMillan</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>An empirical study of blindness and program comprehension</article-title>
          .
          <source>In: Proceedings of the 38th International Conference on Software Engineering Companion</source>
          . pp.
          <fpage>683</fpage>
          -
          <lpage>685</lpage>
          . ICSE '16,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2016</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/2889160.2891041
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Arnold</surname>
            ,
            <given-names>S.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mark</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goldthwaite</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Programming by voice, vocalprogramming</article-title>
          .
          <source>In: Proceedings of the Fourth International ACM Conference on Assistive Technologies</source>
          . pp.
          <fpage>149</fpage>
          -
          <lpage>155</lpage>
          . Assets '
          <volume>00</volume>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2000</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/354324.354362
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Baker</surname>
            ,
            <given-names>C.M.:</given-names>
          </string-name>
          <article-title>Increasing access to computer science for blind students</article-title>
          .
          <source>SIGACCESS Access. Comput. (117)</source>
          ,
          <fpage>19</fpage>
          -
          <lpage>22</lpage>
          (
          <year>Feb 2017</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/ 3051519.3051523
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Baker</surname>
            ,
            <given-names>C.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Milne</surname>
            ,
            <given-names>L.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ladner</surname>
            ,
            <given-names>R.E.</given-names>
          </string-name>
          :
          <article-title>Structjumper: A tool to help blind programmers navigate and understand the structure of code</article-title>
          .
          <source>In: Proceedings of the 33rd Annual ACM Conference on Human Factors in Computing Systems</source>
          . pp.
          <fpage>3043</fpage>
          -
          <lpage>3052</lpage>
          . CHI '15,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2015</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/ 2702123.2702589
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Berman</surname>
            ,
            <given-names>L.I.</given-names>
          </string-name>
          :
          <article-title>Program comprehension through sonification</article-title>
          .
          <source>Ph.D. thesis</source>
          , Durham University, England, UK (
          <year>2011</year>
          ), http://etheses.dur.ac.uk/1396/
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Canfora</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cerulo</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Penta</surname>
          </string-name>
          , M.D.:
          <article-title>Ldiff: An enhanced line differencing tool</article-title>
          .
          <source>In: 31st International Conference on Software Engineering, ICSE</source>
          <year>2009</year>
          , May 16-24,
          <year>2009</year>
          , Vancouver, Canada, Proceedings. pp.
          <fpage>595</fpage>
          -
          <lpage>598</lpage>
          (
          <year>2009</year>
          ), https://doi.org/10. 1109/ICSE.
          <year>2009</year>
          .5070564
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Dix</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Finlay</surname>
            ,
            <given-names>J.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Abowd</surname>
            ,
            <given-names>G.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beale</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Human-Computer Interaction (3rd Edition)</article-title>
          . Prentice-Hall, Inc., Upper Saddle River, NJ, USA (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Finlayson</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mellish</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Masthoff</surname>
          </string-name>
          , J.:
          <article-title>Fisheye views of java source code: An updated LOD algorithm</article-title>
          . In:
          <article-title>Universal Access in Human-Computer Interaction</article-title>
          . Applications and Services, 4th International Conference on Universal Access in Human-Computer Interaction,
          <article-title>UAHCI 2007 Held as Part of</article-title>
          HCI International 2007 Beijing, China,
          <source>July 22-27</source>
          ,
          <year>2007</year>
          Proceedings, Part III. pp.
          <fpage>289</fpage>
          -
          <lpage>298</lpage>
          (
          <year>2007</year>
          ), https://doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -73283-9_
          <fpage>33</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Mealin</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Murphy-Hill</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>An Exploratory Study of Blind Software Developers</article-title>
          .
          <source>In: 2012 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)</source>
          . pp.
          <fpage>71</fpage>
          -
          <lpage>74</lpage>
          . IEEE (
          <year>2012</year>
          ), http://people.engr.ncsu.edu/ermurph3/ papers/vlhcc12.pdf
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Miller</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , Eugene, Myers,
          <string-name>
            <surname>W.:</surname>
          </string-name>
          <article-title>A file comparison program</article-title>
          .
          <source>Software: Practice and Experience</source>
          p.
          <volume>1040</volume>
          (
          <year>1985</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>A.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cook</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Francioni</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hossain</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Anwar</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rahman</surname>
            ,
            <given-names>M.F.</given-names>
          </string-name>
          :
          <article-title>Nonvisual tool for navigating hierarchical structures</article-title>
          .
          <source>In: Proceedings of the 6th International ACM SIGACCESS Conference on Computers and Accessibility</source>
          . pp.
          <fpage>133</fpage>
          -
          <lpage>139</lpage>
          . Assets '
          <volume>04</volume>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2004</year>
          ), http://doi.acm.
          <source>org/10</source>
          . 1145/1028630.1028654
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Stefik</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hundhausen</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patterson</surname>
            ,
            <given-names>R.:</given-names>
          </string-name>
          <article-title>An empirical investigation into the design of auditory cues to enhance computer program comprehension</article-title>
          .
          <source>Int. J. Hum.-Comput. Stud</source>
          .
          <volume>69</volume>
          (
          <issue>12</issue>
          ),
          <fpage>820</fpage>
          -
          <lpage>838</lpage>
          (
          <year>Dec 2011</year>
          ), http://dx.doi.org/10.1016/ j.ijhcs.
          <year>2011</year>
          .
          <volume>07</volume>
          .002
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Stefik</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hundhausen</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>On the design of an educational infrastructure for the blind and visually impaired in computer science</article-title>
          .
          <source>In: Proceedings of the 42Nd ACM Technical Symposium on Computer Science Education</source>
          . pp.
          <fpage>571</fpage>
          -
          <lpage>576</lpage>
          . SIGCSE '11,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2011</year>
          ), http: //doi.acm.
          <source>org/10</source>
          .1145/1953163.1953323
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Automation of vui to gui mapping</article-title>
          .
          <source>In: CHI '13 Extended Abstracts on Human Factors in Computing Systems</source>
          . pp.
          <fpage>1941</fpage>
          -
          <lpage>1944</lpage>
          . CHI EA '
          <volume>13</volume>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2013</year>
          ), http://doi.acm.
          <source>org/10</source>
          .1145/2468356.2468706
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>An empirical evaluation of a vocal user interface for programming by voice</article-title>
          .
          <source>Int. J. Inf. Technol. Syst. Appoach</source>
          <volume>8</volume>
          (
          <issue>2</issue>
          ),
          <fpage>47</fpage>
          -
          <lpage>63</lpage>
          (
          <year>Jul 2015</year>
          ), http://dx.doi.org/10.4018/IJITSA.2015070104
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>