<!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>Çevik ve Emniyet Kritik: Demiryolu Sistemlerinde Çevik Yaklaşımların Uygulanabilirliğinin Araştırılması</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Banu Deniz YANIK</string-name>
          <email>bdyanik@aselsan.com.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hacı Ali ŞAHİN</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Abdul Kerim AYDIN</string-name>
          <email>akaydin@aselsan.com.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Serkan CEYLAN</string-name>
          <email>ceylan@aselsan.com.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: Çevik Yaklaşımlar</institution>
          ,
          <addr-line>Emniyet Kritik, Demiryolu Sistemleri, Raylı Araçlar, V-Model, EN-50128</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Aselsan A.Ş. Ulaştırma Güvenlik Enerji Sistemleri Sektörü, Yazılım Mühendisliği Müdürlüğü Macunköy / ANKARA</institution>
        </aff>
      </contrib-group>
      <fpage>366</fpage>
      <lpage>381</lpage>
      <abstract>
        <p>Software development processes created by defense industries effects all industrial areas in time. Because of increasing demands and changing social and economic dynamics, software development methods was improved and started to consist of new approaches and techniques. Due to the improvements and motivated reactions to modern marketing systems, agile systems are one of the most popular preferred methods. In this article, it is planning to explain techniques introduced by agile practices and usages of these techniques in safety integrated railway systems. In this scope, we plan to evaluate agile practices considering EN 50128 standards and lists the missing and overlapping parts. As a conclusion, methods and combination of these methods are briefly explained.</p>
      </abstract>
      <kwd-group>
        <kwd>Railway Systems</kwd>
        <kwd>Safety Critical</kwd>
        <kwd>CMMI</kwd>
        <kwd>EN-50128</kwd>
        <kwd>Process Improvement</kwd>
        <kwd>Standard Compliance</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Çevik pratikler, günümüzde oldukça tercih edilen bir yazılım geliştirme disiplini
olarak karşımıza çıkmaktadır. Market ihtiyaçlarına hızlı cevap verebilme, ekip
ruhunu güçlü tutma, iletişim ve insani yönleri vurgulayan bu disiplin [1];
 Süreçler ve araçlardan ziyade bireyler ve etkileşimlere,
 Kapsamlı dökümantasyondan ziyade çalışan yazılıma,
 Sözleşme pazarlıklarından ziyade müşteri ile işbirliğine ve
 Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye değer
vermektedir.</p>
      <p>Ancak yıllar içinde her akım ve yenilikte olduğu gibi, aranılan gümüş kurşunun
[2] her koşulda çevik pratikler olmadığı gözlemlenmiştir. Bunun yerine melez
[3] yöntemler, çevik uygulamaların daha plan yönelimli disiplinlerle [4]
bileşimi; CMMI [5], ISO 15504 [6] gibi daha formal tanımlı süreç iyileştirme
referans modelleriyle harmanlanması söz konusu olmaya başlamıştır. Bu sayede
hem plan yönelimli uygulamaların disiplinli yapısı, hem de çevik pratiklerin hızlı
ve pratik perspektifinin zenginliklerinden aynı anda yararlanılması söz konusu
olmaktadır.</p>
      <p>Bu çalışmada ise demiryolu sistemleri emniyet kritik projelerde aranan temel
standart olan EN 50128 ile çevik pratiklerin birlikte uygulanabilirliği, eksiklikler
ve önerilerden bahsedilecektir. Dokümanın bir sonraki bölümünde literatür
taraması ve temel bilgilerden; devamında ise bu iki farklı yaklaşımın birlikte
uygulanabilirliği ve izlenebilirliğinin sağlandığı çalışmadan bahsedilecektir.
Sonuçlar kısmında ise çevik pratikler ve emniyet kritik sistemlerin
melezlenmesinin sonuçları ve etki analizi aktarılacaktır.
2
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Benzer Çalışmalar ve Temel Bilgiler</title>
      <p>Literatür Taraması
Çevik pratikler ve emniyet kritik sistemlerin birlikte çalışabilirliğine yönelik
olarak yapılan bir dizi çalışma bulunmaktadır. Bunların farklı perspektifleri ve
amaçları olsa da, çevik pratikler ve emniyet kritik sistemlerin bütünleşmesi için
bazı karşılaştırma ve önerileri içermektedir.
[7] İlgili çalışmada, gömülü yazılımlarda emniyet kritik sistemlerin çevik
pratiklerle geliştirilmesi için bazı araç destekleri ve özellikleri aktarılmıştır. Çözüm
odaklılığıyla dikkat çeken bu çalışmada toplam 12 adet tanımlanmış olan [8]
çevik pratiklerden; artırımlı yinelemeli geliştirme, test yönelimli geliştirme,
sürekli entegrasyon, planlama kısmına değinilmiştir ancak diğer pratiklerden
bahsedilmemiştir.</p>
      <p>Scrum ekolü ve EN 50128’in kıyaslanması ve uyumluğunu araştıran makalelere
