<!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>Üç Katmanlı Nesne-İlişkisel Eşleme Mimarisi İçin Otomatik Fonksiyonel Büyüklük Ölçümü</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Hamdi DEMİREL</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Barış ÖZKAN</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 Kelimeler: COSMIC, Nesne İlişkisel Eşleme, Üç Katmanlı Mimari, Fonksiyonel Büyüklük Ölçümü</institution>
          ,
          <addr-line>Otomasyon</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Atılım Üniversitesi</institution>
          ,
          <addr-line>Bilişim Sistemleri Mühendisliği, Ankara</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Atılım Üniversitesi</institution>
          ,
          <addr-line>Yazılım Mühendisliği Bölümü, Ankara</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2011</year>
      </pub-date>
      <fpage>242</fpage>
      <lpage>256</lpage>
      <abstract>
        <p>Özet. Fonksiyonel Büyüklük Ölçümü'nde, çeşitli fonksiyonel büyüklük ölçüm metodları kullanılarak objektiflik ve tutarlılığın artırılması için standartlaşmaya ihtiyaç duyulmaktadır. Bazı mimari stiller için kullanımda olan çeşitli standardizasyon tanımları yapılmış olsa da, objektiflik ve tutarlılığı artırmak için hala yapılabilecek iyileştirmeler bulunmaktadır. Bu iyileştirmeler, otomasyon methodu kullanılarak ölçümcü hatalarının, zaman/efor miktarının ve yazılım geliştirme ortamına bağımlılığın azaltılması ile sağlanabilir. Bu çalışmada; Üç-Katmanlı Nesne İlişkisel Eşleme Mimarisi kullanan iş yazılımları için bir yaklaşım oluşturulmuş, prototip bir araç tasarlanmış ve bu araç yardımı ile bulunan sonuçlar, yaklaşımın doğrulanması için deneysel bir çalışma ile sunulmuştur.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>bir yaklaşımda ise MDA (Model Driven Architecture) tabanlı yazılımların ölçümü
için Nesne Yönelimli Metod ve COSMIC FPA (Function Points Analysis)
kullanılmıştır [8].</p>
      <p>
        Fonksiyonel Büyüklük Ölçümünde karşılaşılan diğer bir zorluk ise manuel
ölçüm yöntemlerinin genellikle fazlaca zaman ve efor gerektirmesi ve ölçümcü
hatalarına karşı hassas olmasıdır. Buna karşın otomatik bir ölçüm süreci; zaman,
efor ve maliyetin azaltılması ve objektiflik, tekrarlanabilirlik ve tutarlılığın
artırılması açısından bir çok avantaj sağlayacaktır [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref13 ref14 ref15 ref16">9, 10, 11, 12, 13, 8, 14, 15, 16,
17</xref>
        ].
      </p>
      <p>Arka Plan</p>
      <p>
        3-Katmanlı Mimari
3-Katmanlı mimari, uygulama yazılımının katmanlarını birbirinden ayıran
mimari bir paterndir. Bu patern sunum katmanını, iş katmanını ve veri katmanını
birbirinden ayırır. İş Yazılımları için sıklıkla kullanılan bu patern daha güvenli,
esnek ve sürdürülebilir bir yazılım modeli sağlar [
        <xref ref-type="bibr" rid="ref17 ref18">18, 19</xref>
        ]. 3-Katmanlı yazılım
modeline ait ana bileşenler aşağıda tanımlanmış ve Şekil 1’de gösterilmiştir.
      </p>
      <p> Veri Katmanı: İş katmanı tarafından gönderilen verilerin kaydedilmesini ve
gerektiğinde kaydedilmiş verilerin tekrar okunmasını sağlar.</p>
      <p> İş Katmanı: verinin değiştirilmesi ve diğer katmanlar arasında (Veri Katmanı
ve Sunum Katmanı) taşınmasından ve genel olarak fonksiyonel işlevlerin yerine
getirilmesinden sorumlu katmandır.</p>
      <p> Sunum Katmanı: Verinin kullanıcıya sunulması ve kullanıcı tarafından
girilen verilerin İş Katmanına ulaştırılması için bir ara yüz sağlar.</p>
    </sec>
    <sec id="sec-2">
      <title>Sunum Katmanı</title>
      <sec id="sec-2-1">
        <title>Uygulama yazılımının en üst seviyesindeki</title>
        <p>kullanıcı ara-yüzüdür. Temel işlevi
İş Katmanı tarafından oluşturulan verilerin
kullanıcıya sunulması ve kullanıcı tarafından
girilen verilerin İş Katmanına ulaştırılmasıdır.
İş Katmanı</p>
      </sec>
      <sec id="sec-2-2">
        <title>Bu katman uygulama içinde ki</title>
        <p>bir çok fonksiyonel görevi yürütmekten ve
gerekli değişiklikleri yaparak katmanlar
arasındaki veri hareketini sağlamaktan
sorumludur.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Veri Katmanı</title>
      <p>İş Katmanı tarafından gönderilen veriler
