<!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>Yazılım Maliyet Tahmininde İşlev Puanı Analizi ve Yapay Sinir Ağları Kullanımı</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mesut Keskin</string-name>
          <email>mesutkskn@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gülfem Işıklar Alptekin</string-name>
          <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 Sözcükler Yazılım Maliyet Tahmini, Yapay Sinir Ağları, İşlev Puanı Analizi</institution>
          ,
          <addr-line>Yazılım Proje Yönetimi</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Galatasaray Üniversitesi</institution>
          ,
          <addr-line>Bilgisayar Mühendisliği Bölümü, İstanbul</addr-line>
        </aff>
      </contrib-group>
      <fpage>466</fpage>
      <lpage>471</lpage>
      <abstract>
        <p>Özet. Yazılım maliyet tahmini, proje yöneticilerini her daim zorlayan işlerin başında gelmiştir. Yapılan tahmini gerçek değere yaklaştırmak, yazılım geliştirme süreci boyunca süre ve bütçe kısıtlarını daha iyi kontrol edebilmek demektir. Akademik yazında, her birinin kendine has olumlu veya olumsuz yönleri olan birden fazla tahmin yöntemi önerilmiştir. Bu makalede, özellikleri iyi bilinen bir yazılım projesinin maliyet tahmini öncelikle işlev puanı analizi (İPA) yöntemiyle gerçekleştirilmiştir. İPA'nin başlıca dezavantajları çok sayıda öznel değerlendirme içermesi ve öğrenme eğrisinin oldukça uzun olmasıdır. Ardından, aynı maliyet tahmini, yapay sinir ağları (YSA) kullanılarak yinelenmiştir. Gerçek değerlerle karşılaştırıldığında, tahminlerdeki doğruluk %90'ın üzerinde çıkmıştır. Deneysel çalışmalar sayesinde, YSA kullanılarak, gerçek sonuçlara oldukça yakın değerler bulunabileceğine inanılmıştır.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        benzer geçmiş projelerden faydalanılır. Son dönemde yapılan bir çalışmada, global