bakıldığında ise [9][10] bazı çalışmalar öne çıkmaktadır. Bu çalışmalar çevik
pratiklerin temelini aldığı uç programlamadan1[8] ziyade Scrum pratikleri ve
uygulama tecrübelerini aktarmışlardır.
[11] Bahsi geçen çalışmada teker teker süreçlerin çevik ve yalın prensipler
açısından incelenmesi ve gerekli değişiklikler adreslenmiştir. Bu çalışmada 12
çevik pratik yerine çevik ve yalın organizasyonların genel yapısı göz önüne
alınarak bir değerlendirme yapılmıştır.
12 çevik pratiğin EN 50128’de uygulanabilirliğini doğrudan değerlendiren bu
makalede ise [12] EN 50128 ile izlenebilirlikler kurulmamış ve bir çözüm
önerisine ve geliştirme modeline gidilmemiştir.
2.2</p>
      <p>Çevik Pratikler ve Tarihçesi
Yazılım projelerinde doksanlı yıllarda artan başarısızlıkların ardından [13] farklı
geliştirme ve yaklaşımlar aranmaya başlamıştır. İşte uç programlama da, bu
arayışlar neticesinde çıkan bir yaklaşımdır. Bu yaklaşım, güçlü iletişim, geri
bildirimin önemi, basitlik ve cesaret değer yargılarını göz önüne alan, ağır
dokümantasyondan imtina eden ve onu iyi iletişim kuran bir ekip, güçlü teknik
altyapı ve sürecin kendisine odaklanan bir bakış açısıyla harmanlayan bir
yapıdadır.</p>
      <p>Uç programlama bahsi geçen değer yargılarını korumak ve onları sürdürmeye
yönelik olarak bir dizi çekirdek çevik pratikten oluşmaktadır. Bir
organizasyonun ve/veya projenin ne kadar çevik olduğu [4] bu pratikleri gerçekleştirme
oranıyla ölçülmektedir. Bu bölümün devamında ilgili pratikler kategorilerine
göre açıklanacaktır.</p>
      <p>Bu kategoriler altında yer alan pratikler, biri diğerinden üstün olmamakla
birlikte genel olarak aynı felsefe etrafında bütünleşen ve birbirini tamamlayan
özelliktedir.
1 İngilizcesi: eXtreme Programming (XP).
Kodlama Pratikleri.</p>
      <sec id="sec-2-1">
        <title>1.Metafor (Ortak Bir Anlayış ve Yapı) Oluştur.</title>
        <p>Çevik yaklaşımlarda ekibin aynı dili konuşması, aynı ortak anlayışta
buluşabilmesi oldukça önemli bir pratiktir. Metaforlar yani benzeşimler aracılığıyla
projenin, proje hedefleri ve tasarımının ifade edilebilmesi, üst düzey mimarinin
herkes tarafından aynı şekilde anlaşılmasını sağlamaktadır.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.Basit Tasarım ve Kodlama.</title>
        <p>Tasarım ve kodlama aşamasında ihtiyaç duyulan kadarın tasarlanması, ihtiyaç
duyulan kadarın kodlanması pratikleri sistemin küçük parçalara bölünüp daha
kolay yönetilmesi ve ekibin sonuçlara daha hızlı bir şekilde ulaşmasını sağlar.
Müşterinin her iterasyonda öncelikli problemlerine odaklanmak ve bunları
çözüme ulaştırmak bu pratikte temel olarak benimsenmiştir.</p>
      </sec>
      <sec id="sec-2-3">
        <title>3.Yeniden Yapılandır.2</title>
        <p>Yeniden yapılandırma, kodun sürekli iyileştirilmesi olarak da tanımlanabilir.
Kodun yazılmasının ardından daha anlaşılabilir olması, daha iyi bir mimaride
anlam kazanması, hatalardan ayıklanması, performans artırılması gibi
sebeplerden kod yeniden yapılandırılır. Bunun sürekli göz önüne alınması ve
uygulanması ise bu pratiği anlamlı hale getirir.</p>
      </sec>
      <sec id="sec-2-4">
        <title>4.Kodlama Standartları Oluştur.</title>
        <p>Kodlamanın ekipçe belirlenmiş standartlar çerçevesinde geliştirilmesi, kaliteli