gerektiğinde tekrar okunmak üzere
bu katmanda saklanır.
&gt; Toplam
Satışları</p>
      <sec id="sec-3-1">
        <title>Listele Yıllık Satışları Al</title>
        <p>
          ORM (Object Relational Mapping) olarakta bilinen Nesne-İlişkisel Eşleme,
NesneTabanlı Analiz/Dizayn ve Nesne-Tabanlı Programlamada sıklıkla kullanılan ve
uygulama yazılımına ait miras ile devralma yeteneğine sahip veri nesnelerinin
(sınıfların), veritabanlarındaki iki boyutlu tablolara aktarılmasını sağlayan bir
tekniktir [
          <xref ref-type="bibr" rid="ref19">20</xref>
          ]. Bu teknik, veritabanı ulaşım protokollerinden ve kurulacak olan
veritanı yapısından bağımsız olarak verinin kaydedilmesine ve gerektiğinde tekrar
okunmasına olanak sağlar. Nesne-İlişkisel Eşlemenin temel amacı; Nesne-Tabanlı
programlama tekniği ile oluşturulan ve miras ile devralma yeteneğine sahip nesne
yapısının veri tablolarına en doğru şekilde aktarılmasıdır.
        </p>
        <p>
          Nesne-İlişkisel yapılar ve bileşenlerden, Java geliştirme ortamı için The Grails
Framework [
          <xref ref-type="bibr" rid="ref20">21</xref>
          ] ve Hibernate [
          <xref ref-type="bibr" rid="ref21">22</xref>
          ], ASP.NET geliştirme ortamı için NHibernate
[
          <xref ref-type="bibr" rid="ref22">23</xref>
          ] ve Android geliştirme ortamı için ActiveAndroid ORM [
          <xref ref-type="bibr" rid="ref23">24</xref>
          ] yazılımcılar
arasında popüler olanlardan bazılarıdır.
        </p>
        <p>Şekil 2 birbiri ile ilişkili iki iş nesnesinin (Customer ve BankAccount)
Nesneİlişkisel Eşleme metodu kullanılarak veri tabanına nasıl kaydedildiğini
göstermektedir. Bu metod veritabanı erişim protokollerinden bağımsız bir şekilde,
kullanıcıdan herhangi bir girdi almadan otomatik olarak gerekli olan veri tablosu
yapısını ve ilişkisel anahtarları oluşturacak ve ardından veriyi kaydedecektir..</p>
        <p>Hafızadaki model</p>
        <sec id="sec-3-1-1">
          <title>Veritabanındaki karşılığı</title>
          <p>ORM
Şekil 2. İki iş nesnesi için örnek bir Nesne-İlişkisel Model.
3
3.1</p>
          <p>Eşleme ve Ölçüm Aracı
Şekil 3 ve Şekil 4’te görüldüğü gibi 3-Katmanlı iş yazılımlarının katmanları ile
COSMIC tarafından tanımlanan iş uygulama yazılımlarına ait katmanlar arasında
büyük bir benzerlik bulunmaktadır. Her iki yapıda da veri ilgi nesneleri olarak
taşınmaktadır. COSMIC konseptinde verinin saklandığı kısım olarak değerlendirilen
Veri Depolama Katmanı 3-Katmanlı iş uygulamasında Veri Katmanına denk
gelmektedir. Benzer şekilde iş uygulamasında bulunan İş Katmanı ve Sunum
Katmanı COSMIC konseptinde İş Kuralları Katmanı ve Kullanıcı Arayüz
Katmanına kaşılık gelmektedir. Her iki yapıdaki iş katmanları genel olarak
uygulamanın fonksiyonel kabiliyetlerini barındıran katmanlardır. Kullanıcı arayüz
katmanı ve sunum katmanı ise verilerin kullanıcıya sunulmasını ve kullanıcı
tarafından girilen verilerin iş katmanlarına aktarılmasını sağlamaktadır. COCMIC
konseptine ait tanımların, iş uygulama yazılımlarında nelere denk geldikleri aşağıda
detaylı bir şekilde listelenmiştir.</p>
          <p>Uygulama Katmanı: COSMIC konseptinde uygulama katmanı; Kullanıcı Arayüz
katmanı, İş Kuralları Katmanı ve Veri depolama Katmanını içeren bir katman olarak
tanımlanmaktadır [6]. Çalışmamızdaki eşlemede 3-Katmanlı uygulama yazılımının
temel parçaları olan Sunum, İş ve Veri Katmanları, COSMIC konseptindeki bu
katmanlara denk gelmektedir. Genel olarak ifade etmek gerekirse COSMIC’te
tanımlanan Uygulama Katmanı 3-Katmanlı mimaride İş Uygulamasını temsil
etmektedir.</p>
          <p>Uygulama Sınırları: COSMIC Genel Yazılım Modelinde uygulama sınırları;
uygulamayı çevreleyen konseptsel bir sınır olarak tanımlanmaktadır [6]. 3-Katmanlı
yazılım mimarisine göre ise sunum katmanı, veri işleme kabiliyetine sahip olmadığı
ve sadece verinin/olayların taşınması ve sunulmasını sağlayan bir katman olması
sebebi ile “ince” bir katman olarak tanımlanmaktadır. Bu yüzden COSMIC
konseptindeki uygulama sınırları, 3-Katmanlı iş uygulamalarında arayüz
kontrollerini ve davranışlarını (Grafik Kullanıcı Arayüzü, Web Servis Arayüzü vb.)
taşıyan sunum katmanına denk gelmektedir.</p>
          <p>.ı Kullanıcı
