<!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>Koray İNÇKİ TÜBİTAK BİLGEM Bilişim Teknolojileri Enstitüsü (BTE) P.K. 74, Gebze 41470 Kocaeli korayincki@alumni.usc.edu</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: Yazılım Proje Yönetimi</institution>
          ,
          <addr-line>Yazılım Süreçleri</addr-line>
          ,
          <country>Yazılım Kalite Güvence</country>
        </aff>
      </contrib-group>
      <fpage>777</fpage>
      <lpage>782</lpage>
      <abstract>
        <p>Özet: 1960'lı yılların sonundan bu yana yazılım projeleri yürütülmektedir. Yazılım mühendisliği alanında yapılan araştırmalar bu projelerin başarı ile tamamlanması için alınması gereken önlemleri anlatsa da günümüzde hala pek çok yazılım projesi başarısızlıkla sonuçlanmaktadır. Ayrıca, bu alanda yapılan araştırma sonuçları daha çok proje süreci başlamadan alınması gereken önlemleri belirtir. Biz bu bildiride BTE'de yürütülmüş DO-178B uyumluluğu gerektiren bir gömülü sistem yazılım projesinin başarısızlıktan (göreceli) başarıya dönüşümünde tecrübe edinilen deneyimleri paylaşacağız. Bildiride, örnek projenin başarı ile tamamlanmasında başarı ölçütlerinin yeniden tanımlanması, tüm paydaşların projeye destek olmasının sağlanması, yazılım süreçlerinin çeşitli aşamalarında uygulanan köklü ve zaman alıcı, fakat kaostan düzene geçişi kalıcı hale getiren, bir nevi hasar kontrolü yapmamızı sağlayan hem yazılım mühendisliği ve hem de proje yönetimi en iyi pratiklerimizi paylaşayacağız.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Giriş</title>
      <p>
        Yazılım Mühendisliği literatüründe yazılım projelerinin başarısızlığını önlemek