ve anlaşılır kod yazmanın temelini oluşturduğu gibi, uç programlama altında
yer alan çevik pratiklerden de biri olarak karşımıza çıkmaktadır. Ekibin aynı dili
konuşabilmesi ve hata oranı düşük ürünler geliştirebilmesi için
kullanılmaktadır.
2 İngilizcesi: Refactoring.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Geliştirme Yaklaşımı Pratikleri.</title>
      <sec id="sec-3-1">
        <title>1.Test Yap.</title>
        <p>Test yönelimli yaklaşımı da içine alan bu pratikte amaç yazılan her işlev için
gerekli testi de beraberinde tasarlamak, ilgili kaynak kodu yazmak ve onu
çalışır hale getirmektir. Böylece yazılan her işlev çevik bir şekilde
sınanabilmektedir. Test yönelimli yaklaşımlarda ise, işlevin yazılmasını daha beklemeden ilk
olarak testi yazılır. Böylece hedef, testin geçmesini sağlayacak işlevleri
gerçekleştirmek olarak yorumlandığı halinde de test odaklı olarak geliştirme
yapılmaktadır.</p>
      </sec>
      <sec id="sec-3-2">
        <title>2.Eş Programlamayı Kullan.3</title>
        <p>Eş programlamada iki kişi aynı işlev setini kodlamak üzere birleşirler. Böylece
doğan sinerji ve odaklılık sayesinde yazılan kodun kalitesi artar ve kolektif
yaklaşım, ortak dilin oluşumu gibi felsefeler desteklenmiş olur.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.Kolektif Sahiplenmeyi Sağla.</title>
        <p>Bu pratikle hedeflenen ürüne değer katmak isteyen herkesi projenin içine
çekebilmektir. Kodu belirli parçalara bölerek sahiplendirmektense bütününü
herkesin sahiplenmesini, değiştirebilmesini ve anlayabilmesini sağlamak
esastır.</p>
        <p>Bu pratiğin amacı, kod üzerinde bir değişiklik yapmak gerektiğinde bağımlılığı
minimuma indirmek, gereksiz beklemeleri ortadan kaldırmak ve projeyi
benimsemenin ekip içinde kolaylaşmasını sağlamaktır.</p>
      </sec>
      <sec id="sec-3-4">
        <title>4.Sürekli Entegrasyonu Sağla.</title>
        <p>Ürünün sahip olduğu iç ve dış arayüzleriyle birlikte erken aşamalarda entegre
edilmesi ve sınanması ileride çıkabilecek potansiyel hataları önceden
görmemizi sağlar.</p>
        <p>Bunun için kodun çalıştırılması, ilişkili birim ve entegrasyon testlerinin
yapılması, statik kod analizlerinin gerçekleştirilmesi hatta son kullanıcı testlerinin
otomatikleştirilmesini kapsayan yapılar kurularak sistemin gün içinde birden
3 İngilizcesi: Pair Programming.
çok kere paketlenip hazır hale getirilmesi aktiviteleri bu pratikle
gerçekleştirilir.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Yönetimsel Pratikler.</title>
      <sec id="sec-4-1">
        <title>1.Planlama Oyununa Katıl.</title>
        <p>Planlama oyununda paydaşların birleşik olarak bir sonraki adımda yapacağı
işleri planlaması faaliyetleri düşünülmelidir. Ürün gözüyle ihtiyaç duyulan
yetenekler kullanıcı hikayesi [14] formatında ifade edilirken, buna istinaden takım
geliştirme hızı dikkate alınarak ne kadarının yapılabileceği geliştirme takımı
tarafından belirlenir. Bu planlamalar ise sabit zaman kutularının içine sığacak
işlerin belirlenmesi şeklinde yapılır.</p>
        <p>Planlamalar sürüm odaklı ve bir sonraki iterasyon odaklı olarak ayrı ayrı
yapılabilir. Burada planlamanın bütünsel olarak değil, projenin işlevsel parçalarına
yönelik olarak yapılması beklenir. Bu sayede belirsiz olan unsurlar hakkında
yanıltıcı planlar yapılmaktan kaçınılır.</p>
      </sec>
      <sec id="sec-4-2">
        <title>2. Küçük İterasyonlar Yap.</title>
        <p>Küçük iterasyonlarla müşteriye ihtiyaç duyduğu değerleri artırımlı parçalar
hainde vermek, müşterinin değişiklikleri daha iyi takip etmesine, erken müdahale
ederek yanlış anlaşılmış gereksinimleri düzeltmesine, doğru ve hızlı
geribildirim verebilmesine hizmet eder.</p>
        <p>Artırımlı yinelemeli [15] olarak da anılan bu geliştirme yaklaşımı, riski minimize
etme, projeyi daha kolay yönetilebilir hale getirme, gerçekçi plan yapabilmek
için gerekli ortamı hazırlamak gibi hedefleri gerçekleştirmek için tercih edilir.</p>
      </sec>
      <sec id="sec-4-3">
        <title>3.Müşteriyi Sürece Dahil Et.</title>
        <p>Bu pratiğin en ideal formunda müşterinin geliştirme yapılan ortama dahil