lıızam KAartamyaünzı
Y
a
m
a
l
ug İş
yU Kuralları
ak Katmanı
r
a
l
o
tün Veri
bü Depolama
i Katmanı
r
B</p>
          <p>Kullanıcı Arayüz</p>
          <p>Bileşeni
M
R
O
İlgi Nesneleri
(Veri Hareketi)
İş Kuralları</p>
          <p>Bileşeni
İlgi Nesneleri
(Veri Hareketi)
Veri Servisleri</p>
          <p>Bileşeni
Şekil 3. COSMIC konseptinde uygulama
yazılımına ait üç katman [6].</p>
          <p>Sunum Katmanı
(İş Katmanının Fonk. Kullanıcısı)
İş Katmanı
İlgi Nesneleri
(Veri Hareketi)
İlgi Nesneleri
(Veri Hareketi)
M
R
O</p>
          <p>Veri Katmanı
Şekil 4. Nesne-İlişkisel Eşleme metodu
kullanan 3-Katmanlı İş Uygulama yazılımına
ait katmanlar [6].
İşlevsel kullanıcılar: Bir yazılım parçasının İşlevsel Kullanıcı Gereksinimleri
verisinin göndereni yada alıcısı olan kullanıcı (tipi) [6].
İlgi nesnesi: İşlevsel Kullanıcı Gereksinimleri bakış açısından belirlenen herhangi
bir ‘şey’. Fiziksel bir şey olabileceği gibi, işlevsel kullanıcı dünyasında yazılımın
veriyi işlemesi ve/veya saklaması gereken kavramsal bir nesne veya bir kavramsal
nesnenin parçası olabilir [6].
Veri Grubu: Bir veri grubu her bir veri özniteliğinin aynı ilgi nesnesinin
tamamlayıcı özelliklerini tanımladığı farklı, boş olmayan, sıralı olmayan ve
tekrarlamayan bir veri öznitelikleri setidir [6].
İşlevsel Süreç (İS): Bir işlevsel süreç benzersiz, kohesif ve bağımsız olarak
çalıştırılabilen bir set veri hareketini içeren bir set İşlevsel Kullanıcı Gereksiniminin
temel bileşenidir. Yazılım parçasının işlevsel olay belirlediği bilgisini veren işlevsel
kullanıcılardan gelen veri hareketi (bir Giriş) ile tetiklenir. İşlevsel olaya karşılık
olarak gereken işlemler yapıldığında tamamlanır [6].</p>
          <p>Tetikleyici Olay (TO): Bir yazılım parçasının bir işlevsel kullanıcısının bir veya
birden fazla işlevsel süreç başlatmasına (‘tetikleme’) yol açan bir olay (gerçekleşen
bir şey) olarak tanımlanır. Bir set İşlevsel Kullanıcı Gereksiniminde, işlevsel
kullanıcının bir işlevsel süreç tetiklemesini sağlayan her bir olay:
 Adı geçen İKG seti için alt parçalara bölünemez ve
 Ya olmuş veya olmamıştır [6].</p>
          <p>Veri Hareketleri:</p>
          <p>• Giriş (G): Bir veri grubunu bir işlevsel kullanıcıdan uygulama sınırından
içeriye ihtiyaç duyulan bir işlevsel sürece doğru hareket ettiren veri hareketidir [6].</p>
          <p>• Çıkış (Ç): Bir veri grubunu bir işlevsel süreçten uygulama sınırından dışarıya
ihtiyaç duyan bir işlevsel kullanıcıya doğru hareket ettiren veri hareketidir [6].</p>
          <p>• Okuma (O): Bir veri grubunu kalıcı bellekten ihtiyaç duyulan işlevsel sürece
doğru hareket ettiren bir veri hareketidir [6].</p>
          <p>• Yazma (Y): Bir işlevsel süreçte yer alan veri grubunu kalıcı belleğe doğru
hareket ettiren veri hareketidir [6].
3.2</p>
          <p>
            Ölçüm Aracı
Bu çalışmada sunulan otomatik ölçüm aracı; bölüm 3.1’de belirtilen eşleme
yöntemine göre tasarlanmış, ASP.NET ortamında implement edilmiş ve Nhibernate
Nesne-İlişkisel Eşleme kütüphanesini [
            <xref ref-type="bibr" rid="ref22">23</xref>
            ] kullanan iş uygulamalarını ölçmek üzere
geliştirilmiştir. Ölçüm aracı Visual Studio 2012 Express Edition geliştirme
ortamında c# proglama dili kullanılarak yazılmıştır.
          </p>
          <p>Şekil 5 ölçüm aracı perspektifinden ölçülecek olan yazılıma ait; ilgi nesneleri