yazılım geliştirme projelerinin %28.5’unda işlev puanı analizi, %14.2’sinde sinir ağları
yaklaşımı kullanıldığı belirtilmiştir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Tüm bu değişik yaklaşımlar arasında, en çok
kullanılanı COCOMO’dur [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ][
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Regresyon esaslı olan bu tahmin yöntemiyle, süre ve
efor tahmini de yapılabilir. COCOMO seçilmiş 63 yazılım projesinin analizi sonucu
ortaya çıkarılmıştır. En bilinen kısıtı, yazılım geliştirme hayat döngüsünün ilk
evrelerinde yapılan proje büyüklüğü tahmininin çok belirsiz olmasıdır. Ayrıca, yöntem bu 63
projeye göre önerildiği için, tekrar ayarlamasının yapılması gereklidir. Bu bildiride,
kesinliği arttırma amacıyla, yapay sinir ağları yöntemi içine COCOMO II’nin
parametreleri dahil edilmiştir. Algoritmik olmayan yöntemler arasında yer alan makine
öğrenmesi yöntemleri, başlıca iki sınıfa ayrılabilir: Sinir ağları ve bulanık yöntemler. Bir
yapay sinir ağı sistemi, birden fazla yapay nöron ve aralarındaki ilişkilere bağlı
ağırlıklardan oluşur. Geri yayılım (back propagation) algoritması, ağın çıktılarını gerçek
çıktılarla karşılaştıran ve yazılım maliyet tahmininde kullanılmak üzere uygun olan bir
algoritmadır [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Bildiride kullanılan iki yöntemin uygulanması için, ayrıntıları ve
içeriği iyi bilinen bir yazılım projesi olan ‘E-Bursum’ seçilmiştir. İP analizinin gerçeğe
yaklaşımı %74-%97 aralığında bulunurken, YSA ile elde edilen değerler %92-%98
aralığında olmuştur.
2
      </p>
      <p>
        Kullanılan Yazılım ve İşlev Puanı Analizi
İPA, A.J. Albrecht tarafından, kod satır sayısı (Lines of Code-LOC) yaklaşımına
alternatif olarak önerilen, akademik yazında üzerinde çok çalışılan bir maliyet
yaklaşımıdır [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Albrecht, işlev/ fonksiyon puanlarının satır sayısından çok daha belirleyici
olduğuna inanmaktadır. İPA, yazılımdaki fonksiyonları karmaşıklıkları ve yaptıkları
işlere göre sınıflandırıp saymaktadır. Bunu yapmak, yöneticilerin verimliliği takip
edebilmelerini ve yazılım geliştirme maliyetlerini tahmin edebilmelerini sağlamaktadır.
Yöntemin ilk aşamasında, UFP (Unadjusted Function Points) hesaplanmaktadır.
Ardından bu değerler, VAF (Value Adjustment Factor) kullanılarak İP (Fonksiyon/İşlev
Puanı) hesaplamakta kullanılacaktır [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Kullanılan yazılımdaki bileşenler, karmaşıklık
seviyelerine göre beş sınıfa ayrılmıştır (Tablo 1). Projedeki her dosyanın, Tablo 1’deki
verilere göre hesaplanan bir UFP değeri mevcuttur. UFP değeri, aşağıdaki denklem
uyarınca hesaplanır:
      </p>
      <p>UFP = [│Harici girdi│* w1] + [│Harici çıktı│* w2] + [│Harici sorgu│* w3] +
[│Dahili dosya│* w4] + [│Harici arayüz│* w5] (1)
Öğrencilere burs bulmak/atamak için kullanılan ‘E-Bursum’ projesinin başlıca üç
modülü bulunmaktadır: Finans, çevrim içi akıl hocalığı (mentoring), öğrenci işleri. Tablo
2 her modülün bileşenleri karmaşıklıklarına göre özetlemiştir.</p>
      <p>Tablo 2. Modüler, bileşenler ve karmaşıklıkları
Modül 1: Bileşenler
Giriş ekranı
Burs başvurusu
Profil bilgileri
Başvuru ekranı
Eski öğrenciler
Duyurular
Sohbet</p>
      <p>Düşük
Yüksek
Düşük
Yüksek
Düşük
Orta
Orta</p>
      <p>Modül 2: Bileşenler
Kayıt ekranı
Bireysel test
Mentor profili
Öğrenci profili
Eski mentorler
Duyurular
Sohbet
Mentor bulma</p>
      <p>Düşük
Yüksek
Düşük
Düşük
Düşük
Orta</p>
      <p>Orta
Yüksek</p>
      <p>Modül 3: Bileşenler
Kayıt ekranı
Blog
Sponsor profili
Öğrenci profili
Belge indirme
Burs başvurusu
Sohbet
News part
Çevrim içi mentor
Raporlar</p>
      <p>Düşük
Orta
Düşük
Düşük
Yüksek
Yüksek</p>
      <p>Orta</p>
      <p>Orta
Yüksek</p>
      <p>Orta
Üç modüle ait UFP değerleri sırasıyla, UFP1, UFP2 ve UFP3 olarak tanımlanmıştır.</p>
      <p>UFP1= [(1*3)+(2*5)+(2*6)]+[(2*4)+(2*6)+(1*7)]+ [(1*5)]+[1*13] = 70
UFP2= [(1*3)+(2*5)+(2*6)]+[(3*4)+(2*6)+(1*7)] +[1*13] = 69</p>
      <p>UFP3= [(1*3)+(2*5)+(2*6)]+[(2*4)+(2*6)+(1*7)]+[1*5] = 57</p>
      <p>UFP değerlerinin hesaplanmasının ardından, VAF değerleri yardımıyla son işlev
puanları (İP) hesaplanabilir. VAF, 0 (en düşük) ve 5 (en yüksek) seviyeleri arasında
değerlendirilen 14 genel sistem özelliğinden oluşmaktadır. Bu 14 değerin toplamı toplam
etki derecesini (Total Degree of Influence-TDI) vermektedir.</p>
      <p>
        Tablo 3. VAFs – Genel Sistem Özellikleri (GSCs) Değerlendirmesi [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
6
7
Buna göre TDI1 = 44, TD2 = 34, TD3 = 56.
      </p>
      <p>Üç modülün 14 GSC açısından değerlendirmesi Tablo 3’de yapılmıştır. Sonraki
adımda üç modüle ait TDI değerleri, TDI1, TDI2, ve TDI3, hesaplanmıştır.</p>
      <p>Teknik bakış açısıyla yazılımın boyutunu ölçen etmen olan Technical Complexity
Factor (TCF) denklem (3) kullanılarak hesaplanabilir:</p>
      <p>
        Proje büyüklüğünü/maliyetini satır sayısı parametresiyle tahmin etmek yaygın
kullanılan bir yöntemdir. Satır sayısı esaslı tahminler, geçmiş tecrübelere dayandığı için,
çoğu zaman bilimsel olmamakla eleştirilmektedirler. İPA, sade bir tahmin yöntemi
olduğu için, programlama bilgisi az olan kişiler tarafından bile kullanılabilmektedir.
Kodun büyük kısmının girdi ve çıktılardan oluşan tip projelere daha uygundur. Ancak,
projeler her zaman böyle değildir. Buna bir çözüm olarak, İPA’ne bir ek olarak Feature
Point yaklaşımı ortaya atılmıştır [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Bu yaklaşım, girdi ve çıktılarla birlikte, kullanılan
algoritmaları da göz önüne alarak toplam karmaşıklığı hesaplamaktadır.
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>Yapay Sinir Ağları Yaklaşımı</title>
      <p>
        Sinir ağlarını eğitmeye yarayan birden fazla algoritma olsa da, geri yayılım (back
propagation) algoritması kullanılmıştır. YSA’daki her katman nöronlar ve bunlar
arasındaki ilişkilerden oluşmaktadır [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Nöronlar arasındaki ağırlıklar öğrenme sürecinde
kullanılmaktadır. Geri yayılım algoritması, girdiler ve elde edilmesi istenen çıktıları
alarak, ağırlıkları bu iki kümeyi birbirine yaklaştırmak için ayarlar [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. YSA
yaklaşımının performansını arttırmada seçilen parametre kümesinin rolü büyüktür. Parametre
kümesi seçimi için öncü çalışmalardan birinde, COCOMO’nun ölçüt kümesi alınmıştır
[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Önerdiğimiz çalışmada, COCOMO II ve [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]’de önerilen parametre kümesi
üzerine, görsel kalite ve rekabet gibi iki parametre daha eklenmiştir. Önerilen sinir ağı
Şekil 1’de gösterilmiştir. YSA yaklaşımı sonuçları, gerçeğe daha yakın sonuçlar elde
edilmesini sağlamıştır (Tablo 5).
Şekil 1. Önerilen yapay sinir ağı topolojisi
      </p>
      <p>Tablo 5. YSA sonuçları ve gerçek değerlerin karşılaştırılması</p>
      <p>YSA’nın tahmin ettiği satır sayısı Gerçek satır sayısı Yaklaşık
5158.5 5280 97.70%
5355.8 5620 95.30%
5751.5 6228 92.35%
4</p>
    </sec>
    <sec id="sec-3">
      <title>Sonuç ve Öneriler</title>
      <p>Bu bildiride, ‘E-bursum’ yazılımına ilk önce işlev puanı analizi uygulanmıştır. Elde
edilen sonuçlar tatmin edici bulunmuştur. İşlev puanı analizinin avantajı, maliyet
tahmininin yazılım gereksinim analizi sırasından itibaren yapılabilecek olması, uygulama
araçlarından, yöntemlerinden veya programlama dillerinden bağımsız olması ve teknik
dünyaya çok yakın olmayan kullanıcıların bile uygulayabilecek olmasıdır. İPA
sonrasında yöntem olarak, tahmin işinin daha az öznel ve otomatik şekilde yapılabilmesini
sağlayabilecek makine öğrenmesi yöntemlerinden biri olan sinir ağları seçilmiştir.
Projenin büyüklüğü ve karmaşıklığı arttıkça, İPA’nin performansı da düşmektedir. YSA
yöntemi, gerçeğe oldukça yakın tahminler vermiştir. Yazılım yaşam döngüsünün ilk
evrelerinde bile, gerçekçi tahmin yapmaya izin verebilecektir. Sinir ağında parametre
olarak seçilen ölçütler, istendiği takdirde değiştirilebilir, ekler yapılabilir. Makine
öğrenmesi yöntemlerinin, kullandıkları veri sayısı arttıkça gerçeğe daha yakın tahminler
vermesi beklenir. Şirketler maliyet tahmininde bu yöntemi uyguladıkça, tahmin
performansının artacağına inanılmaktadır. Bir sonraki çalışmada, kurulan bu yapay sinir
ağını, bilinen başka birkaç yazılım projesine daha uygulanıp verdiği sonuçlara
bakılacaktır.
5</p>
    </sec>
    <sec id="sec-4">
      <title>Destek Bu araştırma, 15.401.005 numaralı Galatasaray Üniversitesi Bilimsel Araştırma Projesi tarafından finansal olarak desteklenmektedir. 6</title>
    </sec>
    <sec id="sec-5">
      <title>Kaynaklar 1. M.E. Bajta, A. Idri, J.L. Fernandez-Aleman, J.N. Ros, A. Toval, “Software cost estimation for global software development – A systematic map and review study”,</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>M.E.</given-names>
            <surname>Bajta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Idri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.L.</given-names>
            <surname>Fernandez-Aleman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.N.</given-names>
            <surname>Ros</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Toval, “
          <article-title>Software cost estimation for global software development - A systematic map</article-title>
          and review study”,
          <source>International Conference on Evaluation of Novel</source>
          Approaches to Software Engineering,
          <year>2015</year>
          , pp.
          <fpage>197</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>I.</given-names>
            <surname>Attarzadeh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.H.</given-names>
            <surname>Ow</surname>
          </string-name>
          , “
          <article-title>A novel soft computing model to increase the accuracy of software development cost estimation”</article-title>
          ,
          <source>International Conference on Computer and Automation Engineering</source>
          , vol.
          <volume>3</volume>
          ,
          <issue>2010</issue>
          , pp.
          <fpage>603</fpage>
          -
          <lpage>607</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>B.W.</given-names>
            <surname>Boehm</surname>
          </string-name>
          , Software Engineering Economics.
          <year>1981</year>
          ,
          <string-name>
            <surname>Englewood</surname>
            <given-names>Cliffs</given-names>
          </string-name>
          , NJ.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>V.</given-names>
            <surname>Khatibi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.N.A.</given-names>
            <surname>Jawawi</surname>
          </string-name>
          , “
          <article-title>Software cost estimation methods: A review”</article-title>
          ,
          <source>Journal of Emerging Trends in Computing and Information Sciences</source>
          , vol.
          <volume>2</volume>
          (
          <issue>1</issue>
          ),
          <year>2010</year>
          , pp.
          <fpage>21</fpage>
          -
          <lpage>29</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Albrecht</surname>
          </string-name>
          , “Measuring Application Development Productivity”,
          <string-name>
            <surname>Joint</surname>
            <given-names>SHARE</given-names>
          </string-name>
          , GUIDE, and
          <string-name>
            <surname>IBM Application Development</surname>
            <given-names>Symposium</given-names>
          </string-name>
          , Monterey, California, IBM Corporation (
          <year>1979</year>
          ), pp.
          <fpage>83</fpage>
          -
          <lpage>92</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>R.</given-names>
            <surname>Meli</surname>
          </string-name>
          , L. Santillo, “
          <article-title>Function point estimation methods: A comparative overview”</article-title>
          ,
          <source>FESMA</source>
          , vol.
          <volume>99</volume>
          ,
          <year>1999</year>
          , pp.
          <fpage>6</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>L.</given-names>
            <surname>Arthur</surname>
          </string-name>
          , Measuring Programmer Productivity and
          <string-name>
            <given-names>Software</given-names>
            <surname>Quality</surname>
          </string-name>
          . Wiley-Interscience,
          <year>1985</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>C.</given-names>
            <surname>Jones</surname>
          </string-name>
          ,
          <source>The SPR Feature Point Method. Software Productivity Research Inc</source>
          .,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>A.R.</given-names>
            <surname>Venkatachalam</surname>
          </string-name>
          , “
          <article-title>Software cost estimation using artificial neural networks”</article-title>
          ,
          <source>International Joint Conference on Neural Networks</source>
          ,
          <year>1993</year>
          , pp.
          <fpage>987</fpage>
          -
          <lpage>990</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. D.S. Touretzky, D.A. Pomerleau, “
          <article-title>What's hidden in the hidden layers?”</article-title>
          , Byte,
          <year>August 1989</year>
          , pp.
          <fpage>227</fpage>
          -
          <lpage>233</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. G. Wittig, G. Finnie, “
          <article-title>Estimating software development effort with connectionist models”</article-title>
          ,
          <source>Information and Software Technology</source>
          , vol.
          <volume>39</volume>
          ,
          <year>1997</year>
          , pp.
          <fpage>469</fpage>
          -
          <lpage>476</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>O.</given-names>
            <surname>Kalıpsız</surname>
          </string-name>
          , M. Ayyıldız, “
          <source>Yazılım Geliştirme Projelerinde Maliyet Tahminleme Çalışmasında Kullanılabilecek Bir Ölçev Kümesi ve Bir Yapay Sinir Ağı Topolojisi Önerisi”</source>
          ,
          <year>2009</year>
          , YTU.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>