için çeşitli çalışmalar yapılmaktadır. Paylaşılan çalışmaların büyük çoğunluğu
önleyici tedbirler mahiyetindedir. Tüm bu araştırmalara rağmen yazılım projelerinde
başarısızlıklar süregelmektedir. Standish Group tarafından 2013 yılında yayınlanan
Chaos Manifesto raporunda 2012 yılında yürütülen yazılım projelerinin %39'u
başarılıyken, %18'i kapatılmış, %43'ü ise önceden tahmin edilen kısıtların üzerinde
tamamlanmıştır [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        Yazılım geliştirmek masraflı ve çoğu zaman zor bir süreçtir. Yazılım geliştirme
işinin başarılı tamamlanabilmesi için pek çok kılavuz ve standart tanımlanmış
olmasına rağmen, proje sonrası değerlendirmelere pek rastlanmaz ve dolayısıyla
geçmiş projelerden çok az ders çıkartırız [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Kılavuz ve standartların projelerde
uygulanması öncelikle proje yöneticisinin görevi olmakla birlikte, tüm paydaşların bu
en iyi pratiklerin uygulandığını gözlemlemesi ve denetlemesi gereklidir.
      </p>
      <p>
        Başarısızlık faktörleri olarak pek çok etkenden söz etmek mümkündür [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Bu
nedenleri i) Teknik, ii) Yönetimsel, ve iii) Sektörel olarak sınıflandırabiliriz. Proje
paydaşlarının her üç (3) alanda da proje sonuçlarından etkilenmesi mümkün olduğu
için, bu faktörlerde meydana gelen aksaklıklar proje ekibine baskı olarak yansır.
Başarısızlık faktörleri arasında proje ekibinin paydaşlardan kaynaklanan baskı
nedeniyle yoğun stres altında çalışması önemli bir paya sahiptir [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>Chaos raporunda projeler sonuçlarına göre Başarılı, Başarısız ve Sorunlu
(Challenged) olarak sınıflandırılmıştır. Sorunlu projeler zaman, maliyet ve/veya
kapsam açısından zorluklar yaşamış projelerdir. Yazılım mühendisliği alanında
yapılan çalışmalar Başarısız ve Sorunlu projelerden kazanılan derslerin süreçsel
olarak değerlendirmesi ile, müteakip projeler için bu projeler başlamadan önce
önlemler alınması yönünde yoğunlaşır. Fakat, Sorunlu projelerin Başarısız olarak
tamamlanmasını önlemek için yürümekte olan Sorunlu bir projede yapılması
gerekenler bu bulgular ve tedbirlerden farklılık gösterebilir. Bu durumun yönetilmesi
için tüm paydaşların (müşteri, fon sağlayıcı, sektörel uzmanlar, proje yürütücüsü) aynı
bilgi seviyesi ve izleme yetenekleri ile projenin Başarısız olarak tamamlanmasını
engelleyecek algı seviyesinde birlikte çalışmasını temin etmek gerekecektir.</p>
      <p>Bu bildiride TÜBİTAK BİLGEM Bilişim Teknolojileri Enstitüsü'nde yürütülen,
Türkiye'de alanında bir ilk olan gerçek-zamanlı bir sistemin Ar-Ge projesinde,
Sorunlu aşamadaki bir projenin Başarısız olarak sonuçlanmaması sürecinde kazanılan
yazılım proje yönetim tecrübesi paylaşılacaktır.</p>
      <p>Bölüm 2'de projenin Sorunlu durumu tespiti ve iletişimi için yapılanlar anlatılacak
olup, Bölüm 3'de durum tespitinin ardından alınan önlemlere değinilecektir. Bölüm
4'te proje yönetiminin bu aşamadaki rolünden bahsederken, Bölüm 5'te genel bir
değerlendirme yapılacaktır.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Farkındalık Sorumluluk Getirir</title>
      <p>Sorunlu duruma gelmiş projelerde zaman yetersizliğinden dolayı proje yöneticisi
ve ekip üzerinde fazla mesai ile adeta nefes almadan çalışmaları için yoğun bir baskı
vardır; durmaya zaman yoktur. Sorunlu projelerin Başarısızlık ile sonuçlanmasında bu
bakış açısının önemli bir katkısı vardır. Bu tür durumlarda öncelikle proje
yöneticisinin bir adım geri çekilerek projenin ve proje ekibinin genel resmine bakarak
durum tespiti yapması, proje Başarısızlık ile sonuçlanmadan önce bir nevi hasar
kontrolü yapabilmek için tüm paydaşlara kabiliyet kazandıracaktır.</p>
      <p>(a) Kaostan Düzene İlk Adım</p>
      <p>Proje planına göre belli dönemlerde projenin resmini çekmek genelde uygulanan
bir tekniktir. Proje resmini çekerken genelde teknik ve takvimsel faktörler
değerlendirmeye alınır. Biz, bu projede proje çalışanları ve müşteri tarafı dahil tüm
paydaşlardan projenin mevcut durumunu incelemelerini istedik. Bu çalışmada, sadece
teknik ve takvimsel faktörler değil bunların yanısıra proje yönetimi, proje ekibinin
takım çalışması, çalışma ortamı ve geliştirme ortamı dahil çok çeşitli konularda
paydaşların görüşlerini ve düzeltici önerilerini aldık.</p>
      <p>Mevcut Durum Analizi (MDA) adını verdiğimiz bu aşamada paydaşlardan durum
değerlendirmelerinin yanında düzeltici önerilerini de almamız tüm paydaşların
projenin belirlenen hedeflere bağlılığını ve proje çıktılarında pay sahibi olma
algılarını pekiştirmiştir. Böylece, projenin kalan süresinde tüm gelişmelerin
paydaşlara iletişiminde kolaylık sağlanmıştır.
(b) Hasar Kontrolü</p>
      <p>
        Yazılım projeleri başarısızlık faktörleri Chaos raporu yaklaşımından farklı olarak
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]'te incelenmiştir. Yaptığımız MDA raporunda bu faktörlerden (i) risklerin proje
yaşam döngüsü süresince kontrol edilmesi, izlenmesi, (ii) personelin projede
çalışmaktan hoşnutsuz olması, (iii) değişiklik kontrolünün etkin biçimde
yönetilmemesi gibi etkenlerin proje başarısızlığında yüksek tesiri olduğu
görülmektedir. 2.a'da anlattığımız MDA‘da ortaya çıkan bulgular bize bu üç ana
başlıkta aksaklıklar yaşandığını göstermiştir.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Yazılım Süreçleri İyileştirme ve Bilgiye Dayalı Yönetişim</title>
      <p>
        Proje başlangıç aşamasında üzerinde yoğun çalışılan İş Kırınım Ağacı (İKA: Work
Breakdown Structure) katı bir halde olmak zorunda değildir. İKA, proje planı ve
takvimi hazırlanırken temel dayanak noktasıdır. Şu kabul edilen bir gerçektir ki proje
planları yaşayan belgelerdir, projenin yaşam döngüsü içinde sürekli izleme ve
kontroller ile gerektiğinde değişime açıktır [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. İKA'lar da projenin ilerleyen safhalarında
kapsam değişikliklerine göre özellikle Ar-Ge projelerinde değişiklik yaşayabilir.
Özellikle proje takvimindeki kritik yol bu değişiklikten etkilenecektir.
      </p>
      <p>(a) İster Tabanlı İş Takibi</p>
      <p>DO-178B Seviye-A yazılım kılavuzu gereği bu yazılım projesinde İster Yönetim
Sürecinde müşteri isterlerinden test durumlarına kadar çift taraflı izlenebilirlik
sağlanması gerekiyordu. İzlenebilirlik, kullanılan araçlarının uyumlu seçilmesi ile
yönetilmiştir.</p>
      <sec id="sec-3-1">
        <title>Yazılım Modelleme Aracı</title>
        <p>İster Yönetim Aracı
Konfigurasyon Yönetim Aracı
Test Durumları Tanımlama
Aktivite/Hata Yönetim Aracı
İster tabanlı yönetimini kolaylaştırmak için yazılım isterlerininin her birini
Clearquest aracında “Aktivite„ olarak tanımlayıp, her istere bağlı alt aktiviteler
oluşturarak tamamlanma oranını doğru biçimde takip ettik. Her isterin tamamlanması
için iki temel durumu tanımlayarak bunların ister tabanlı takibini yaptık (Şekil-1).</p>
      </sec>
      <sec id="sec-3-2">
        <title>Yazılım İsteri</title>
        <sec id="sec-3-2-1">
          <title>Entegrasyon</title>
        </sec>
        <sec id="sec-3-2-2">
          <title>Aktivitesi</title>
        </sec>
        <sec id="sec-3-2-3">
          <title>Test</title>
        </sec>
        <sec id="sec-3-2-4">
          <title>Aktivitesi</title>
        </sec>
        <sec id="sec-3-2-5">
          <title>Birim Kodlama</title>
        </sec>
        <sec id="sec-3-2-6">
          <title>Birim Entegrasyon</title>
        </sec>
        <sec id="sec-3-2-7">
          <title>Birim Entegrasyon Birim Entegrasyon</title>
          <p>Şekil.1. İster Tabanlı İş Takibi
İster tabanlı proje yönetimi sayesinde her personel projeye olan katkısını bireysel
olarak takip edebilir duruma gelmiştir. Ayrıca, müşteriye projenin anlık ilerleme
aşamasını Clearquest üzerinden aldığımız canlı raporlar ile en doğru ve etkin biçimde
aktarabilmiş olduk (Şekil-2). Böylece müşterinin, kendisine sağlanan doğru bilgilere
dayanarak ekibe güveni ve inancını artırmış olduk.</p>
          <p>Şekil.2. İsterlerin Entegrasyon Durumu
(b) Ölçmeden Yönetemezsiniz</p>
          <p>
            Yazılım Mühendisliğine yaptığı katkılardan dolayı 1999 yılında Stevens ödülüne
layık görülen Tom DeMarco, [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ]'de yer alan kitabında, “Ölçemediğin şeyi Kontrol
Edemezsin!„ sözüyle yazılım projelerinde ölçmenin önemine değinmektedir. Yazılım
projelerinde sıklıkla göz ardı edilen ölçme faaliyetleri bir proje yöneticisi ve diğer
paydaşlar için projenin sağlıklıklı gidişatını izleyebilecekleri kalp atışlarını
dinledikleri algılayıcılar gibidir. Bu süreçte, projenin tüm paydaşlarına projenin kalp
atışları hakkında farkındalık oluşturmak ve sürekli güncel tutmak için gerekli ölçüm
metriklerini aşağıdaki tabloda olduğu gibi tanımladık:
          </p>
          <p>Tablo 2 Ölçüm Metrikleri</p>
          <p>Ölçüm Metrikleri
1. Haftalık Açılan ve Kapatılan Hata Sayıları
2. Yazılım Geliştiricinin Üzerinde Açık Yazılım İsterleri
3. Yazılım Mühendisinin Üzerinde Açık Hata ve Düzeltmeler
4. Yazılım İsterlerinin Gerçekleme ve Doğrulama Oranı
Ölçüm Metrikleri
5. Yazılım Bileşenleri Entegrasyon Oranı
6. Sistem İsterlerinin Gerçekleme ve Doğrulama Oranı
7. Risk Durumları</p>
          <p>(c) Araçlar Hayat Kurtarabilir</p>
          <p>Proje ekibinin ortak bir dili konuşuyor olması grup etkileşiminde oldukça
önemlidir. Ayrıca, proje sürecinde oluşturulan verilerin ortak bir havuzda toplanması,
daha sonra bu verilerin derleme ve değerlendirmesi için büyük kolaylık sağlayacaktır.</p>
          <p>Projenin tamamlanmasına kısa süre kalmasına rağmen proje ekibinin birlikte
çalışabilirliğini ve dolayısıyla proje için belirlenen kalite kriterlerine erişilmesini
temin etmek için yazılım mühendisliği geliştirme ortamını tekrar gözden geçirdik.
Değerlendirmelerimiz sonucunda projenin tüm çalışanlar tarafından izlenebilirliğini
artırmak için 3.b'de belirttiğimiz metrikleri her personele özgü sorgular olacak
biçimde Rational Clearquest aracında tanımladık. Clearquest aracında üretilen “kişisel
iş maddeleri„, “kişisel hata durumları„, “kişisel sorumlu olunan yazılım isterleri
durumları„ sorgularının çıktıları, yazılım geliştirme ortamımız olan Eclipse'e entegre
edilerek, proje yönetimi ve proje personeli arasında sürekli entegre bir etkileşim
kurulmuş oldu. Proje yöneticisinin günlük ve haftalık ekip değerlendirmelerinde her
personel özelinde sistemin tamamına yapılan katkının değerlendirmesini niceliksel
bilgiye dayalı yapabilmesi, yöneticinin proje ve ekip üzerindeki kontrolünü
artırmıştır.</p>
          <p>4. Liderlik</p>
          <p>Bölüm 2'de tüm paydaşların projenin mevcut durumu hakkında doğru ve
zamanında bilgi sahibi olmaları, yani proje hakkında kendi ilgilendikleri çerçevede
farkındalıklarının arttırılmasından bahsetmiştik. Proje yöneticisinin “Farkındalık
Sorumluluk Getirir!„ yaklaşımını gerek proje ekibi gerekse projenin tamamlanmasına
katkı sağlayacak ekip dışındaki paydaşlara benimseterek projenin Sorunlu da olsa
tamamlanmasını temin etmesi için çaba göstermesi beklenir.</p>
          <p>
            Kouzes ve Posner “Liderlik Mücadelesi„ [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ] isimli kitaplarında kurumlarda sıradışı
işler yapabilmek için bir liderin yapması gerekenleri anlatmaktadır. Sorunlu aşamaya
gelen bir projede alışılagelmiş pratikler olumsuz sonuç doğurduğu farkındalığı
oluşturmak için “Statükoya Karşı Gelmek„ (Challenge the Status Quo) ilk atılması
gereken adımdır.
          </p>
          <p>
            Kaos dönemlerinde proje ekibi belirsizliğe sürüklenen bir gemide gibi hisseder,
dolayısıyla takım çalışması ilkeleri zedelenir. Bu durumu düzeltmek ortak hedef
birliği oluşturmak (Inspiring a Shared Vision [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ]) ile mümkün olacaktır. Bölüm 2'de
sözünü ettiğimiz anket çalışmasında elde ettiğimiz kusurlardan birisi de projenin
mevcut durumu ve ne zaman biteceğine dair belirsizliklerin olmasıydı. Belirsizlikleri
en aza indirerek tüm personeli aynı ortak hedefe inanmasını sağladığınızda ekibiniz
sizinle birlikte projeyi kurtarmak için özverili ile çalışacaktır [
            <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
            ].
          </p>
          <p>
            Karmaşa durumlarında liderlik eden kişinin tek başına her alanda başarıya ulaşması
mümkün değildir. Bu yüzden ekip arkadaşlarını da mücadeleye katılmalarını
sağlayacak motivasyonlar üretmesi gerekir (Enabling Others to Act) [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ]. Projenin
ilerlemiş aşaması olmasına rağmen insanların sorumluluk almasını sağlayacak alt
ekiplerin yeniden şekillendirilmesi, personelin ufak başarılarını dahi topluluk
karşısında taltif etmek, ürünün kalitesinin artımına neden olan faaliyetleri ekibin
toplam kalite algısını artırıcı sembolik ödüllerle ödüllendirmek gibi detaylarla
ekibimizin takım olarak toplam kaliteye katkılarını artırdık. Yazılımda bulunan
hataların ekibin motivasyonunu olumsuz etkilememesi için bunları „İyileştirme
Fırsatı“ olarak lanse ederek hataların tespitini teşvik edici bir motivasyon oluşturduk.
Çünkü, müşterinin kullanımına açılmadan önce üründe tespit edilen her hata,
ürünümüz için bir iyileştirme fırsatıdır.
          </p>
          <p>
            Proje yöneticisi ekibine nasıl çalışmaları gerektiğini en etkin, kendisi uygulayarak
anlatabilir (Modeling the Way [
            <xref ref-type="bibr" rid="ref5 ref8">5, 8</xref>
            ]). Bu projede proje yönetimi olarak projenin ister
tanımlama safhasından kalite gereksinimlerinin uygulanmasına, gözden
geçirmelerden birim testlere kadar her aşamasında ekip ile birlikte çalışarak hangi
adımda hangi kalitede sonuç beklediğimizi ekibimize anlattık. Böylece ekibin
kendilerinden talep edilen disiplin ve titizlikte çalışma konusunda kolaştırıcı bir fayda
elde ettik.
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>5. Sonuç</title>
      <p>Bu bildiride TÜBİTAK BİLGEM BTE‘de yürütülmüş olan, savunma sanayi
alanında Türkiye için ilk olan özgün bir gerçek-zamanlı gömülü sistem yazılım
projesinde edindiğimiz proje yönetim tecrübesini paylaştık. Bildiride aktarılan
yöntemler uygulanarak, Başarısız olarak kapatılma aşamasına gelmiş bu projenin tüm
paydaşların sorunların çözümüne katkısı sayesinde zaman aşımı ile de olsa Sorunlu
sınıflandırmasında tamamlanmasını gerçekleştirdik. Bu sonucu elde ederken sadece
teknik önlemler değil aynı zamanda paydaşların farkındalığını arttırarak ve daha çok
katılımını temin edecek insani faktörleri de yoğun olarak kullandık. Bu yüzden, proje
yönetiminde insan faktörünün yönetiminin etkisini de tecrübe ettik. Bu nedenle
Başarısızlığa giden projelerin Sorunlu proje olarak tamamlanması için daha çok
araştırma ve önleyici tedbirler geliştirilmesi gerektiğine inanıyoruz.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>DeMarco</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , “Controlling Software Projects: Management, Measurement, and Estimation„, Book, Prentice
          <string-name>
            <surname>Hall</surname>
            <given-names>PTR</given-names>
          </string-name>
          ,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>“</surname>
            <given-names>DO</given-names>
          </string-name>
          <source>-178B, Software Considerations in Airborne Systems and Equipment Certification„, RTCA</source>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>“Proje</given-names>
            <surname>Yönetimi Bilgi Birikimi Kılavuzu (PMBOK Kılavuzu</surname>
          </string-name>
          <article-title>)„</article-title>
          , PMI-TR,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Cerpa</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verner</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          , “Why Did Your Project Fail?„,
          <source>Communications of the ACM</source>
          ,
          <year>December 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Kouzes</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Posner</surname>
            ,
            <given-names>B.Z.</given-names>
          </string-name>
          , “The Leadership Challenge„,
          <source>Josse-Bass Publishers, 1st Edition</source>
          , California,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>“The</given-names>
            <surname>Chaos Manifesto 2013 - Thing Big</surname>
          </string-name>
          Act Small„, The Standish Group International Inc.,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <source>[7] “The Chaos Report„</source>
          , The Standish Group International Inc.,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Papke-Shields</surname>
            ,
            <given-names>K.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beise</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Quan</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , “
          <article-title>Do project managers practice what they preach, and does it matter to project success?„, Intl</article-title>
          . Jrnl. of Prj. Mang.,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>