seviyesinde genel veri akış sürecini, uygulamanın temel yazılım parçacıklarını,
konfigürasyon/eşleme dosyalarını ve veri tabanı ile ilişkisini göstermektedir.
Kullanıcı Arayüzü
(Sunum Katmanı)
Çıkış</p>
          <p>Giriş
İlgi Nesneleri (Sınıflar)</p>
          <p>Değiştirme ve Veri</p>
          <p>Hareketi İşlemleri</p>
          <p>Fonksiyonel Prosesler
ı
n
a
m
t
a
K
ı
m
ı
l
ı
z
a
Y
a
m
a
l
u
g
y
U</p>
          <p>Tüm Sunum</p>
          <p>Katmanı
Kontrollerini Bul</p>
          <p>XML Eşleme</p>
          <p>Dosyaları
Dll Kütüphanesi
Şekil 5. Ölçülecek olan yuygulama yazılımına ait genel bir veri akış süreci.</p>
          <p>




</p>
          <p>Sınıflar arası ilişkiler.
İş Süreçleri ve herbirine ait İşlevsel Büyüklük değeri.</p>
          <p>NHibernate Yordamları.</p>
          <p>XML dosyalarında tanımlı ilgi nesneleri ve ilişkileri.</p>
          <p>Her bir veri tipi için toplam İşlevsel Büyüklük.</p>
          <p>Uygulama yazılımı hakkında bazı istatistiki bilgiler.</p>
          <p>Şekil 6. Ölçüm aracına ait ölçüm prosesi.</p>
          <p>Ölçülecek olan yazılıma ait genel tanımları yaptıktan sonra artık ölçüm aracının
ölçüm sürecini nasıl işlettiğini açıklayabiliriz. Şekil 6’da gösterildiği gibi ölçüm
süreci temel olarak 5 bölümden oluşmaktadır. Ölçüm, iş uygulama yazılımına ait
dosyaların ve XML Eşleme (bkz. Şekil 5) dosyalarının çözümlenmesi ile
başlamaktadır. Ardından XML Eşleme dosyaları yardımı ile iş nesneleri tespit
edilmekte, sonrasında ise kod dosyaları kullanılarak işlevsel süreçlerin
gerçekleştirilmesini sağlayan yordamlar ve birbirleri ile ilişkileri tespit edilmektedir.
Gerekli bileşenlerin tespitinin tamamlanmasının ardından çalışan ana fonksiyon; ilgi
nesneleri, yordamlar ve hem iş nesnelerinin birbirleri ile olan miras bağlarını hemde
yordamların birbirleri ile olan çağırma ilişkilerini takip ederek her bir işlevsel süreç
için toplam veri hareketi miktarını COSMIC kurallarına göre hesaplamaktadır.
Sonuç olarak ise Şekil 6’da sonuç bölümünde belirtilen veriler kullanıcıya
sunulmaktadır.</p>
          <p>
            Ölçüm aracının implementasyonunda; ölçülecek olan yazılımdaki sınıf ve
yordam gibi tanımlamaların bulunması ve aralarındaki ilişkilerin tespit edilmesi
amacı ile Nova.Codedom [
            <xref ref-type="bibr" rid="ref24">25</xref>
            ] olarak adlandırılan bir kütüphane kullanılmıştır.
Ölçüm ile ilgili olarak veri analizine başlamadan önce deneysel çalışmamızda,
ölçmek amacı ile kullandığımız MVC (Model View Control) uygulamasına ait Şekil
7’de gösterilen veri akış şemasının ve COSMIC konseptindeki karşılıklarının
belirlenmesi gerekmektedir. Şekil 7’de 1, 8, 10-5 ve 6 hareket numarası ile
tanımlanan veri harketleri sırası ile Bölüm 3.1’de de tanımlanan Giriş, Çıkış, Yazma
ve Okuma veri hareketlerine denk gelmektedir. Diğer hareketler (2, 3, 4, 7 ve 9) ise
verinin işlenmesi ile ilgili süreçler olarak değerlendirildiğinden COSMIC Manueline
[6] göre veri hareketi olarak değerlendirilmemektedir.
4
          </p>
          <p>Deneysel Çalışma
Ölçüm ile ilgili olarak sunulan yaklaşımın ve ölçüm aracının teset edilmesi amacı ile
deneysel bir çalışma yapılmış ve elde edilen otomatik ölçüm sonuçları, manuel
yordamlarla elde edilen sonuçlar ile karşılaştırılmıştır.
4.1</p>
          <p>
            Seçilen İş Uygulaması
Ölçülecek yazılım olarak; Cuya-hoga adında açık kaynaklı ve 3-Katmanlı Nesne
İilişkisel Eşleme metodu kullanan bir MVC web portalı yönetim yazılımı seçilmiştir
[
            <xref ref-type="bibr" rid="ref25">26</xref>
            ]. Bu iş uygulaması Visual Studio geliştirme ortamında c# programlama dili
kullanılarak geliştirilmiş olup, 9 Visual Studio Projesinden1 ve 16744 Kaynak Kod
Satırından (SLOC: Source Lines of Code) oluşmaktadır.
4.2
          </p>
          <p>
            Veri Toplama