edilmesi veya müşterinin çalışma ortamında geliştirme faaliyetlerinin yapılması
hedeflenmektedir. Ancak bu durum sağlanamadığında bile çok kolay
erişilebilir, adanmış ve tanımlı işi yazılım geliştirme ekibine destek vermek olan müşteri
profili bu çevik pratiğin sağlanması için gereklidir.</p>
        <p>Bu pratikle hedeflenen müşteriyle güçlü bir iletişim kurarak, onu proje
aşamalarına dahil etmek ve böylece sonradan çıkabilecek sürpriz değişiklikler, yanlış
anlamalar ve gereksiz dokümantasyonun önüne geçmek, müşterinin erken
aşamalarda projeye bağlanması ve sahiplenmesini sağlayarak projenin başarı
şansını artırmaktır.
4.Haftada 40 Saati Kullan.
Çevik bir ekibin verimli çalışma saatlerinin olmasının yanında, uzayan
toplantılar ve fazla mesailerin azaltılması da önemli pratiklerdendir. Böylece ekibin
motivasyonunun belirli bir seviyenin altına inmemesi sağlanmaktadır. Bunun
için gerekli durumlarda ek zaman alanları oluşturarak üst düzey planlamaları
yönetmek önerilen tavsiyelerdendir.
İnsanın doğası gereği fazla mesailerin artmasıyla birlikte yoğunlaşma ve
motivasyon kaybı yaşanacağından dolayı üretilen ürünün kalitesinde düşme, uzun
vadede süreçlerde aksama meydana gelebileceği gözden kaçırılmamalıdır.
2.3</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Emniyet Kritik Sistemler ve EN 50128</title>
      <p>Raylı araçlara ait uygulamalarda emniyet kritik geliştirme, yükleme ve bakım
işlemlerini düzenlemek üzere EN 50128 Avrupa standart ailesi [16]
kullanılmaktadır. Bu standartla uyumlu olabilecek kurumun sahip olması gereken
organizasyon yapısı, kullanması gereken yaşam döngüsü ve uygulaması gereken
planlama, tasarım, geliştirme ve test faaliyetleri ile kalite güvence faaliyetleri
Yazılım Güvenlik Bütünlüğü Seviyelerine4 (YGBS) göre sınıflandırılmış olarak bu
standartlarda açıklanmıştır. YGBS’ler bölümün devamında detaylandırılacaktır.</p>
    </sec>
    <sec id="sec-6">
      <title>Risk Analizi.</title>
      <p>Emniyet kritik sistemlerde sistemin kullanıldığı ortamda sistem nedeniyle
oluşabilecek riskler tanımlanır. Bu riskler:
 İnsan yaşamında kayıp(lar)
 Yaralanma ya da hastalık durumları
 Çevre kirliliği ve
 Taşınır-taşınmaz varlıklarda kayıp
sonuçlarına göre analiz edilerek belirlenir. İşte bu risklerin etkilerine göre
belirlenecek kısım da YGBS’ler olarak anılır. Kısaca aşağıdaki tablo YBGS’leri ve
anlamlarını açıklamaktadır.
4 İngilizcesi: Software Safety Integrity Level (SIL).</p>
      <p>Tablo 1. Yazılım Emniyet Bütünlük Seviyeleri ve Emniyet Kritiklikleri</p>
    </sec>
    <sec id="sec-7">
      <title>Yazılım Güvenlik Bütünlüğü Emniyetle İlişki Durumu</title>
    </sec>
    <sec id="sec-8">
      <title>Seviyesi (YGBS)</title>
      <p>4 Çok Yüksek
3 Yüksek
2 Orta
1 Az
0 İlişkili Değil
Sistem ve alt parçalarına ait YGBS’ler ise EN 50128 standartlarına göre
gereksinim analizi aşamasında belirlenir.</p>
    </sec>
    <sec id="sec-9">
      <title>Organizasyonel Rol ve Sorumluluklar.</title>
      <p>Risk analiz yöntemlerinin yanı sıra, EN 50128’le birlikte organizasyonel
anlamda bazı rollerin kesin sınırlarla ve belirli kişileri bağımsızlaştırarak
tanımlanması gereklidir. YGBS emniyet kritikliği arttıkça, rollerin bağımsızlığı da
artmaktadır.</p>
      <p>Burada bağımsızlıkla amaçlanan, özellikle değerlendirme, denetim ve test
faaliyetlerinin proje yöneticisi ve proje ekibinden ayrı tarafsız bir gözle
değerlendirilmesinin sağlanmasıdır. Başka bir deyişle kalite yönetim sistemi ve
geliştirme ekibinin birbirini etkilemeden çalışabilmesinin sağlanmasıdır.</p>
    </sec>
    <sec id="sec-10">
      <title>Yazılım Yaşam Döngüsü ve Dokümantasyon.</title>
      <p>Yaşam döngüleri incelendiğinde EN 50128 ile dikkat çeken nokta, her faaliyetin
