=Paper= {{Paper |id=Vol-2201/UYMS_2018_paper_76 |storemode=property |title=Yazilim Gelistirme Hizmetlerinin Satin Alinmasi Icin Bir Maliyet Modeli Onerisi(A Cost Model Proposal For Procurement of Software Development Services) |pdfUrl=https://ceur-ws.org/Vol-2201/UYMS_2018_paper_76.pdf |volume=Vol-2201 |authors=Aylin Deveci,Selin Caliskan,Selami Bagriyanik,Oya Gazdagi,Adem Karahoca }} ==Yazilim Gelistirme Hizmetlerinin Satin Alinmasi Icin Bir Maliyet Modeli Onerisi(A Cost Model Proposal For Procurement of Software Development Services)== https://ceur-ws.org/Vol-2201/UYMS_2018_paper_76.pdf
Yazılım Geliştirme Hizmetlerinin Satın Alınması için Bir
                Maliyet Modeli Önerisi

Aylin Deveci1, Selin Caliskan1, Selami Bagriyanik1, Oya Gazdağı1, Adem Karahoca2
                           1 Turkcell Teknoloji, İstanbul, Türkiye

       {aylin.deveci, caliskan.selin, selami.bagriyanik,oya.gazdagi}@turkcell.com.tr
                        2 Bahçeşehir Üniversitesi, İstanbul, Türkiye

                               adem.karahoca@eng.bau.edu.tr



      Özet. Bu çalışmada, Türkiye’nin büyük teknoloji ve iletişim hizmetleri sağlayıcı
      firmalarından birinde gerçekleşen yazılım geliştirme hizmet satın almalarındaki
      birim işlevsel kapsam maliyetlerini belirleyen faktörler ele alınmıştır. Firmada
      işlevsel kapsam büyüklüğü ölçüm yöntemi olarak COSMIC İşlev Puan (CFP:
      COSMIC Function Point) kullanılmaktadır. Çıkılan ihalelerdeki birim COSMIC
      İşlev Puan maliyetlerinin referans bir maliyet modeli baz alınarak belirlenmesi,
      satın alması yapılan hizmetin maliyet kontrolü, saydamlığı ve risklerinin
      yönetilmesi açısından oldukça önemlidir. Aynı zamanda birbirine benzer
      teknolojik dinamiklere sahip satın almaların kıyaslanabilmesine de olanak
      sağlayacaktır. Bu çalışmanın ilk fazında, maliyet modeli, ilgili literatürden ve
      şirket içi deneyimlerden faydalanılarak oluşturulmuştur. Daha sonra, model
      öncesi tamamlanmış olan geçmiş ihalelerdeki bazı örnek veriler bu modele göre
      toplanmış ve tasnif edilmiştir. Üçüncü adım olarak maliyet modelindeki bazı
      faktörler için toplanan verilere ilişkin istatistikler paylaşılmıştır. Gelecekte,
      modele uygun şekilde toplanan geçmiş ihale verilerinin örnek sayısı arttırılarak
      kayıt altına alınacaktır. Bu veriler, yeni ihalelerin birim fiyatının öngörülmesinde
      kullanılacak olan makine öğrenmesi yöntemlerinin eğitilmesinde ve testinde
      kullanılacaktır.

      Anahtar Kelimeler: Cosmic İşlev Puan, Yazılım Geliştirme Maliyeti, İşlevsel
      Büyüklük, Yazılım Geliştirme Satın Alması
    A Cost Model Proposal For Procurement of Software
                  Development Services

Aylin Deveci1, Selin Caliskan1, Selami Bagriyanik1, Oya Gazdağı1, Adem Karahoca2
                           1 Turkcell Technology, İstanbul, Türkiye

        {aylin.deveci, caliskan.selin, selami.bagriyanik,oya.gazdagi}@turkcell.com.tr
                          2 Bahçeşehir University, İstanbul, Türkiye

                               adem.karahoca@eng.bau.edu.tr




       Abstract. In this study, the effort cost factors of the unit functional scope of
       software development procurements in one of the Turkey’s largest technology
       and communications services company are investigated. The company uses the
       COSMIC Function Point (CFP) as the method of measuring the functional scope
       size. Using a reference model for the CFP unit cost in the ongoing tenders are
       very important in terms of cost control, transparency and risk management of the
       procured software development service. At the same time, it will also allow for
       the comparison of procurements with similar technological dynamics. In the first
       phase of the study, the cost model was derived from relevant literature and in-
       house experience. Some sample data of past tenders that were completed before
       the model were then collected and classified based on this model. As a third step,
       statistics on the collected data for some factors in the cost model are presented.
       In the future, more data points will be collected and this data will be used in the
       training and testing of machine learning models that will be used in predicting
       the unit CFP cost of new tenders.

       Keywords: Cosmic Function Point, Software Development Cost, Functional Size,
       Software Development Procurement


1      Giriş
   Dijitalleşmenin önemli olduğu sektörlerde, satın alma faaliyetleri bir kuruluşun
yıllık maliyetlerinin önemli bir kısmını oluşturur ve alınacak ürünün ya da hizmetin
maliyeti üzerinde önemli bir etkiye sahiptir. Satın alma odakları bu kuruluşların
piyasada rekabetçi kalmaları için hız, verimlilik ve maliyet faydaları üzerine
kurulmalıdır. Firmalar, satın alma süreçlerinin verimliliklerini artırmak için maliyetleri
optimize etmek, iç süreç optimizasyonu, diğer firmalarla birlikte inovasyon gibi
faydalar sağlamak adına çeşitli projelerde/hizmetlerde dış kaynak alımları yapmaktadır.
Son yıllarda verinin hızla büyümesi ve bu ham verinin işlenmesine duyulan ihtiyaçla
yazılım üretimine dayanan sektörlerde, dış kaynaklara duyulan ihtiyaç hızla
artmaktadır.
   Turkcell gibi yazılım üretimi üzerine faaliyet gösteren şirketlerin tüm üretimlerini
kendi kaynakları ile gerçekleştirmesi, teknolojik ihtiyaçların sürekli farklılaşması ve
şirketlerin bu ihtiyaçlara en hızlı şekilde cevap verebilmesi açısından mümkün değildir.
Bu yüzden şirketler yazılım üretiminde dış kaynak kullanımı yoluna gitmektedirler. Dış
kaynak kullanımı yoluyla gerçekleştirilen tasarruflar, şirketlerin kendi içlerinde diğer
kritik girişimlerin tahsis edilebilme kabiliyetini artırmaktadır. Dış uzmanlardan
yararlanmanın pek çok avantajı olsa da, bu uygulama özellikle yazılım geliştirme
alanında önemli riskler doğurmaktadır. Yazılım geliştirmenin dış kaynak kullanımını ele
alırken, dikkate alınması gereken bir takım unsurlar vardır. Teknik yetenek kümelerinin
doğru birleşimini bulmak, dışarıdan temin edilen ve içerde çalışan ekip üyeleri arasında
verimli iletişimi teşvik etmek, en iyi uygulamalar ve süreçler konusunda anlaşmaya
varmak ve takım olarak proje hedefleri, kapsamı ve çalışılan zaman aralıkları üzerinde
uyum sağlamak gibi etmenler dış kaynak süreçlerinin karmaşıklığını artıran unsurlardır
[1]. Yazılım geliştirme üzerine yapılan dış kaynak alımları için, alınacak hizmetin
kapsam büyüklüğünün tahminlenmesine olanak tanıyan yöntemlerin kullanılması, satın
alınacak iş gücünün doğru tahlil edilmesine ve bu doğrultuda planlamalar yapılmasına
olanak tanıyarak karmaşıklığı yönetme konusunda etkili sonuçlar vermektedir.
     Turkcell, bu karmaşıklığı yönetmek amacıyla yazılımların kapsam büyüklüklerini
 ölçmek için, CFP yöntemini satın alma ve yazılım süreçlerine eş zamanlı olarak adapte
 etmiştir[2,3,4,5]. CFP metodu, yazılım endüstrisinde yaygınlık kazanmaya başlayan,
 aynı zamanda bir ISO standardı da olan objektif bir fonksiyonel büyüklük ölçüm
 metriğidir [6]. Yazılım dış kaynak süreçlerinde netlik sağlamakta güçlük çekilen
 noktalardan biri, çalışılan yazılım için harcanan eforun hesaplanmasının kişiden kişiye
 göre farklılık göstermesidir; bu farklılığı minimize etmek ve hesaplamaları daha
 objektif hale getirebilmek için CFP gibi işlevsel büyüklük ölçüm yöntemleri
 kullanılabilmektedir. Uzman görüşüne dayalı yazılım maliyet tahminleme ve bütçeleme
 yöntemleri subjektif olduğu için CFP gibi objektif işlevsel büyüklük ölçümüne dayalı
 maliyet modelleri, alınan yazılım geliştirme hizmetinin eforunun hesaplanması ve tüm
 paydaşların maliyetlerini/ kazançlarını daha objektif ve görünür bir şekilde
 belirlemeleri açısından faydalı bir yöntemdir.
     Dış kaynak kullanımı belirli bir sözleşme kapsamında yapılmakta olup, CFP
 metoduna geçilmeden önce ödemeler dış kaynağın harcadığı gün sayısı ile çalışan –
 gün birim fiyatı çarpılarak belirlenmekteydi. Bu ödeme yöntemi, işin çıktısını baz
 almayıp iş için harcanan eforu baz aldığı için, firmanın verimlilik boyutu göz ardı
 edilmekteydi. Bu değişiklik ile hedeflenen, iş için harcanan zamanın takibinden ziyade,
 işin belirlenen üretim ve kalite standartlarını karşılamakla yükümlü çıktılarıdır. Bu
 nedenle, işgücünü dikkate alarak kaynak kiralama yöntemiyle ödeme yapılması yerine,
 yazılımın işlevsel büyüklüğünün temel alınması, hem hizmeti alan hem de veren
 firmaların maliyetlerini optimize etmelerine yardımcı olmaktadır.
     Metodun, toplam satın alma maliyetine olumlu etkilerinin yanında, beraberinde
 getirdiği yeni sorular da ortaya çıkmıştır. Alınacak hizmetler için yapılan ihalelerde,
 birim CFP için verilen teklifler farklılıklar göstermektedir. Aynı firma, farklı işler için
 yapılan satın alma ihalelerinde birim CFP için farklı teklifler verebildiği gibi, bir
 ihaleye katılan firmaların birim CFP için verdikleri teklifler arasında büyük farklar da
 bulunabilmektedir. Yapılan ihalelerdeki birim CFP maliyetlerinin referans bir maliyet
 modeli temel alınarak belirlenmesi, satın alması yapılan hizmetin maliyetinin kontrol
edilmesi, satın alma sürecinin daha saydam ve objektif ilerlemesinin yanı sıra
risklerinin yönetilmesi açısından da oldukça önemlidir. Aynı zamanda birbirine benzer
teknolojik dinamiklere sahip satın almaların kıyaslanabilmesine ve bu doğrultuda, her
iki paydaş için de daha sağlıklı ihale süreçlerine olanak sağlayacaktır.
   Bu çalışmanın amacı, birim CFP maliyetlerinin değişkenlik göstermesinde etki ettiği
varsayılan faktörlerin analizinin yapılıp, kategorize edilmesidir. Bu çalışma üç fazda
yapılacak olup, ilk fazında maliyet modeli ilgili literatürden ve şirket içi deneyimlerden
faydalanarak tasarlanmıştır. İkinci fazında, modeli oluşturmadan önce CFP metriği
kullanılarak yapılan ihalelerdeki bilgiler bu modele göre toplanmış ve kapsam
büyüklüğü, fonksiyonel yükümlülükler, teknik kısıtlar ve yer aldıkları iş portföyleri
olarak tasnif edilmiştir. Son olarak, Türkiye yazılım geliştirme tedarikçi ekosistemi için
faydalı olabilecek tasnif edilmiş verilere ilişkin bazı istatistikler paylaşılmıştır.


2      Geçmiş Çalışmalar

Yazılım geliştirme hizmetinin ölçümlemesinde yöntem olarak işlevselliğin
kullanılması ilk kez 1979’da Albrecht tarafından ortaya çıkarılmıştır [7]. 2013 yılından
itibaren CFP: COSMIC Function Point, FİSMA, IFPUG, NESMA gibi farklı işlevsel
büyüklük ölçüm yöntemleri ISO tarafından kabul edilen standartlardır [8,9,10,11]. Bu
yöntemler içerisinde IFPUG’dan sonra, Cosmic İşlev Puanı yöntemi yazılım
büyüklüğünü ölçmek amacıyla kullanılan en yaygın yöntemdir [3]. Türkiye’nin önde
gelen deneyim ve teknoloji sağlayıcı firmalarının birinde de CFP yöntemi yazılımın
işlevsel büyüklüğünü ölçmede tercih edilen bir yöntem olmuştur [2].
    İşlevsel büyüklük ölçüm yöntemlerinin başlıca kullanım alanlarından biri de satın
alma yöntemidir. Türkiye’nin en büyük teknoloji ve iletişim hizmetleri sağlayıcı
firmalarından birinde gerçekleştirilen çalışmaya göre CFP yönteminin, yazılım
geliştirme hizmeti satın alma süreçlerinde kullanılması, özellikle tedarikçi firma ile iş
yaptıran firma arasında objektif maliyet hesabı yapılabilmesi konusunda olumlu
sonuçlar ortaya çıkarmıştır [4].
    Satın alınan yazılım geliştirme hizmetinin işlevsel olarak büyüklüğü objektif olarak
CFP gibi ölçüm yöntemleriyle ortaya konmasına rağmen 1 CFP büyüklüğündeki bir
ürünün maliyetinin değişkenlik göstermesinin altında yatan faktörler bu çalışmanın
konusunu oluşturmaktadır.Literatüre girmiş çalışmalar incelendiğinde yazılım
maliyetinin hesaplanması konusunda çeşitli araştırmalar yapıldığı görülmüştür.
    Demirörs, Karagöz ve Gencel yaptıkları çalışmada yenilikçi bileşenler içeren
yazılım projelerinin satın almasının kuruluşlara çeşitli zorluklar getirdiğini belirtmiş ve
bir askeri yazılım geliştirme projesinin satın almasından elde edilen tecrübeleri
paylaşmışlardır. Vaka çalışmasında ele alınan projenin boyutu MkII işlev puanı
yöntemiyle hesaplanarak efor tahminlemesi yapılmıştır. Bu çalışma ile sabit fiyatlı
sözleşmelere son ürünün işlevsel büyüklüğünü önceden tanımlayan şartlar ekleyerek
sözleşmeleri uygun hale getirmenin, yinelemeli geliştirme yaşam döngüsü planlamanın,
her fazda sabit miktarda işlevsellik içeren geliştirme yapılmasının, bunlara dayanarak
tahminleme yapılmasının ve bağımsız kalite güvence ekipleri aracılığıyla projenin
kalitesinin sağlanmasının hem satın alan hem de tedarikçi kuruluşlar için faydalı olacağı
sonucuna varılmıştır [12].
   Yazılım geliştirme hizmeti maliyetlerinin CFP yöntemine göre ölçümlendiği
durumlarda CFP birim maliyetlerini etkileyen faktörler bulunmaktadır. Temel olarak
satın alması yapılacak yazılım geliştirme hizmetinin kapsam büyüklüğü, iş alanı
(müşteri ilişkileri yönetimi, kurumsal kaynak planlama), teknoloji seti (programlama
dili, kod kalitesi, işletim sistemi, veri tabanı vs), insan ve projeler (ekip tecrübesi, iş
öncelikleri ve riskleri) CFP birim maliyetini etkileyen başlıca faktörler olarak ele
alınmıştır [13, 14, 15, 16, 17].
   Jones, zaman geçtikçe işletim sistemlerinde ve yardımcı programlarda yapılan
iyileştirmeler sayesinde iş problemlerini çözecek yazılımlar geliştirmek için gerekli
teknik ek yük azalmış olsa da 2008 yılında bile hala yazılım geliştirme için harcanan
eforun %15 ile %50'si uygulamaların kendileriyle ilgili iş sorunlarıyla değil teknik
platform konularının çözümünden kaynaklandığını belirtmiştir. Gömülü yazılımların
birim işlev puanı maliyetinin web uygulamalarından yüksek olmasının sebeplerinden
biri olarak web geliştirmelerinde teknik ek yükün gömülü yazılımlara oranla daha az
olmasını göstermiştir [18].
   Radford ve Lawrie’nin yazılım geliştirme sözleşmelerinde işlev puanının rolünü
inceledikleri çalışmada yazılım geliştirme fiyatlandırmasının “birim başına ücret”
temeline dayandığını ve en yaygın olarak kullanılan birimlerden birinin de birim işlev
puanı için sabit fiyat ödeme yaklaşımı olduğu söylenir. Birim işlev puanı başına sabit
ücret ödenmesi yaklaşımında 1 işlev puanının sabit ücretinin tahminlenmesinde ürün
boyutu, kullanılan teknoloji (platform veya yazılım dili gibi) , sorunların ve seçilen
çözümlerin karmaşıklık seviyesi (performans, kullanıcı ara yüzü gibi), proje kısıtları
veya hedefleri gibi başlıca ürün özelliklerinin etkili olacağına değinilmiştir.
Araştırmanın sonucunda birim işlev puanı başına sabit fiyat yaklaşımının makalede
bahsedilen toplam teslimat için sabit fiyat veya belirli zaman periyodu için sabit fiyat
gibi diğer alternatif yaklaşımlara göre avantajlarının fazla olduğu sonucuna varılmıştır
[19].
   Beata Czarnacka-Chrobot tarafından yapılan vaka çalışması da 1 IFPUG yöntemi
işlev puanının maliyetinin ne olduğu üzerinedir [20]. Makalenin amacı IFPUG
yöntemindeki bir işlev puanı (FP) baz alınarak yazılım sistemi geliştirmelerinde birim
başına maliyetin analiz edilmesi ve özellikle birim başına sunulan maliyetlerin
karşılaştırılmasıdır. Yapılan araştırmada ISBSG’nin (Uluslararası Yazılım Kıyaslama
Standartları Grubu) veri havuzu ile diğer kaynaklardan gelen karşılaştırmalı veriler
toplandığında IFPUG yöntemindeki 1 FP’nin (işlev puanı) maliyetinin ülkeden ülkeye,
proje ile yazılım sistemi türüne ve büyüklüğüne, uygulamanın teknik alt yapısına
(donanım, programlama dili) göre ne kadar değişkenlik gösterdiği araştırılmıştır.


3      Yöntem

Common Software Measurement International Consortium (COSMIC) tarafından
tescillenerek bir ISO standardına dönüşen CFP metodu tüm dünyada geçerli bir işlevsel
büyüklük ölçüm yöntemi olmuştur [4]. CFP yönteminde ölçüm süreci 3 ana aşamadan
oluşur: Ölçüm stratejisinin belirlenmesi, eşleştirmenin yapılması ve ölçme işlemi [2].
Ölçüm stratejisinin belirlenmesi aşamasında, ölçülecek yazılımın kapsam ve büyüklük
seviyesi ve sistemin fonksiyonel kullanıcıları belirlenir. Uyarlama aşamasında işlevsel
süreçler, veri grupları ve veri özellikleri tanımlanır. Son aşamada ise belirlenmiş olan
tüm işlevsel süreçlerdeki veri hareketlerine CFP ölçüm fonksiyonu uygulanır ve
işlevsel büyüklük bulunur [2]. CFP metodunun ölçüm fonksiyonunda 4 temel veri
hareketi vardır. Yazılımın işlevsel kullanıcıları (insanlar, sensörler, diğer yazılım
sistemleri) ile arasında olan veri hareketleri giriş (entry) ve çıkış (exit) olarak
adlandırılır. Yazılımın veri depolama araçları ile arasında olan veri hareketleri de
okuma(read) ve yazma(write) olarak tanımlanmıştır[4].
   CFP metodunun, yazılımın işlevsel büyüklüğünü ölçmesi sayesinde yazılım
geliştirme hizmet maliyeti de objektif olarak hesaplanabilir olmuştur. Üretimi yapılan
geliştirme kaç CFP ise birim başına belirlenen CFP fiyatı ile çarpılarak toplam maliyeti
hesaplanır [4]. Bu noktada önemli olan birim CFP fiyatının ne olacağının
belirlenmesidir. Birim CFP fiyatının ne olması gerektiği konusunda kesin bir yöntem
bulunmaması ile birlikte bu konuda daha önce yapılan çalışmalar incelendiğinde
yazılımın iş alanı ve kullanılan teknoloji setine göre bir CFP için birim fiyat bedelini
içeren katalog tablosunun yaratıldığı görülür [4]. Özellikle büyük çaplı şirketlerin
ortalama fiyat veri havuzlarının olması da birim CFP fiyat bedelinin tahminlemesinde
karşılaştırma yapabilme imkânı doğurmaktadır [4].
   Bu çalışmada, birim CFP fiyatını etkileyebileceğini öngördüğümüz faktörler bir
tabloda toplanmış ve CFP Maliyet Faktörleri tablosu oluşturulmuştur. Sonrasında
Türkiye’nin büyük teknoloji ve iletişim hizmetleri sağlayıcı firmalarından birinde CFP
yöntemiyle gerçekleştirilen yazılım geliştirme hizmeti satın alma ihale örneklerinin
verisi CFP Maliyet Faktörleri tablosu formatına getirilip verilerin dağılımına göre
sınıflandırılmıştır.


4       CFP Maliyet Faktörleri Tablosu

Geliştirmesi yapılacak yazılımın işlevsel büyüklüğünü objektif olarak CFP yöntemiyle
ölçtüğümüz noktada ilk bakışta, birim CFP’lik işin maliyetinin farklı yazılım hizmet
alımları için benzer düzeylerde olması beklense de durum bu şekilde değildir. Bu
çalışmaya konu olan ve geniş bir tedarikçi ağıyla çalışan büyük çaplı teknoloji
firmasında, CFP yöntemiyle gerçekleştirilen yazılım satın almalarında birim CFP’nin
bedelinin ihaleden ihaleye değiştiği gözlemlenmiştir. Bu değişikliğin sebeplerini somut
bir temele dayandırabilmek amacıyla 1 CFP’nin maliyetini etkileyebilecek faktörler
araştırılarak bir tabloda toplanmıştır. Araştırma kapsamında Türkiye’nin en büyük
teknoloji ve iletişim hizmetleri sağlayıcı firmalarından birinde satın alma uzmanı,
yazılım geliştirici, analist ve yazılım ekip yöneticisi olarak çalışan alanında uzman
kişilerin görüşleri alınmış ve konu ile ilgili literatür taraması yapılmıştır [16,17]. CFP
Maliyet Faktörleri tablosu olarak adlandırdığımız bu tablodaki maliyet faktörleri Tablo
1’deki gibi 5 ana başlıkta toplanmıştır: Kapsam boyutu, Beklenen üretim miktarı, İş
portföyü, Teknoloji kümesi (Alt yapısı), Teknik borç. Tabloda etki tanımı kolonu
altında gerçek olmayan bir isim ile yazılmış (ABC platformu) vaka çalışmasının
yapıldığı firmanın sahip olduğu bir platform için örnek veriler paylaşılmıştır.
                          Tablo 1. Cosmic İşlev Puanı Maliyet Tablosu

 Maliyet
              Maliyet Faktör Tanımı                                             Etki Tanımı
 Faktörü

 Kapsam       Mevcutta var olan/Yeni geliştirmesi yapılacak yazılım
 Boyutu       ürününün ölçülen/tahmin edilen Kod Satır Sayısı veya CFP
              (Bunların ölçülemediği veya tahminlenemediği durumlarda Toplam: 772 bin kod satır sayısı
              diğer metrikler (ekran sayısı, test ve kullanıcı senaryoları
              sayısı, işlevsel süreçlerin adedi) belirtilmeli)


 Beklenen     Tedarikçiden aylık bazda CFP olarak beklenen üretim miktarı 45 CFP/ay
 Üretim       (CFP/ay)
 Miktarı

              İş geliştirme alanı kapsamındaki iş alanları                     ABC platformu
                                                                               www.abc.org
 İş
              Örnek Küme 1: 3 alan içeriyor: Öğrenme Yönetim Sistemi,
 Portföyü
              ABC Portal, ABC Eski Uygulaması
                                                                               Ön yüz: Drupal, Java Script, HTML,
              Başlıca;                                                         CSS, IOS, Android
 Teknoloji
 Kümesi       •     Ön yüz          •      Arka yüz          •   Veri tabanı   Arka yüz: PHP
                                                                               Veri tabanı: MySQL

              Yazılım mimarisi, tasarım, kod kalitesi, yeniden düzenlenme      3: Çok teknik borç (Başlıca sebepler:
              gerektirmesi, güvenlik, teknik alt yapısı açılarından yazılım    Statik kod analizinin yapılmamış
 Teknik
              ürününün maliyet seviyesi. Yanlış veya eksik tasarım deseni,     olması, Drupal içerik yönetim sis-
  Borç
              kötü kodlama uygulamaları, aşırı karmaşıklık, eski çatıların     teminin güncel versiyon problemlerinin
              veya programlama dili versiyonlarının kullanılmış olması.        olması, eski kütüphanelerin var olması,
                                                                               şirket    güvenlik     ve    operasyon
              0: Sıfır Teknik Borç      3: Çok Teknik Borç                     standartlarına uyumsuz olması, mobil
              1: Az Teknik Borç         4: Çok Fazla Teknik Borç               uygulamalarının kitle kaynak yönte-
              2: Makul Teknik Borç                                             miyle geliştirilmiş olması )



4.1    Kapsam Boyutu
   Yazılımın kapsam büyüklüğü, geliştirilmesinde harcanacak maliyetin ve eforun
tahminlenmesinde girdi olarak kullanılan en önemli ölçütlerden biridir. Özellikle dış
kaynak yazılım geliştirme hizmeti satın alma sözleşmeleri, yazılımın büyüklüğü
kullanılarak yapılmaktadır [21].
   Yazılımın büyüklüğü toplam kod satır sayısı veya üzerinde geliştirme yapılacak
uygulamanın veya ürünün toplam CFP miktarı ile ölçülebilir. Kod satır sayısının
kullanımı, proje boyutunu tahmin etmek için kullanılabilecek tüm metrikler arasında
popülerdir. Çünkü kullanımı basit ve ekonomik veya verimlilik ölçütü olarak olmasa
da sayılabilir olması açısından objektiftir [6,22].Ancak kod satır sayısı kullanımının
dezavantajları bulunmaktadır. Dezavantajlardan ilki yazılımın geliştirmesi tamamlanana
kadar kod satır sayısının ölçülemeyeceğidir. İkincisi ise kaynak kod satır sayısının
gerçek tasarıma, programlama pratiklerine ve kullanılan programlama dillerine bağlı
olmasıdır. Bu sebeple aynı işlevsellik için farklı uygulama teknikleri kullanıldığında
farklı kaynak kod satır sayısı ile karşılaşılır. Öte yandan işlev puanı metriğinin bu
dezavantajları yoktur. İşlev puanı metrikleri önceden projenin gereksinim
aşamasındayken henüz ölçülebilir ve uygulama tekniklerinden bağımsızdır [6].
Yazılımın kapsam büyüklüğünün ölçülmesinde CFP yöntemi de kullanılabilir. Belirli
sabit kurallara dayalı yaklaşımı ile sabit ve öğrenmesi kolaydır [6].
   Yazılımı yeni yapılacak ürünün kod satır sayısı belirlenemediğinde ve CFP
miktarının öngörülemediği durumlarda ekran sayısı, test ve kullanım senaryolarının
sayısı, işlevsel süreçlerin adedi gibi daha az objektif metrikler ile de yazılımın kapsam
büyüklüğü tahmini olarak hesaplanabilir. Bu tür metriklerin tanımlanması, hiç ölçüm
yapılmamasından daha iyi bir duruma gelinmesini sağlar.
   Bu çalışmada, geliştirmesi yapılacak uygulamanın kapsam büyüklüğü, yazılım
geliştirme hizmeti satın alma sözleşmesindeki birim CFP bedelini etkileyen bir faktör
olarak ele alınmıştır. Diğer tüm faktörler eşit olduğunda yazılım ürünü ne kadar
büyükse birim işlev puanının bedelinin de o kadar yüksek olması beklenmektedir [19].


4.2    Beklenen Üretim Miktarı
Yazılım geliştirme hizmeti satın alacak firmanın, tedarikçi firmadan periyodik (sıklıkla
aylık periyotta) olarak geliştirmesini ve hayata geçirmesini beklediği CFP miktarı
tedarikçinin ihalede vereceği 1 CFP’nin maliyetini etkileyen bir faktör olarak
varsayılmıştır. Bu çalışmada varsayılan etki, aylık üretimi beklenen CFP miktarı
arttıkça ölçek ekonomisi etkisi nedeniyle tedarikçi firmanın 1 CFP başına daha az bedel
talep edebileceği yönündedir. Bununla birlikte fiyat ilişkisinin lineer bir ilişki değil
lineer olmayan bir ilişki olduğu akılda tutulmalıdır. Üretim hacmi arttıkça birim maliyet
azalmakla birlikte bir noktadan sonra artmaya başlayabilir. Negatif ölçek ekonomisinin
etkisi sonucunda her bir CFP için harcanan efor hem büyük çaplı hem de küçük çaplı
projelerde yüksektir [3]. İdeal maliyete ulaşmak kapsamlı bir optimizasyon
probleminin çözümünü gerektirir.

4.3    İş Portföyü
Bu çalışmada yazılımı yapılacak ürünün iş alanı, satın alma ihalelerindeki CFP
maliyetinin belirlenmesinde etkili bir faktör olarak ele alınmıştır. Yazılımı yapılacak
ürünün iş portföyüne göre birim CFP maliyetinin değişkenlik gösterebileceği
varsayılmıştır.
   Her iş alanının dinamikleri ve iş süreçleri kendine özgüdür. Veri miktarı, veri
yapılarının ve iş akışlarının karmaşıklığı, dağıtık bir sistem ve diğer sistemler ile
entegrasyon ihtiyacı gibi iş alanı özelinde farklılaşan etmenler yazılımı yapılacak
uygulamanın karmaşıklığını ve maliyetini de farklılaştırır. Veri güdümlü sistemler
(bankacılık, sigortacılık, muhasebe vb. gibi iş alanı uygulamaları), gerçek zamanlı
sistemler (telefon değişim sistemleri, gömülü yazılımlar, operasyon sistemleri) ve bu
ikisini de içeren karma sistemler CFP yönteminde fonksiyonel alanlar olarak
belirtilmiştir. Karmaşık matematiksel algoritmalara veya diğer özel ve karmaşık
kurallara sahip sistemler (kendi kendine öğrenme sistemleri, simülasyon ) ve sürekli
değişkenleri işleyen sistemler (ses, video) ise CFP yönteminde belirtilen kısıtlamalardır.
Bu tipteki sistemlerde CFP yöntemi de sisteme bağlı olarak farklı uygulanabilir [23].
CFP yönteminin uygulanma yöntemindeki değişikliklerin CFP birim maliyetini
değiştirmesi olasıdır.
   İş alanının içinde bulunduğu pazarın yapısı da yazılımı yapılacak ürünün maliyetini
etkileyebilecek bir faktör olarak ele alınmıştır. Şirketlerin ürünlerinin pazarda varlığını
sürdürebilmesi için değişen ve gelişen ihtiyaçlara hızlı cevap verebilmesi gerekir.
Özellikle rekabetin yüksek olduğu pazarlarda, sürekli değişen koşullar ve dinamik
ortamlarda ürünün pazara sürüm süresi önemlidir. Firmalar rekabetin gerisinde
kalmamak ve pazara öncülük etmek gibi sebeplerle ürünlerini doğru zamanda en hızlı
şekilde pazara sürmek istediklerinde ürünün yazılımının da hızlı bir şekilde yapılması
gerekir. Bu noktada hız faktörünün ve pazar dinamiklerinin yazılımı yapılacak
uygulamanın birim CFP maliyetini etkilemesi beklenebilir.
   Yazılım geliştirme hizmeti satın alması yapılacak firmanın talebin geldiği iş
alanındaki deneyiminin, firmanın yazılım hizmetini fiyatlandırmasını öğrenme
faktörünü göz önünde bulundurmasıyla birlikte etkilemesi beklenir.

4.4    Teknoloji Kümesi
Yazılım uygulamaları farklı yazılım teknolojileri kullanılarak yapılabilmektedir. Bu
çalışmada yazılım ürününü ortaya çıkarmak için kullanılan teknoloji kümesi birim CFP
maliyetini etkileyen bir faktör olarak ele alınmıştır [17]. Literatürde yazılım geliştirme
hizmeti satın alma yönetiminde CFP yöntemini kullanan bir firmanın CFP için birim
fiyat bedelini içeren katalog tablosunda yazılımdaki teknoloji setine göre CFP birim
maliyetinin farklılaştığı görülür [4]. Radford ve Lawrie’nin çalışmasında yer alan birim
işlev puanı başına sabit fiyat ödenmesi yaklaşımında birim fiyatı etkileyen proje
nitelikleri arasında yazılım geliştirmede kullanılan teknoloji (platform, yazılım dili vb.)
yer almıştır [19]. Yazılımın teknoloji kümesi içerisinde yer alan programlama dilleri
gelişim evrelerine göre 5 nesilde sınıflandırılmıştır. Bilgi teknolojilerinin ilk çağlarında
programlama dilleri bilgisayara (makine) yakın iken her yeni nesil ile birlikte insana
yaklaşmıştır. Birinci nesil dillerin öğrenilmeleri ve uygulanmaları zor, hata durumlarını
yönetmek sıkıntılıdır. İnsan diline yakın olan gelişmiş seviye dillerde program yazma
işlemi kolaylaşmıştır. Dolayısıyla her programlama dili kendine özgü programlama
kabiliyeti gerektirir. 1 işlev puanı başına ortalama kod satır sayısı ve yetenek
programlama dili bazında değişirken harcanacak efor düşünüldüğünde 1 işlev puanının
maliyetinin de değişkenlik göstermesi beklenmektedir. Programlama dilinin yanı sıra
teknoloji kümesi içerisinde değerlendirilen platform, işletim sistemi ve veri tabanı gibi
öğelerin kullanımında harcanacak efor ve yetenek de değişkenlik gösterir.
   Bu çalışmada ortaya koyduğumuz maliyet modeli tablosunda bir faktör olarak yer
alan teknoloji kümesi ön yüz, arka yüz ve veri tabanı olarak gruplandı. Kullanılan
programlama dilleri, içerik yönetim sistemi, uygulamanın üzerinde çalıştığı sunucu
veya işletim sistemi, veri depolama yöntemi ilgili gruba yazılmalıdır.

4.5    Teknik Borç

Ürünün teknik borcu da bu çalışmada birim CFP bedelini etkilemesi beklenen bir
faktör olarak ele alınmıştır.
Ward Cunningham tarafından ortaya atılan teknik borç kavramı, yazılım ürününe
eklenecek yenilikler ve değişikliklerin tasarımını yapmadan, etki alanını tespit etmeden
hızlı ve gelişigüzel bir şekilde yapılması ve yazılımın kalitesini düşürmesi olarak
tanımlanmıştır [24]. Yazılım uygulamaları doğası gereği eklenen yenilikler ve
değişiklikler ile büyür ve karmaşıklaşır. Yazılım projelerinin başlangıcından itibaren
birim testlerin yazılmaması, teknik tasarıma ve mimariye yeterince özen
gösterilmemesi, dokümantasyon yapılmaması, kötü kodlama pratikleri yazılımın teknik
borcunu yaratır. Borç, yazılım sistemlerinde ideal kalite seviyesine ulaşmak amacıyla
problemleri gidermek için gerekli maliyeti gösterir. Teknik borç çözülmediği takdirde
özellikle borç sık sık değişen sistem parçalarıyla ilgiliyse zamanla büyür. Büyüyen borç
daha sonra bakım maliyetlerinde artışa yol açar [25].
   Yazılım büyüdükçe biriken teknik borç uygulamanın sürdürülebilirliğini zorlaştırır.
Uygulama hataya elverişli hale gelir. Teknik borcu fazla olan uygulamalarda daha fazla
hata düzeltme, işlevsel olmayan bakım, yeniden yapılandırma ve sürüm yükseltme
çalışmaları yapılır. Bunlar da birim maliyetlerin artmasına neden olur. İstenen yeni
özelliklerin mimari yapıda değişiklik gerektirdiği durumlar ekstra efor, zaman ve
maliyet gerektirir. Teknik borcun yüksek olduğu ürünlerde yapılacak yeni
geliştirmelerin etki alanı tespit edilemez hale geleceğinden test maliyetleri de artar.


5      Vaka Çalışması

Yazılım geliştirme hizmeti satın alma ihalelerinde verilen tekliflerdeki birim CFP
maliyet farklılıklarını bir temele dayandırmak amacıyla referans bir maliyet modeli
önerilen bu çalışmada model öncesinde tamamlanmış olan geçmiş ihalelerin bilgisi
toplanarak bu modele uygun olarak tasniflenmiştir. Türkiye’nin en büyük teknoloji ve
iletişim hizmetleri sağlayıcı firmalarından birinde gerçekleştirilen e-ihale yöntemiyle
yapılan 13 farklı yazılım geliştirme hizmeti satın almasının verisi önerilen CFP Maliyet
Tablosu modeline göre uygulama sahiplerinden toplanmış ve tasnif edilmiştir.
    İhalelere konu olan uygulamalardan sorumlu ekiplerin her biri uygulamalarının
kapsam boyutunu, beklenen aylık üretim miktarını, iş portföyünü, teknoloji kümesini
ve teknik borcunu belirtmiştir. Elde edilen tüm veriler ilk olarak kapsam boyutu
açısından kaynak kod satır sayısına göre tasnif edilerek küçük, orta ve büyük olarak
sınıflandırılmıştır (Şekil 1). Kapsam boyutu CFP cinsinden belirtilen uygulamaların
büyüklüğü işlev puanından kullanılan programlama diline göre kaynak kod satır sayısı
cinsine çevrilmiştir. 0 – 400bin satır kod küçük, 400bin – 1 milyon arası orta, 1
milyondan fazla kaynak kod satır sayısına sahip uygulamalar da büyük kapsamlı olarak
sınıflandırılmıştır. Şekil 1’e bakıldığında firmada yapılan ihalelere konu olan
uygulamaların kapsam olarak homojen bir dağılım gösterdiği söylenebilir.
    Uygulamalar CFP Maliyet tablosundaki ikinci faktör olan tedarikçiden aylık bazda
CFP olarak beklenen üretim miktarına göre tasniflendiğinde küçük hacimli, orta
hacimli, yüksek hacimli ve çok yüksek hacimli olarak sınıflandırılmıştır (Şekil 2). 0 –
50 CFP/ay küçük, 50-100 CFP/ay orta, 100-500CFP / ay yüksek ve 500 CFP /ay ve
üzeri çok yüksek olarak dağılmıştır. Uygulamaların iş portföylerinin ana kategorileri;
bilgi iletişim teknolojileri, müşteri ilişkileri yönetimi, kampanya yönetimi, güvenlik ve
operasyon, proje ve portföy yönetimi, e-ticaret, dijital öğrenme yönetim sistemi, mobil
şebeke envanter yönetimi, e-ticaret, dijital kanallar ve servisler, mobil uygulama
geliştirme forumu gibidir. Ürünlerin teknoloji kümesi çeşitlilik gösterdiği gibi her
ürünün farklı teknolojilerde uygulaması da bulunmaktadır. Örneğin, Java ve AngularJS
programlama dili ile yazılmış bir web uygulamasının, iOS ve Android işletim
sistemlerine uygun mobil uygulamaları da vardır. Teknoloji kümesine göre dağılım
incelendiğinde firmada Java programlama dilinin yaygın olarak kullanıldığı görülür
(Şekil 3). Uygulamaların teknik borç dağılımı da 1’den 4’e çeşitlilik göstermektedir.
6      Sonuç ve Gelecek Çalışmalar

Türkiye’nin en büyük teknoloji ve iletişim hizmetleri sağlayıcı firmalarından birinde
gerçekleşen yazılım geliştirme satın almalarındaki birim işlevsel kapsam maliyetlerinin
belirlenmesinde etkili olan faktörler bu çalışmada bir maliyet modeli tablosunda
toplanmıştır. Firmadaki işlevsel kapsam büyüklüğü ölçüm yöntemi Cosmic İşlev
Puanı’dır. Çalışmanın amacı, yazılım geliştirme satın alma ihalelerindeki birim Cosmic
İşlev Puan maliyetlerinin değişkenlik göstermesini bir temele dayandırmaktır. Bu amaç
doğrultusunda hazırlanan referans maliyet modeli tablosu ile satın alması yapılan
hizmetin maliyet kontrolü, şeffaflığı, benzer teknik alt yapıdaki ürünlerin ihalesi ile
kıyaslama yapılabilmesi ve risklerin yönetilmesi sağlanacaktır.
   Bu çalışmanın ilk fazını oluşturan maliyet modeli, firma içerisindeki uzmanların
deneyimlerinden ve literatürdeki çalışmalardan yola çıkılarak hazırlanmıştır. Kapsam
boyutu, beklenen üretim miktarı, iş portföyü, teknoloji kümesi ve teknik borç önerilen
modelde yer alan birim CFP maliyetini etkilediği varsayılan faktörlerdir. Çalışmanın
ikinci fazında firmada yapılan geçmiş 13 yazılım geliştirme ihalesinin verisi bu modele
göre toplanmış ve tasnif edilmiştir. Son faz olarak tasnif edilen verilere ilişkin
istatistikler paylaşılmıştır. İstatistiklere göre firmada iş portföyü geniş, proje kapsam
boyutları, beklenilen üretim miktarı ve teknoloji kümesi çeşitlilik göstermektedir.
   Bu çalışma kapsamında ele alınan örnek ihale sayısının azlığı çalışmanın
kısıtlarından biridir. Gelecek çalışmalarda, bu çalışmada elde edilen istatistikler
kullanılarak önerilen maliyet modelindeki faktörlerin birim işlev puanı maliyetinin
üzerindeki etkisi araştırılacak ve modele uygun şekilde toplanan geçmiş ihale sayısı
artırılarak geniş bir veri havuzu oluşturulacaktır. Bu veri, işlev puanı ile yapılacak
yazılım geliştirme satın alma ihalelerinde birim işlev puanı bedelinin tahminlemesinde
kullanılacak olan istatistiksel ve kümeleme gibi makine öğrenmesi yöntemlerinin
eğitilmesinde ve testinde kullanılacaktır. CFP yönteminin sadece işlevsel
gereksinimleri ölçtüğü düşünülürse daha çok güvenlik, operasyonel veya görsel
iyileştirmelerin yer aldığı projelerin satın almalarında birim CFP fiyatının belirlenmesi
referans alınabilecek bir maliyet modeli üzerinde bir takım kısıtlar oluşturabilir. Burada
uygulanacak yöntem de gelecekte hedeflenen araştırma alanlarından birisidir.

Kaynaklar
 1. Outsourcing Software Development Development? Don’t Forget about Code Security,
    https://www.sdcexec.com/risk-compliance/article/12089790/outsourcing-software-deve-
    lopment-dont-forget-about-code-security, erişim tarihi 2018/06/08.
 2. Bağrıyanık, S., Karahoca, A., Ersoy, E.: Selection of a functional sizing methodology: A
    telecommunications company case study. Global Journal on Technology 7, 98–108 (2015).
 3. Salmanoğlu, M., Öztürk, K., Bağrıyanık, S., Ungan, E., Demirörs, O.: Benefits and
    Challenges of Measuring Software Size: Early Results in a Large Organization. IWSM
    MENSURA (2015).
 4. Öztürk, K., Bağrıyanık, S., Özgöç, Ş., Horuz, O., Özenç, Ö., Ersoy, E., Karahoca, D.,
    Karahoca, A.: Yazılım Geliştirme Hizmetlerinin Satın Alma Yönetiminde COSMIC İşlev
    Puan Kullanımı. Turkish National Software Engineering Symposium (2017).
 5. Ertaban, C., Gezgin, S., Bağrıyanık, S., Albey, E., & Karahoca, A.: Çevik yöntemlerde
    cosmic ı̇şlev puanı ve hikaye puanının birlikte kullanımı. In: CEUR Workshop Proceedings,
    CEUR-WS, (2017).
 6. Bagriyanik, S., Karahoca, A.: Automated COSMIC Function Point measurement using a
    requirements engineering ontology. Information & Software Technology 72, 189-203
    (2016).
 7. Albrecht, A.J.: Measuring application development productivity. IBM Application
    Development Symposium, pp. 83-92 (1979).
 8. ISO/IEC19761: Software Engineering -- COSMIC-FFP -- A Functional Size Measurement
    Method. International Organization for Standardization -- ISO, Geneva (2003).
 9. ISO/IEC 29881:2008, Software Engineering – FiSMA functional size measurement method
    version 1.1, International Organization for Standardization (2008).
10. ISO/IEC 20926: Software Engineering -- IFPUG 4.1 Unadjusted functional size
    measurement method -- Counting Practices Manual. International Organization for
    Standardization-- ISO, Geneva (2003).
11. ISO/IEC 24570:2005, Software Engineering – NESMA functional size measurement
    method version 2.1 – Definitions and counting guidelines for the application of Function
    Point Analysis, International Organization for Standardization (2005).
12. Demirörs, O., Karagöz, NA., Gencel, Ç.: Acquiring innovative software systems:
    Experiences from the field, in EUROMICRO 2007 - Proceedings of the 33rd EUROMICRO
    Conference on Software Engineering and Advanced Applications, SEAA 2007, pp. 393 -
    400, (2007).
13. Symons, C. R.: Guideline for Measurement Strategy Patterns: Ensuring that COSMIC Size
    Measurements May Be Compared., (2013).
14. Papatheocharous, E., Papadopoulos, H., & Andreou, A. S.:Feature subset selection for
    software cost modelling and estimation. arXiv preprint arXiv:1210.1161., (2012).
15. Lagerström, R., von Würtemberg, L. M., Holm, H., & Luczak, O.: Identifying factors
    affecting software development cost and productivity. Software Quality Journal, 20(2), 395-
    417., (2012).
16. Jones, C.: Estimating Software Costs, Bringing realism to estimating second edition. (2007).
17. McConnell, S.: Software estimation: demystifying the black art. Microsoft press. (2006).
18. Jones, C.: A new Business Model For Function Point Metrics, Version 8:0, (2008).
19. Radford, P., Lawrie, R.: The Role of Function Points in Software Development Contracts,
    White Paper, Charismatek, (2000).
20. Czarnacka-Chrobot, B.: What Is the Cost of One IFPUG Method Function Point? - Case
    Study[C], The International Conference on Software Engineering Research and Practice,
    (2012).
21. Ng’ang’a, E., Tonui, I.: A Survey on Software Sizing for Project Estimation. In:International
    Journal of Software Engineering and Knowledge Engineering, vol. 5, issue 4., (2015).
22. Maurya, H., Khatoon, A., Chaudhary, N.: Metrics for Software Project Size Estimation.,
    International Journal of Advanced Research in Computer Science and Software Engineering,
    vol. 5, issue 1. (2015).
23. Czarnacka-Chrobot, B.: (Dis)Economies of Scale in Business Software Systems
    Development and Enhancement Projects., (2012).
24. Cunningham, W.: The WyCash Portfolio Management System. vol. 4(2), pp. 29±30. (1993).
25. Groot, J., Nugroho, A., Back, T., Visser, J.: What is the value of your software?. (2012).