Cuya-Hoga uygulamasına ait bir İşlevsel Kullanıcı Gereksinim dokümanı olmadığı
için bu gereksinimler uygulama yazılımının kaynak kodundan ve ürün tanıtımı için
kullanılan web sayfasından çıkarılmıştır [
            <xref ref-type="bibr" rid="ref25">26</xref>
            ]. Manuel yordam ile yapılan ölçümler
COSMIC ölçüm sertifikasına sahip bir uzman ölçümcü ve bu makalenin yazarı
tarafından gerçekleştirilmiştir. Manuel ölçüm için toplamda 29 saat harcanmıştır.
1 Visual Studio projesi iş uygulama yazılımının modülleri olarak düşünülebilir. Bu modüller
uygulamanın çalışabilmesi için gereken tüm dosyaların her projede ayrı ayrı
gruplanabilmesine imkan sağlar.
Şe kil 7 . MV C u ygu l a ma ya z ılı mın a ait d et a ylı veri a kış şe ma sı.
4.3
          </p>
          <p>Veri Analizi ve Sonuçlar
Bu çalışmada, birbiri ile karşılaştırılan üç tip veri grubu oluşturulmuştur. Bu veri
tiplerinden birincisi Manuel ölçüm (M) sonuçları, ikincisi ölçüm aracı tarafından
bulunan Otomatik (A) ölçüm sonuçları, sonuncusu ise bu iki sonuç kümesinin
kesişimi olan Ortak Sonuç (C) kümesidir. Çalışmada ki analiz ve değerlendirmeler
yapılırken manuel ölçüm sonuçları (M) tam doğru olarak kabul edilecek ve
hesaplamalarda %100 olarak değerlendirilecektir. Tanımlanan bu üç temel veri
tipine ek olarak; ölçüm aracı tarafından tespit edilemeyen ancak ölçümcüler
tarafından bulunan sonuçlar (m) ile araç tarafından veri hareketi olarak
değerlendirilen ancak ölçümcü tarafından tepit edilemeyen yada veri hareketi olarak
değerlendirilmeyen (e) sonuçlarda hesaplamalarda kullanılmıştır. Ayrıca her bir
fonksiyonel proses için manuel ve otomatik ölçümler karşılaştırılmış ve yanlış
bulunan veri hareketleri2 çıkarılarak sonuçlar doğrulandıktan sonra hesaplamalara
dahil edilmiştir. Şekil 8 yukarıda bahsedilen veri tipleri ve aralarındaki ilişkiyi
göstermektedir.</p>
          <p>M
m
Şekil 8. Bu deneysel çalışmada kullanılan veri tiplerinin sınıflandırılması.</p>
          <p>Manuel yordamlar (M) ve ölçüm aracı kullanılarak elde edilen sonuçlar (A) ile
bu iki küme kullanılarak hesaplanan veriler (C, m ve e) Table 1’de verilmiştir.
Toplamda, manuel yöntemlerle 410 veri hareketi ve 86 işlevsel süreç bulunmuş
olup, bu sonuçlara karşılık olarak ölçüm aracı tarafından gerçekletirilen ölçüm
işlemi ile 385 veri hareketi ve 93 işlevsel süreç tespit edilmiştir. Yapılan
değerlendirmelerde kullanılan yakınlık yüzdeleri C*100/M denklemi ile
hesaplanmıştır. Ortak Sonuç Kümesi olan C değeri otomatik (A) yada manuel (M)
sonuçlar kullanılarak C=A-e yada C=M-m eşitlikleri ile hesaplanmaktadır. Bölüm
4.4’te değerlendirilen manuel ve otomatik ölçüm sonuçları; her bir veri tipi için ayrı
ayrı, toplam veri hareketleri ve işlevsel süreç sayıları olarak Table 2 verilmiş ve Fig.
9 ve Fig. 10’de gösterilmiştir.</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>Extra</title>
      </sec>
      <sec id="sec-3-3">
        <title>Common</title>
      </sec>
      <sec id="sec-3-4">
        <title>Missed Common 102 14</title>
        <p>139
28
334
68
75
18
75
11
W
R
X</p>
      </sec>
      <sec id="sec-3-5">
        <title>Data Mov. FP</title>
        <p>G, Y, O ve Ç veri hareketleri için manuel ve otomatik ölçüm sonuçları sırası ile 71,
111, 140, 88 ve 39, 116, 167, 63 olarak tespit edilmiş ve toplam veri hareketi
yakınsama oranı bölüm 4.3’te belirtilen yöntemle %81.46 olarak hesaplanmıştır.
Elde edilen otomatik sonuçlar ortalama bir masa üstü bilgisayar ile bir dakikadan
daha az bir zamanda bulunmuştur. Table 1, Fig. 9 and Fig. 10’da verilen
sonuçlardan da anlaşılacağı gibi Y ve O veri hareketlerinde elde edilen yakınsama
oranları, G ve Ç veri hareketlerinde elde edilen yakınsama oranlarından daha
yüksektir. Bunu sebebi; ölçülen yazılımda Y ve O veri hareketleri ile ilgili işlemlerin
Nhibernate Nesne İlişkisel Eşleme kütüphanesi tarafından kullanılan standart
metodlarla sağlanmasına karşın, G ve Ç veri hareketlerinin programlayıcının
kullandığı stillere bağlı olarak değişiklik gösteren farklı grafik arayüz
implementasyonlarına dayanması gösterilebilir. Standart olarak kullanılan
yöntemlerin tespit ve takip edilmesi daha kolay olduğu için Y ve O veri
hareketlerinin ölçüm aracı tarafından bulunma olasılıkları daha yüksektir.
4.5</p>
        <p>Doğrulama Tehditleri