sonrasında ilgili bir değerlendirme adımının yer aldığıdır. Bu da aslında genel
olarak V-model [17] olarak bilinen yazılım geliştirme yaşam döngüsüyle
karşılanmaktadır.
Daha farklı yazılım yaşam döngülerinin kullanılmasına karşı çıkmayan
standartta önemli görülen nokta, her faaliyetin ardından yapılması gereken
doğrulama ve geçerleme adımlarının atlanmamasıdır.
3
3.1</p>
      <p>Çevik Pratiklerin EN 50128 ile Uyumluluk Durumu
Bu kısımda çevik pratiklerin EN 50128 gereksinimleriyle çelişme ve/veya onları
karşılama durumu gözetilerek alt başlıklar halinde bir değerlendirme
yapılacaktır. Bu 12 pratik sırasıyla aşağıda yer almaktadır.</p>
    </sec>
    <sec id="sec-11">
      <title>Metafor (Ortak Bir Anlayış ve Yapı) Oluştur.</title>
      <p>Bu pratiğin EN 50128 açısından desteklediği kısımlar mevcuttur. Ortak bir dil,
ortak terim, ortak hedefler ve anlayışın oluşturulması standart üzerinde sıkça
bahsedilen bir konu olarak göze çarpmaktadır.</p>
    </sec>
    <sec id="sec-12">
      <title>Basit Tasarım ve Kodlama.</title>
      <p>EN 50128’de birden çok bölüm altında bahsi geçen “Projenin büyüklük ve
karmaşıklığının dengelenmesi gereklidir.” Felsefesini destekler nitelikte olan bu
pratik sayesinde, karmaşık tasarım ve kodlama faaliyetlerini desteklemekte
olan çevik pratiklerin, standart uyumluluğunu da desteklemekte olduğundan
söz edilebilir.</p>
    </sec>
    <sec id="sec-13">
      <title>Yeniden Yapılandır (Refactoring).</title>
      <p>Yeniden yapılandırma sayesinde ihtiyaç duyulan kadar mimarinin
tasarlanması, sonrasında kodu yeniden yapılandırarak ilerlemesi beklenir. Ancak bu
pratiğin EN 50128’le doğrudan uygulanması pek olası değildir. Bunun en temel
sebebi değişiklik yönetiminin çok daha formal ilerlemesi yüzünden sistemin
genel olarak bu sürecin işleyişini yavaşlatan bir yanı olmasıdır.</p>
      <p>Ek olarak, değişen her kod parçası için yeniden doğrulama ve yeniden
geçerleme faaliyetlerinin tekrar edilmesi gereklidir. Tüm bunlar gözetilmeden
yapılan yeniden yapılandırmalar EN 50128’e ait standart uyumluluğunu tehlikeye
atabilir.</p>
    </sec>
    <sec id="sec-14">
      <title>Kodlama Standartları Oluştur.</title>
      <p>Kodlama standartlarının varlığı ve uyumluluğun sağlanması çevik pratiklerde
olduğu kadar EN 50128 tarafından da aranan bir gereksinimdir. Her iki
yaklaşımda da birebir karşılık bulmaktadır.</p>
    </sec>
    <sec id="sec-15">
      <title>Test Yap.</title>
      <p>Çevik yazılım geliştirme yaklaşımlarında test ve kod bir bütün olarak
değerlendirilir ve geliştirme yapan kişinin ilgili test betiklerini de yazması beklenir. Bu
kapsamda da testi oluşturan kişi ve kodu yazan kişinin aynı olması kaçınılmaz
bir sonuç olabilmektedir. Ancak bu sonuç, EN 50128 standartlarına göre farklı
ele alınması gereken bazı noktaları açığa çıkarır.</p>
      <p>EN 50128’e göre testçilerin geliştirme ekibinden bağımsız olarak çalışması ve
ürünün doğruluğunu sınaması beklenir. Bu durumda bu çevik pratiğin
doğrudan karşılandığı söylenemez. Bu durum bir çelişki oluşturmaktadır. Bir öneri
olarak testlere ait prosedür ve gereksinimlerin testçiler tarafından yazılması
ancak bu yazılan gereksinimlere ait test betiklerinin kodlanması işin yine
geliştiriciler tarafından yapılması önerilebilir.</p>
    </sec>
    <sec id="sec-16">
      <title>Eş Programlamayı (Pair Programming) Kullan.</title>
      <p>Eş programlama sayesinde kod kalitesinin artacağı, ortak dişin oluşmasına
katkı sağlanacağı daha önceki bölümlerde aktarılmıştır. Bu sayede bazı gözden
geçirmelerin de dolaylı olarak yapıldığı söylenebilir ancak bu durumda dahi
üzerine yapılması gereken formal gözden geçirmeler tamamlanmış
sayılmayacaktır ve bunların da planlanması ve yönetilmesi ayrıca gereklidir.</p>
    </sec>
    <sec id="sec-17">
      <title>Kolektif Sahiplenmeyi Sağla.</title>
      <p>EN 50128 açısından bir çelişki ya da ilişki içermemektedir.</p>
    </sec>
    <sec id="sec-18">
      <title>Sürekli Entegrasyonu Sağla.</title>
      <p>Entegrasyon EN 50128 için oldukça önemli bir aktivite başlığı olmaktadır. Hem
donanımsal hem de yazılımsal bütünlüğün sağlanması ve sınanması faaliyetleri
Entegratör tarafından yürütülmelidir. Ancak standartta entegrasyonun önemi
vurgulanmış olsa da sürekli entegrasyon kavramından çok da söz edilmemiştir.
Bir öneri olarak, EN 50128’de direk tarifli edilmiş olmasa bile, sürekli
entegrasyon konularının ele alınması işi Entegratör üzerinden yapılabilir. Bu durumda
Entegratör’ün konfigürasyon yönetim işlerinde de görevlerinin olması
gerektiği göz ardı edilmemelidir.</p>
      <p>Ayrıca EN 50128’in gereği olarak sürekli entegrasyon için kullanılan araçların
emniyet kritiklik açısından değerlendirilmesi, sınıflandırılması ve ilgili YBS’ye
göre yönetilmesi [16]5 gereklidir. Bununla birlikte, bu araçlar üzerinde koşacak
olan test, derleme, yükleme ve diğer yardımcı betiklerin de sahip olması
gereken bir dizi emniyet kritik gereksinim ve özellik bulunmaktadır.</p>
    </sec>
    <sec id="sec-19">
      <title>Planlama Oyunu.</title>
      <p>EN 50128 kapsamında farklı boyutlarda ve çok sayıda planlama yapıldığı
söylenebilir. Bu standart, iterasyonlara yönelik olarak planlama yapılmasına karşı
5 6.7 Destek Araçları ve Dilleri başlığı incelenebilir.
çıkmamakla birlikte, dokümantasyon ihtiyacının çevik süreçlere göre fazla
olması sebebiyle ek maliyet getireceği gözden kaçırılmamalıdır.</p>
      <p>EN 50128 kapsamında, kalite güvence, konfigürasyon yönetimi, doğrulama,
geçerleme, değerlendirme ve bakım planlarının dokümante edilmesi
beklenmektedir ve bu dokümanların ihtiyaca yönelik olarak birlikte oluşturulmasında
bir sakınca yoktur. Bu noktada bakıldığında işlevsel olmayan gereksinimler için
beklenen planlama yaklaşımının yanında, esas işin planlanmasına yönelik
kısmın standart kapsamında oldukça esnek bırakıldığını söyleyebiliriz. Bu da
planlama oyunu pratiğinin gerçekleştirilmesinde bir çelişki oluşturmayacağı
anlamına gelmektedir.</p>
    </sec>
    <sec id="sec-20">
      <title>Küçük İterasyonlar Yap.</title>
      <p>EN 50128’le küçük artırımlar üretme pratiği doğrudan bir çelişki
oluşturmamaktadır ancak bir artırım oluşturmak, çevik süreçlere göre daha maliyetlidir.
Doğrulama, geçerleme ve risk değerlendirme ve denetleme faaliyetleri bu
iterasyonlardaki ek işleri artırmaktadır.</p>
      <p>Diğer yandan bu faaliyetleri daha sık yapmış olmanın verdiği avantaj sayesinde
kodun daha sağlam temeller üzerinde yükseldiğinden de bahsedilebilir.</p>
    </sec>
    <sec id="sec-21">
      <title>Müşteriyi Sürece Dahil Et.</title>
      <p>EN 50128’de direk olarak müşteri odaklı bir gereksinim adreslenmemiş olsa
da, geliştirme ekibinin yakınında bir müşterinin olması geçerleme faaliyetlerini
olumlu etkileyecek ve destek olacaktır.</p>
    </sec>
    <sec id="sec-22">
      <title>Haftada 40 Saati Kullan.</title>
      <p>EN 50128 açısından bir çelişki ya da ilişki içermemektedir.
3.2</p>
      <p>Çevik Pratiklerin EN 50128 ile İzlenebilirliği
Bu kısımda çevik pratikler ve onların ilişkili olduğu EN 50128 gereksinimleri
maddeler halinde özetlenecektir.</p>
      <p>Tablo 2. Çevik Pratikler ve EN 50128 Gereksinim İzlenebilirlikleri