Bu çalışmada sunulan yaklaşım; Nesne İlişkisel Eşleme metodu kullanan ve ilgi
nesneleri ilişkilerini XML eşleme dosyaları vasıtasıyla tanımlayan neredeyse tüm iş
yazılımlarına uyarlanabilir. Fakat halihazırdaki ölçüm aracına sadece c#
programlama dili implement edilmiştir. Bu yüzden ölçüm yapılan uygulamalarda
kısmen de olsa diğer programlama dillerinin kullanılması (java vb.) ölçüm aracının
veri hareketlerini tespit kabiliyetini kısıtlamaktadır. Buna ek olarak; ölçüm aracı
geliştirilme aşamasında bazı küçük uygulamalar üzerinde test edilmiş olsada, sadece
bir büyük proje üzerinde denenmiştir.</p>
        <p>Cuya-hoga uygulamasının manuel büyüklük ölçümü, İşlevsel Kullanıcı
Gereksinimleri için kullanılabilecek bir doküman olmadığından kod ve arayüzden
yapılmıştır. Bu yüzden ölçüm için harcanan süre 29 saat olarak ölçülmüş ancak bu
sürenin normalden fazla olduğu değerlendirilmiştir. İşlevsel Kullanıcı Gereksinim
dokümanlarının olması durumunda bu sürenin biraz daha azalabileceği
değerlendirilmiştir.</p>
        <p>Yakınsama yüzdelerinin hesaplanmasında otomatik (A), manuel (M) ve ortak
veri seti (C) kullanılmıştır. Ancak normal koşullarda ölçüm aracını kullanacak olan
ölçümcü sadece otomatik olarak üretilen sonuçları görebilecektir. Buna göre
hesaplanacak bir yakınsama, A*100/M formülü ile hesaplanacağından bu çalışma
için alınacak yakınsama sonucu Table 2’de de gösterildiği gibi %93.90 olacaktır.
Her nekadar bu çalışma için daha yakınsak bir sonuç elde edilmiş olsada bunun her
zaman doğru almayacağı açıktır.
Bu çalışma ile 3-Katmalı Nesne İlişkisel Eşleme metodunu kullanan iş
uygulamalarının ölçümü için bir yaklaşım sunulmuş, bu yaklaşımı uygulayabilecek
prototip bir ölçüm aracı geliştirilmiş ve sunulan yaklaşım deneysel bir çalışma ile
doğrulanmıştır. Table 2, Fig. 9 ve Fig. 10’de sunulan sonuçlardan da görülebileceği
gibi implement edilen ölçüm aracı, proje yöneticisine yazılım büyüklük ölçümü için
güvenilir kabul edilebilecek ölçüm sonuçlarını kısa bir zaman içerisinde uzman bir
ölçümcüye ihtiyaç duymadan sunmaktadır. Ayrıca araç tarafından otomatik ölçüm
sonuçlarına ek olarak dosya sayıları ve tipleri, ilgi nesneleri ve aralarındaki ilişkiler,
tetikleyici olaylar ve bağlı oldukları arayüz kontrolleri, yordamlar ve her bir İS için
gömülü alt yordamlar ve bu yordamlarla kullanılan parametreler gibi daha bir çok
bilgi ölçümcüye sunulmaktadır. Bu yetenek ölçümcünün, ölçüm aracı tarafından
yanlış değerlendirilmiş veri hareketlerini düzeltmesi ve ölçüm sonucunu istediği gibi
geliştirebilmesi için imkan sunmaktadır. Ayrıca otomatik ölçüm kod üzerinden
yapıldığı için eksik yada güncel olmayan İKG dokümanları nedeniyle ölçülemeyen
uygulamaların ölçülebilmesinede imkan sağlamaktadır.</p>
        <p>Ayrıca aynı mimariye sahip yazılım tipleri bu ölçüm aracı tarafından ek bir
çalışma ihtiyacı olmadan tekrarlı olarak ölçülebilirler. Buna ek olarak; bu ölçümler
çok kısa bir zaman içerisinde çok az bir eforla yapılabilirler. Ayrıca ölçüm aracı
tarafından yapılan ölçümler -en azından işlevsel büyüklük hakkında ön bir bilgi elde
etmek amacı ile- uzman bir ölçümcüye ihtiyaç duyulmadan gerçekleştirilebilirler.</p>
        <p>Yukarıda bahsedilen ajantajlar yanında ölçüm aracının; tasarımında yanlış