Çevik Pratik Adı
Metafor Oluştur</p>
      <sec id="sec-22-1">
        <title>Basit Tasarım ve Kodlama</title>
      </sec>
      <sec id="sec-22-2">
        <title>Yeniden Yapılandır</title>
      </sec>
      <sec id="sec-22-3">
        <title>Kodlama Standartları Oluştur</title>
      </sec>
      <sec id="sec-22-4">
        <title>Test Yap</title>
      </sec>
      <sec id="sec-22-5">
        <title>Eş Programlamayı Kullan</title>
        <p>Kolektif Sahiplenmeyi
Sağla
Sürekli Entegrasyonu
Sağla
Planlama Oyunu
İlgili EN 50128 Gereksinim Numaraları
5.3 Yaşam Döngüsü ve Dokümantasyon başlığı
altında 5.3.26, 7, 8, 9, 10 gereksinimleri ortak
anlayış ve ortak bir dil oluşturmanın ekip için
gerekliliğini vurgulamaktadır.
7.3 Mimari başlığı altında 7.3.4.3 ve 7.3.4.15
maddeleri doğrudan açık ve anlaşılır bir
mimariye duyulan gereksinimi özetlemektedir.
7.4 Bileşen Tasarımı altında 7.4.4.5 maddesiyle
bileşenlerin seviyesinde ve 7.5 Bileşen
Gerçekleştirim ve Test başlığı altında 7.5.4.2 ile
gerçekleştirim seviyesinde açık ve anlaşılır mimari
ihtiyacı özetlenmiştir.</p>
        <sec id="sec-22-5-1">
          <title>6.6 Düzeltme ve Değişiklik Kontrolü başlığı al</title>
          <p>tında hangi koşullarda ve ne şekilde yazılım
üzerinde değişiklik yapılabileceği tariflenmiştir.</p>
          <p>Burada yer alan sürecin ağır dokümantasyon ve
bir dizi kontrol makamlarınca onaylanarak
değişikliklerin varlık bulması yeniden
yapılandırma çevik pratiğini yavaşlatmakta ve hatta
çoğu zaman engeller durumda olmaktadır.
7.3 Mimari başlığı altında yer alan 7.3.4.25, 26,
27, 28 direk kodlama standartlarının varlığını ve
sahip olması gereken prensipleri
açıklamaktadır.
6.1 Yazılım Testleri başlığı altında testler ve
beklenen özellikleri genel olarak aktarılmıştır.
İzlenebilirlik kurulamamıştır.
İzlenebilirlik kurulamamıştır.
7.6 Entegrasyon başlığı altında yer alan
gereksinimler doğrudan sürekli entegrasyon
aracılığıyla kolaylaşacak gereksinimlerdir.
6.2 Yazılım Doğrulama altında 6.2.4.2, 3, 4, 5,
6, 7, 8, 9, 10, 11 ve 12 nolu gereksinimler;
6.3 Yazılım Geçerleme altında 6.3.4.2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12 ve 13 nolu gereksinimler; 6.4
Küçük İterasyonlar Yap
Müşteriyi Sürece Dahil Et
Haftada 40 Saati Kullan</p>
          <p>Yazılım Değerlendirme altında 6.4.4.4 ve 5 nolu
gereksinimler; 6.5 Yazılım Kalite Güvence
altında 6.5.4.3, 4, 5, 6, 7 ve 8 gereksinimleri
planlamayla direk ilişkili gereksinimlerdir.
İzlenebilirlik kurulamamıştır.
İzlenebilirlik kurulamamıştır.</p>
          <p>İzlenebilirlik kurulamamıştır.
Çevik pratikler ve emniyet kritik sistemlerin geliştirme yaklaşımı dikkate
alındığında birbirini bütünleyen, birbiriyle ortaklaştırılabilecek ve prensipte
birbiriyle çelişki oluşturabilecek aktivitelerin yer aldığı gözlemlenebilir.
4</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-23">
      <title>Sonuçlar</title>
      <p>Çevik yazılım geliştirme pratikleriyle EN 50128 standartları temel anlamda
birlikte çalışabilir yaklaşımlar olarak (Bakınız Tablo 3) karşımıza çıkmaktadır.
Aşağıda çalışmanın sonucu olarak EN 50128’i destekleyen, çelişki içeren ve
ilişkisiz pratikler ayrı ayrı listelenmiştir.</p>
      <p>Tablo 3. EN 50128 ile Destekler, Çelişkili ve İlişkisiz Çevik Pratikler</p>
    </sec>
    <sec id="sec-24">
      <title>Destekleyici EN 50128 ile Çelişkili İlişkisiz</title>
      <p>Metafor Oluştur
Basit Tasarım ve Kodlama
Yeniden Yapılandır
Kodlama Standartları Oluştur
Test Yap
Eş Programlamayı Kullan
Kolektif Sahiplenmeyi Sağla
Sürekli Entegrasyonu Sağla
Planlama Oyunu
Küçük İterasyonlar Yap
Müşteriyi Sürece Dahil Et
Haftada 40 Saati Kullan
X
X
X
X
X
X
X
X
X
X
X
X
Burada atlanmaması gereken bir nokta ilişkisiz pratiklerin genel olarak ekip
motivasyonunu artıran, kod kalitesini artıran, ekip içindeki kişi bağımlılıklarını
azaltan, yönetilebilirliği artıran, riski minimize eden yaklaşımlar olması
sebebiyle direk standartla ilişki kurulamasa bile, projenin başarısını doğrudan
etkileyen pratikler olduğu göz ardı edilmemelidir.</p>
      <p>42%</p>
      <p>33%
25%</p>
      <p>Destekleyici Pratikler
Çelişkili Pratikler
İlişkisiz Pratikler
5
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]</p>
      <p>Şekil 2. Çevik Pratiklerin Uyumluluk Dağılımı</p>
    </sec>
    <sec id="sec-25">
      <title>Referanslar</title>
      <p>M. Fowler and J. Highsmith, “The agile manifesto,” Softw. Dev., vol. 9, pp. 28–35, 2001.
F. Brooks, The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley,
1982.</p>
      <p>B. Boehm and R. Turner, Balancing Agility and Discipline: A Guide for the Perplexed,
vol. 22. 2003.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>B.</given-names>
            <surname>Boehm</surname>
          </string-name>
          , “
          <article-title>Get Ready for Agle Methods, with Care,”</article-title>
          <source>Int. J. Eng. Sci. Technol</source>
          ., vol.
          <volume>4</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>29</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>CMMI</surname>
          </string-name>
          , “
          <article-title>CMMI for Development, Version 1</article-title>
          .3,”
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>International Organization</surname>
          </string-name>
          for Standardization, Geneva, “ISO/IEC 15504.” p.
          <source>Information technology - Process assessment</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>B. P.</given-names>
            <surname>Douglass</surname>
          </string-name>
          , “
          <article-title>Adopting Agile Methods for Safety Critical Embedded Systems</article-title>
          ,” no.
          <source>October</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <given-names>K.</given-names>
            <surname>Beck</surname>
          </string-name>
          , Extreme Programming Explained: Embrace Change, no. c.
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>T.</given-names>
            <surname>Myklebust</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Stålhane</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Lyngby</surname>
          </string-name>
          , “
          <article-title>Application of an agile development processes for EN50128 / Railway conformant software</article-title>
          ,” no.
          <year>2012</year>
          , pp.
          <fpage>4037</fpage>
          -
          <lpage>4044</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>M.</given-names>
            <surname>Vuori</surname>
          </string-name>
          , Agile Development of Safety-Critical
          <string-name>
            <surname>Software</surname>
          </string-name>
          .
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>H.</given-names>
            <surname>Jonsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Larsson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Punnekkat</surname>
          </string-name>
          , “
          <article-title>Agile practices in regulated railway software development</article-title>
          ,
          <source>” Proc. - 23rd IEEE Int. Symp. Softw. Reliab. Eng. Work. ISSREW</source>
          <year>2012</year>
          , pp.
          <fpage>355</fpage>
          -
          <lpage>360</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <given-names>R. L.</given-names>
            <surname>Glass</surname>
          </string-name>
          , Facts and Fallacies of Software Engineering.
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <given-names>M.</given-names>
            <surname>Cohn</surname>
          </string-name>
          ,
          <source>User Stories Applied: For Agile Software Development (Addison Wesley Signature Series)</source>
          , vol.
          <volume>1</volume>
          , no.
          <issue>0</issue>
          .
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <given-names>C.</given-names>
            <surname>Larman</surname>
          </string-name>
          and
          <string-name>
            <given-names>V. R.</given-names>
            <surname>Basili</surname>
          </string-name>
          , “
          <article-title>Iterative and incremental developments. a brief history,” Computer (Long</article-title>
          . Beach. Calif)., vol.
          <volume>36</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <given-names>B.</given-names>
            <surname>Standard</surname>
          </string-name>
          , “BS EN 50128:
          <year>2011</year>
          ,”
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Balaji</surname>
          </string-name>
          , “
          <article-title>Waterfall vs v-model vs agile : A comparative study on SDLC,” WATERFALL Vs V-MODEL Vs Agil</article-title>
          . A Comp.
          <source>STUDY SDLC</source>
          , vol.
          <volume>2</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>26</fpage>
          -
          <lpage>30</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>