implement edilmiş tespit algoritmalarının bulunma olasılığı, bazı
implementasyonlarda veri hareketlerini yanlış değerlendirmesi yada tespit
edememesi, tüm İS’leri bulamaması veya gömülü İS’leri takip edememesi gibi bazı
dezavantajları ve eksiklikleride bulunmaktadır. Bu deneysel çalışmada ölçüm aracı
sadece bir adet orta büyüklükte iş uygulama yazılımının ölçümünden elde edilen
sonuçların karşılaştırılması ile değerlendirilmiştir. Buda, ölçüm performansı
konusunda ki değerlendirmenin doğruluğunun ileride yapılacak başka çalışmalar
yardımı ile desteklenmesini gerektirmektedir.</p>
        <p>Bölüm 3.1 ve 3.2’de belirtildiği üzere bu ölçüm aracı sadece standart yordamlar
kullanılarak yapılan implementasyonlarda başarı sağlayabilmektedir. Programcının
standandart yollardan ayrılması ölçüm aracının tespit kabiliyetini azaltacak ve
sonuçların yakınsama oranlarını düşürecektir.</p>
        <p>Bu araç, c# programlama dili kullanılarak implement edilmiş olan, XML
dosyaları vasıtası ile ilgi nesnelerini tanımlayan ve Nesne-İlişkisel Eşleme metodu
kullanan 3-Katmanlı iş uygulama yazılımları için geliştirilmiş olup, sonraki
çalışmalarda ilgi nesnelerinin farklı şekillerde tanımlandığı (örn.: Fluent Mapping3)
ve diğer programlama dilleri (örn.:Java) kullanılarak implement edilmiş daha büyük
ölçekli endüstriyel uygulamaların ölçümü için iyileştirmeler planlanmaktadır.
3 Fluent mapping; ilgi nesnelerinin XML dosyaları yerine kod içerisinde kullanılan terimler
yardımı ile yapıldığı bir Eşleme metodudur.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Yılmaz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Tunalılar</surname>
          </string-name>
          and
          <string-name>
            <given-names>O.</given-names>
            <surname>Demirörs</surname>
          </string-name>
          ,
          <article-title>"R-COVER: Yazılım Büyüklük Ölçümü Hata Tespit Aracı,"</article-title>
          <source>UYMS-2013</source>
          , Ankara,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <given-names>R.</given-names>
            <surname>Meli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Abran</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. Ho</given-names>
            <surname>Winh</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Oligny</surname>
          </string-name>
          ,
          <article-title>"On The Applicability of COSMIC-FFP For Measuring Software Throughout Its Life Cycle,"</article-title>
          <source>in 11th European Software Control and Metrics Conference</source>
          , Munich, Germany,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>O.</given-names>
            <surname>Turetken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. O.</given-names>
            <surname>Top</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Ozkan</surname>
          </string-name>
          and
          <string-name>
            <given-names>O.</given-names>
            <surname>Demirors</surname>
          </string-name>
          ,
          <article-title>"The Impact of Individual Assumptions on Functional Size Measurement,"</article-title>
          <source>in International Conferences IWSM</source>
          <year>2008</year>
          , Munich, Germany,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Stambollian</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Abran</surname>
          </string-name>
          ,
          <article-title>"Survey of Automation Tools Supporting COSMIC-FFP - ISO 19761," École de Technologie Supérieure-ÉTS, Montréal (Québec) Canada</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Trudel</surname>
          </string-name>
          ,
          <article-title>"Using The Cosmic Functional Size Measurement Method (ISO 19761</article-title>
          )
          <string-name>
            <surname>As A Software Requirements Improvement Mechanism</surname>
          </string-name>
          ,
          <string-name>
            <surname>" École De Technologie Supérieure</surname>
          </string-name>
          , Montreal,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Abran</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-M. Desharnais</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Oligny</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>St-Pierre</surname>
            and
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Symons</surname>
          </string-name>
          ,
          <source>The COSMIC Functional Size Measurement Method (Version 4.0.1)</source>
          , COSMIC,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>P.</given-names>
            <surname>Fagg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lesterhuis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Santillo</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Vogelezang</surname>
          </string-name>
          ,
          <article-title>Guideline for Sizing ServiceOriented Architecture Software</article-title>
          ,
          <source>The Common Software Measurement International Consortium (COSMIC)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>B.</given-names>
            <surname>Marin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Condori-Fernandez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Pastor</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Abran</surname>
          </string-name>
          ,
          <article-title>"Measuring the Functional Size of Conceptual Models in an MDA Environment,"</article-title>
          <source>in CAiSE'08 Forum</source>
          , Montpellier, France,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <given-names>A. A.</given-names>
            <surname>Akca</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Tarhan</surname>
          </string-name>
          ,
          <article-title>"Run-time measurement of COSMIC functional size for Java business applications: Is it worth the cost</article-title>
          .," Ankara/Turkey,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Albrecht</surname>
          </string-name>
          , Measuring Application Development Productivity,
          <source>IBM Corporation</source>
          ,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>K.</surname>
          </string-name>
          v. d. Berg,
          <string-name>
            <given-names>T.</given-names>
            <surname>Dekkers</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Oudshoorn</surname>
          </string-name>
          ,
          <article-title>"Functional size measurement applied to UML-based user requirements," in 2nd Software Measurement European Forum</article-title>
          ,
          <string-name>
            <surname>SMEF</surname>
          </string-name>
          <year>2005</year>
          , Rome, Italy ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <article-title>"Estimating Software Size with UML Models,"</article-title>
          <source>in C3S2E</source>
          <year>2008</year>
          , New York,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>V. T.</given-names>
            <surname>Ho</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Abran</surname>
          </string-name>
          ,
          <article-title>"A Framework For Automatic Function Point Counting From Source Code,"</article-title>
          <source>in International Workshop on Software Measurement (IWSM'99)</source>
          , Lac Superieur-Canada,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>B.</given-names>
            <surname>Marin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Pastor</surname>
          </string-name>
          and
          <string-name>
            <given-names>G.</given-names>
            <surname>Giachetti</surname>
          </string-name>
          ,
          <article-title>"Automating the Measurement of Functional Size of Conceptual Models in an MDA Environment,"</article-title>
          <source>Department of Information Systems and Computation Technical Univercity of Valrncia, Valencia Spain</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>K.</given-names>
            <surname>Paton</surname>
          </string-name>
          ,
          <article-title>"Automatic Function Point Counting Using Static And Dynamic Code Analysis,"</article-title>
          <source>in International Workshop on Software Measurement (IWSM'99)</source>
          , Canada,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>H.</given-names>
            <surname>Soubra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Abran</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Stern</surname>
          </string-name>
          and
          <string-name>
            <given-names>A. R.</given-names>
            <surname>Cherif</surname>
          </string-name>
          ,
          <article-title>"</article-title>
          <source>Design of a Functional Size</source>
          [17]
          <string-name>
            <given-names>D.</given-names>
            <surname>Hassan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Frappier</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>St-Denis</surname>
          </string-name>
          ,
          <article-title>"A Formal Definition of COSMIC-FFP for Automated Measurement of ROOM Specifications,"</article-title>
          <source>in Proc. 4th Eur. Conf. Software Measurement and ICT Control</source>
          , Heidelberg,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>R. N.</given-names>
            <surname>Taylor</surname>
          </string-name>
          , N. Medvidovic and
          <string-name>
            <given-names>E. M.</given-names>
            <surname>Dashofy</surname>
          </string-name>
          , Software Architecture Foundations,
          <string-name>
            <surname>Theory</surname>
          </string-name>
          , And Practice, USA: John Wiley &amp; Sons Inc.,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>A.</given-names>
            <surname>Aarsten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Brugali</surname>
          </string-name>
          and
          <string-name>
            <given-names>G.</given-names>
            <surname>Menga</surname>
          </string-name>
          ,
          <article-title>"Patterns for Three-Tier Client/Server Applications," Torino-</article-title>
          <string-name>
            <surname>Italy</surname>
          </string-name>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>M.</given-names>
            <surname>Keith</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Schnicariol</surname>
          </string-name>
          ,
          <article-title>"Object-Relational Mapping,"</article-title>
          <source>Apress</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Grails</surname>
          </string-name>
          ,
          <article-title>"A powerful Groovy-based web application framework for the JVM,"</article-title>
          <source>The Grails</source>
          ,
          <year>2015</year>
          . [Online]. Available: https://grails.org/index.html.
          <source>[Accessed 06 05</source>
          <year>2015</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>G.</given-names>
            <surname>Rocher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Ledbrook</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Palmer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Brown</surname>
          </string-name>
          , L. Daley and
          <string-name>
            <given-names>B.</given-names>
            <surname>Beckwith</surname>
          </string-name>
          ,
          <article-title>"GORM,"</article-title>
          Spring Source, [Online]. Available: http://grails.org/doc/2.3.x/guide/GORM.html.
          <source>[Accessed 24 03</source>
          <year>2014</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>J.</given-names>
            <surname>Dentler</surname>
          </string-name>
          , NHibernate
          <volume>3</volume>
          .0 Cookbook, Birmingham, UK: Packt Publishing Ltd.,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>N.</given-names>
            <surname>Esquenazi</surname>
          </string-name>
          ,
          <article-title>"</article-title>
          <source>ActiveAndroid Guide," 09 03</source>
          <year>2015</year>
          . [Online]. Available: https://github.com/codepath/android_guides/wiki/ActiveAndroid-Guide.
          <source>[Accessed 04 05</source>
          <year>2015</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Inevitable-Software</surname>
          </string-name>
          ,
          <article-title>"C# Parser and CodeDOM," Inevitable Software Inc</article-title>
          .,
          <year>2013</year>
          . [Online]. Available: http://www.inevitablesoftware.com/.
          <source>[Accessed 06 05</source>
          <year>2015</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>C.</given-names>
            <surname>Hoga</surname>
          </string-name>
          ,
          <article-title>"Cuya Hoga," Cuya Hoga Project Team</article-title>
          , [Online]. Available: http://cuyahogaproject.org/.
          <source>[Accessed 04 08</source>
          <year>2014</year>
          ].
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>