<!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>Mobil Uygulamaların Kalite Özelliklerinin Ölçümü</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Nurseda ÖZDEMİR</string-name>
          <email>nursedaozdemr@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>Bahar GEZİCİ</string-name>
          <email>bahargezici@hacettepe.edu.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kıvanç DİNÇER</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: Mobil Uygulamaların Kalite Özellikleri, Kalite Özelliklerinin Ölçümü, Nesne Yönelimli C&amp;K Metrikleri</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Hacettepe Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı Beytepe Kampüsü</institution>
          ,
          <addr-line>06800 Ankara</addr-line>
        </aff>
      </contrib-group>
      <fpage>337</fpage>
      <lpage>348</lpage>
      <abstract>
        <p>Since it is difficult to measure the (external) quality attributes of a software product directly, an evaluation is made by using some software metrics that represent the value of related internal quality attributes. The objective of this work is to answer the research question - which has not been studied much in the literature yet - of whether the quality attributes of an application will be similar in its desktop and mobile versions. Four open-source applications having both desktop and mobile versions have been studied: AdBlock, KeePass, Telegram and Zulip. First, the source code of these applications was evaluated using Chidamber &amp; Kemerer (CK) object-oriented metric set/suite. DIT, PLOC, WMC, CBO, NOC and RFC metrics from the CK metric set were collected for both versions using the “Understand” static code analysis tool. Then the measurement results for both applications have been reviewed by a comparative analysis to find an answer for our research question.</p>
      </abstract>
      <kwd-group>
        <kwd>Mobile Software Quality Attributes</kwd>
        <kwd>Measuring Quality Attributes</kwd>
        <kwd>Object-Oriented C&amp;K Metric Suite</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Teknolojinin hızla geliştiği, hayatı kolaylaştırıcı cihazların sayısının her geçen gün
arttığı günümüzde, mobil cihazlar her alanda karşımıza çıkmaktadır. Bu gelişme
mobil uygulamaların sayısındaki artışı da beraberinde getirmiştir. Haziran 2015 itibariyle
Google Play’de 1,6 milyon, Apple App Store’da 1,5 milyon, Amazon App Store’da
400 bin ve Windows Phone Store’da 340 bin mobil uygulama bulunmaktadır [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>Mobil uygulamaların son derece popüler olması, mobil uygulama geliştirmenin
popülerliğini de tetiklemiştir. Ancak mobil uygulamaların satış fiyatlarının masaüstü
uygulamalara göre daha düşük olması mobil uygulama geliştiricilerinin geliştirme ve
bakım maliyetlerini daha düşük tutmalarını gerektirmektedir. Dolayısıyla mobil
uygulama geliştiricisi tekrar kullanılabilirliği yüksek, gelecekte meydana gelebilecek
değişikliklere uyum sağlayabilen, geliştirmesi, değiştirmesi ve bakımı kolay uygulamalar
geliştirmeyi hedeflemelidir. Geliştiricinin bu hedefe ulaşması yazılımının “kaliteli”
olması ile mümkün olmaktadır. Yazılımın kalitesi genel olarak gereksinimlere veya
beklentilere uygunluk olarak tanımlanmıştır, bu bağlamda kaliteye geliştirici
perspektifinden baktığımızda kalite beklentileri geliştirme ve bakım maliyetlerinin düşük
olması olarak karşımıza çıkabilir.</p>
      <p>
        Kalite kavramı her ne kadar öznel bir kavram olsa da çeşitli kalite modelleriyle
ortak bir pencere yakalanabilmektedir. Örneğin ISO 9126 yazılım kalite
değerlendirmesi için kullanılan uluslararası bir standarttır ve kaliteyi işlevsellik, güvenilirlik,
kullanılabilirlik, verimlilik, bakım yapılabilirlik, taşınabilirlik gibi sınıflara ayırmıştır [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Fenton ve arkadaşları [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] yazılım sonucu ortaya çıkan ürünün kalite özelliklerini içsel
kalite özellikleri ve dışsal kalite özellikleri olarak ikiye ayırmıştır. İçsel kalite
özellikleri; çeşitli metrikler ile yazılımın direk kendisinden (kaynak kodundan) ölçülebilen
özellikleridir. Örneğin iki sınıf arasındaki bağımlılığı ölçmek istediğimizde direk
olarak programın kaynak kodunu analiz ederek bu bilgiye ulaşabiliriz. Dışsal kalite
özellikleri ise; ürünle ilgili geliştiricilerin veya kullanıcıların kanaatlerini yansıtır.
Burada ürünün nasıl davrandığı ön plana çıkan etkendir. Örneğin kullanıcı dostu
olma, bakım yapılabilirlik, güvenilirlik gibi.
      </p>
      <p>
        Yazılımların dışsal kalite özelliklerinin doğrudan ölçülmesi kolay olmadığından,
bunların değerlendirilmesi içsel kalite özelliklerini ölçen yazılım metrikleri vasıtasıyla
yapılmaktadır [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Bu yöntem sıklıkla alternatif yazılımların değerlendirilmesi ve
seçimi için kullanılmaktadır [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        Bazı araştırmacılar kalite ölçümleri için çeşitli metrik setleri yayınlamışlardır. Bu
metrik setlerinden bazıları Chidamber &amp; Kemerer (CK) Metrik Kümesi [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], Brito e
Abreu MOOD Metrik Kümesi [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], Bansiya ve Davis QMOOD Metrik Kümesi [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
vb.dir [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Bu metrik setleri geleneksel yazılımlara defalarca uygulanmış ve
onaylanmıştır. Ancak hızla yayılmakta olan mobil yazılımların (dışsal) kalite özelliklerini
belirleyen içsel (kalite) özelliklerinin masaüstü sürümlerine göre benzerlik taşıyıp
taşımadığı konusu üzerinde literatürde çok fazla çalışma bulunmamaktadır. Bu
çalışmada amacımız (içsel) kalite özelliklerinin aynı yazılımın mobil ve masaüstü
platformlar için geliştirilen sürümlerinde nasıl değişiklik göstereceğinin tespit
edilmesidir.
      </p>
      <p>Araştırma Sorusu: Bir yazılımın masaüstü platformlar için geliştirilmiş
sürümünün kalitesi mobil sürümünün kalitesini belirleyici midir? Veya bir yazılımın
masaüstü ve mobil sürümü kalite özellikleri açısından ne derece benzerlik taşır?</p>
      <p>
        Bu araştırma sorusuna cevap bulabilmek için hem masaüstü uygulaması hem mobil
uygulaması bulunan dört açık-kaynak uygulama incelenmiştir. Bu uygulamalar
AdBlock[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], KeePass[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], Telegram[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] ve Zulip[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] isimli uygulamalardır.
Araştırmamız CK metrik kümesinden seçilen 6 temel metriğin bu uygulamaların masaüstü ve
mobil versiyonları için toplanmasını ve bu iki platform için elde edilen ölçüm
sonuçlarının karşılaştırmalı olarak analizini içermektedir.
      </p>
      <p>Bu bildirinin devamı şu şekilde yapılandırılmıştır. İkinci bölümde ilgili çalışmalar
sunulmuştur. Üçüncü bölüm CK metrik kümesine ait metriklerin açıklamalarını
içermektedir. Dördüncü bölüm araştırma yönteminin detaylarını ve tasarımı içermektedir.
Beşinci bölümde yapılan çalışmadan çıkan sonuçların analiz ve tartışması, altıncı
bölümde ise sonuç ve gelecek çalışmalar sunulmaktadır.
2</p>
      <p>İlgili Çalışmalar
Literatürde yazılım ölçümü ve metrikler birçok çalışmanın konusu olmuştur. Ancak
mobil yazılımlarda geleneksel metriklerin uygulanması ile ilgili çok fazla çalışma
bulunmamaktadır. Tablo 1’de araştırma yapılan veri tabanları ve anahtar kelimelerle
eşleşen makale sayıları verilmiştir. İlgili anahtar kelimeler makalenin başlığında,
özetinde ve anahtar kelimelerinde aranmıştır. Bu makalelerden hem mobil uygulamalar
üzerinde çalışılmış olması hem de çalışmalarda yer alan yazılım metriklerinin bizim
uygulamamızla benzerlik taşıması açısından çalışmamızla ilgili olan iki tanesine özet
olarak değinilmiştir.</p>
      <p>Tablo 1. Online veritabanları ve bulunan makale sayıları
Online Veritabanı
Scopus
SpringerLink
Web of Science
Elsevier
Emerald
Wiley InterSciene
ACM
IEEEXplore
"object oriented metrics"
&amp; "mobile applications"
2
7
0
1
0
1
0
1
"software metrics" &amp;
"mobile applications"
9
41
2
24
1
8
1
8
"software metrics"
&amp; "mobile"
32
324
11
151
1
80
3
62</p>
      <p>
        Jošt, Huber &amp; Hericko [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] 2013 yılında yaptıkları çalışmada geleneksel yazılım
metriklerinin mobil uygulamalarda uygulanabilirliğini araştırmışlardır. Bu kapsamda
3 farklı mobil uygulama platformu (Android, iOS ve Windows Phone) için çok fazla
iş kuralı içermeyen, grafiksel arayüz eleman sayısı az olan, genel olarak sınırlı sayıda
dosya içeren küçük ölçekli bir yazılım geliştirmişler ve her uygulama için Kalıtım
ağacının derinliği (DIT), Alt sınıf sayısı (NOC), Metotlardaki uyum eksikliği
(LCOM), Sınıfın ağırlıklı metot sayısı (WMC), Metot sayısı (NOM), Sınıf sayısı
(NOC2) ve Çevrimsel karmaşıklık (CC) metriklerini üç farklı platform için
hesaplamışlardır. Yapılan analizler sonucunda ilgili metriklerin mobil uygulamalar için
kullanılabilirliği kabul edilebilir seviyededir sonucuna varılmıştır. Ayrıca işlevsel olarak
eşdeğer uygulamalardan toplanan metriklerin farklı platformlar için farklılaşacağı da
bu çalışmanın sonuçları arasındadır [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
      <p>
        2015 yılında Syer, Nagappan ve arkadaşları yaptıkları çalışmada [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] farklı
platformlarda geliştirilen mobil yazılımların kod kalitesini araştırmışlardır. Bu amaçla beş
farklı mobil uygulama incelenmiştir. Bunlar ConnectBot, FBReader, KeePassDroid,
Sipdroid, XBMCRemote Android mobil uygulamalarıdır. Bu çalışmada analiz edilen
metrikler ise Kod Satır Sayısı (Lines of Code – LOC), Coupling, Cohesion ve
Platform metrikleridir. Coupling metriği CK metriklerinden CBO metriği ile, Cohesion
metriği ise LCOM metriği ile eşleşmektedir. Platform metriği bu çalışmaya özgü
hesaplanan platform bağımlılık oranını ifade eden ölçümdür. Sunulan sonuç platform
metriğinin kaynak kod kalitesi üzerinde en tutarlı etkiye sahip olduğunu göstermiştir.
      </p>
      <p>İncelenen ilgili çalışmalara bakıldığında üzerinde çalışılan metriklerin genel olarak
CK metrik kümesinden (LOC, WMC, Coupling, Cohesion, …) seçildiği gözlenmiştir.
Ayrıca farklı platformda geliştirilen mobil uygulamalar için ilgili metrikler kendi
içlerinde karşılaştırılmış olup mobil uygulamalarda her bir metriğin göstermiş olduğu
davranış karşılaştırılmıştır. Fakat incelenen hiçbir çalışmada uygulamaların mobil ve
masaüstü versiyonları için herhangi bir kıyaslamaya gidilmemiştir.
3</p>
    </sec>
    <sec id="sec-2">
      <title>Chidamber &amp; Kemerer (CK) Nesne Tabanlı Metrik Kümesi</title>
      <p>
        Nesne yönelimli yazılımlar kapsülleme (encapsulation), kalıtım (inheritance), çok
biçimlilik (polymorphism), uyumluluk (coherence) ve bağımlılık (coupling) gibi farklı
özelliklere sahiptir [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Bu özellikler yazılım kalitesinde de etki göstermektedir.
Gerek geliştirme, gerekse test ve bakım faaliyetlerinde bu özellikler kullanılarak
çıkarım yapılabilmektedir. Kullanımı hızla artan bu dillerdeki yazılımların kalite ölçüm
metriklerinin diğer yazılımlardan farklı olması sebebiyle Chidamber ve Kemerer [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
1994 yılında kendi adlarını taşıyan (CK) bir metrik kümesi oluşturmuşlardır. CK
metrik kümesi temelde aşağıda tanımlanan altı metriği ele almaktadır.
3.1
      </p>
      <sec id="sec-2-1">
        <title>WMC: Sınıf Başı Ağırlıklı Metot Sayısı (Weighted Methods Per Class)</title>
        <p>
          Sınıf başına düşen ağırlıklı metotlardır. Eğer bir C sınıfının metotları sırasıyla M1,
M2, … Mn ise ve bu metotların karmaşıklığı c1, …, cn ise bu C sınıfının ağırlıklı
metot sayısı (WMC) aşağıdaki gibidir [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. Sınıfların olabildiği kadar öz olarak
tasarımı beklendiğinden sınıfın karmaşıklık derecesini ifade eden bu metriğin değerinin
düşük olması beklenmektedir.
        </p>
        <p>WMC =
#
$%&amp; 
3.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>DIT: Kalıtım Ağacının Derinliği (Depth Of Inheritance Tree)</title>
        <p>
          Bir sınıfın kalıtım ağacının köküne olan maksimum uzaklığıdır. Eğer sınıf herhangi
bir sınıftan türetilmemişse değeri 0’dır [
          <xref ref-type="bibr" rid="ref16 ref18 ref6">6, 16, 18</xref>
          ]. Tekrar kullanılabilirlik açısından
bakıldığında bu metrik değerinin yüksek olmasının getirdiği kazanımlar olmasına
rağmen, karmaşıklık açısından değerlendirildiğinde ise düşük değerli olması
beklenmektedir. Tekrar kullanılabilirlik ve karmaşıklık için ortalama (dengede) bir değerde
bulunması beklenmektedir.
Bir sınıftan doğrudan türetilmiş olan sınıf sayısıdır. Alt sınıf sayısının yüksek olması
genel olarak daha karmaşık, bakım yapılabilmesi daha zor ve hataya eğilimi daha
yüksek kod anlamına gelmektedir. Bu sebeple değeri düşük olmalıdır [
          <xref ref-type="bibr" rid="ref17 ref18 ref6">6, 17, 18</xref>
          ].
Bir sınıfın bağımlı olduğu sınıf sayısıdır. Bir sınıf içindeki değişken veya metodun
diğer sınıf tarafından kullanılması iki sınıf arasında bağımlılık oluşturmaktadır [
          <xref ref-type="bibr" rid="ref16 ref18 ref6">6, 16,
18</xref>
          ]. Kapsülleme ve modülerliğin yüksek olması açısından bakıldığında bu metriğin
düşük değerde olması beklenmektedir.
3.5
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>RFC: Sınıfın Tetiklediği Metot Sayısı (Response For a Class)</title>
        <p>
          Bir sınıftaki metotların sayısı ve bu sınıfın metotları tarafından çağrılan sınıfların
metot sayısının toplamıdır. Yani bir nesne tarafından çağrılabilen metot sayısıdır. Test
edilebilirlik ve bakım açısından bu metrik değerinin yüksek olması karmaşıklığı
artırmaktadır. Bu sebeple değerinin düşük olması beklenmektedir [
          <xref ref-type="bibr" rid="ref16 ref18 ref6">6, 16, 18</xref>
          ].
3.6
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>LCOM: Metot İçi Uyumsuzluk (Lack of Cohesion in Methods)</title>
        <p>
          Bir C sınıfının n tane metodu varsa M1, M2, … Mn , {Ij} seti Mi tarafından kullanılan
nitelik değişkenleri (instance variables) kümesiyse; LCOM bu n kümenin kesişimi
sonucu oluşan ayrık küme sayısıdır [
          <xref ref-type="bibr" rid="ref16 ref18 ref6">6, 16, 18</xref>
          ]. Yüksek kaliteli bir yazılımda LCOM
değerinin düşük olması beklenmektedir. Bu değerin yüksek olması karmaşıklığı
artıracaktır ve böyle bir sınıfın iki veya daha fazla alt sınıfa bölünmesi önerilmektedir.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Araştırma Yöntemi</title>
      <p>Bu bölümde nesne tabanlı yazılım metriklerinden olan CK metrik kümesinin mobil
uygulamalar için kullanılabilirliğinin araştırılması için takip edilen yaklaşım
özetlenmiştir. Öncelikle analiz için veri sağlayacak olan masaüstü ve mobil uygulamalar
seçilmiştir. İkinci olarak araştırmada kullanılacak metrik seti seçilmiştir. Daha sonra
seçilen masaüstü ve mobil uygulamalarda statik kod analizleri yapılarak ilgili
metrikler çıkarılmıştır. Son olarak hesaplanan veriler analiz edilerek mobil uygulamalarda
nesne tabanlı yazılım metriklerinin kullanılıp kullanılamayacağı yorumlanmıştır.
4.1</p>
      <sec id="sec-3-1">
        <title>Uygulama seçimi</title>
        <p>Bu çalışmada statik kod analizi yapılan uygulamalar aşağıdaki kriterler göz önüne
alınarak seçilmiştir:
• Açık kaynak kodlu uygulamalar. Seçilecek uygulamaların kaynak kodlarına
Github tarzı veri depolarından erişim sağlayabilmek için uygulamaların açık
kaynak kodlu olması gerekmektedir.
• Mobil ve Masaüstü platformlar. Seçilecek uygulamalarda karşılaştırma
yapabilmemiz için uygulamaların her iki farklı platform için geliştirilmiş olması
gerekmektedir. Çoğu mobil uygulama, masaüstü uygulaması bulunmamasından
dolayı bu çalışmada kullanılamamıştır.
• Nesne tabanlı dillerde geliştirilmiş uygulamalar. Seçilecek uygulamalarda CK
nesne tabanlı metrik kümesi kullanılacağı için uygulamaların nesne yönelimli
bir programlama dilinde yazılması gerekmektedir. Örneğin masaüstü
uygulaması C dilinde yazılmış mobil uygulamalar bu kıstasa uymadığından elenmiştir.
• Kod bazının basit olması. Seçilecek uygulamanın mobil ve masaüstü veri
depolarının ayrı olması gerekmektedir. Masaüstü ve mobil kaynak kodlarının iç içe
yayınlandığı kod depoları ayrıştırmayı zorlaştırdığı için filtrelenmiştir.
Ek olarak, yukarıdaki kriterlere uyan ancak kod büyüklüğü çok olmayan (örneğin
uygulama geliştirme aşamasındayken yapılan değişiklik sayısı az olan, koda
katkıda bulunan kişi sayısı az olan), az sayıda sınıf içeren uygulamalar da filtrelenmiştir.</p>
        <p>Tablo 2 ilgili kriterlerden geçen ve bu çalışmada kullandığımız son uygulama
listesini içermektedir.</p>
        <p>Tablo 2. Analiz edilen uygulamalar (Son kaynak kod erişim tarihi: Mayıs 2016)
Uygulama
KeePass
KeePassDroid
AdBlockPlus
AdBlockPlus Mobil
Telegram Masaüstü
Telegram Mobil
Zulip Masaüstü
Zulip Mobil</p>
        <p>Prg.Dili
C++
Java
Java
Java
C++
Java
C++
Java</p>
        <p>Kaynak Kod Adresi
https://github.com/keepassx/keepassx
https://github.com/bpellin/keepassdroid
https://github.com/adblockplus/adblockplussbrowser
https://github.com/adblockplus/adblockplusandroid
https://github.com/telegramdesktop/tdesktop
https://github.com/DrKLO/Telegram
https://github.com/zulip/zulip-desktop
https://github.com/zulip/zulip-android
4.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Statik kaynak kod analizi aracı seçimi</title>
        <p>
          Seçilen her masaüstü ve mobil uygulamada statik kaynak kod analizi Understand [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]
analiz aracıyla yapılmıştır. Understand, Java, C++, C#, Ada, Python gibi çeşitli
programlama dillerinde yazılmış kaynak kodunu ölçmek ve analiz etmek için kullanılan,
Scitools tarafından geliştirilen bir ticari statik analiz araç setidir. Aralarında NASA,
US Navy, UK Ministry of Defence, Apple, Microsoft, ve Google gibi firmaların da
bulunduğu yaklaşık 20.000 kullanıcısı vardır [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Güncel olarak geliştirilmeye
devam etmektedir ve son sürümü 3 Haziran 2016 tarihinde yayınlanmıştır [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ].
        </p>
        <p>
          Araştırma için seçilen uygulamalar Understand statik kod analiz aracı kullanılarak
analiz edilmiş ve bu uygulamalarda CK metrikleri olarak adlandırılan altı metrik
(WMC, DIT, NOC, CBO, RFC, LCOM) hesaplanmıştır [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
5
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sonuçların Analizi ve Tartışma</title>
      <p>Seçilen dört farklı uygulamanın masaüstü ve mobil versiyonları üzerinde yapılan
inceleme ve analizlerin sonuçları altı metrik ile ilişkili çeşitli grafikler ve tablolar
olarak özetlenmiştir. Bu çıktıların değerlendirilmesi aşamasında, yapılan çalışmanın
amacına uygun olarak geleneksel metriklerin mobil yazılımlarda da kullanılabilirliği
gözlemlenmeye çalışılmıştır. Metriklerin sınıf seviyesinde değerlendirmeye tabi
tutulması dolayısıyla her bir uygulamanın sınıf sayısı Tablo 3’te gözlenmektedir:</p>
      <p>Tablo 3. Analiz edilen uygulamaların sınıf sayıları
Uygulama Adı
AdBlock
KeePass
Telegram
Zulip</p>
      <p>Versiyon
masaüstü</p>
      <p>mobil
masaüstü</p>
      <p>mobil
masaüstü</p>
      <p>mobil
masaüstü
mobil</p>
      <p>Sınıf Sayısı
36
152
160
510
1661
3354
65
119</p>
      <sec id="sec-4-1">
        <title>Nesne Sınıfları Arasındaki Bağımlılık (CBO) metriği ile bir sınıfın bağımlı olduğu</title>
        <p>sınıf sayısının değerinin ölçümü yapılmış olup, elde edilen grafikler ile tüm
uygulamaların mobil versiyonlarının x ekseni doğrultusunda bir genişlemeye neden olan
değerlere sahip olduğu görülmektedir. Yazılım kalitesi açısından CBO değerinin
düşük olması beklenmektedir. Dolayısıyla elde edilen bulgular ile AdBlock ve KeePass
uygulamalarının mobil versiyonlarında daha düşük değerler karşımıza çıkarken;
Telegram ve Zulip uygulamalarının masaüstü versiyonlarında ölçülen bu metrik
değerinin daha düşük olduğu görülmüştür (Şekil 1).
Şekil. 1. CBO Metrik Değeri vs. Sınıf Sayısı
Alt Sınıf Sayısı (NOC) metriği incelendiğinde dört uygulamanın üçünün (AdBlock,
KeePass, Zulip) masaüstü versiyonlarında, Telegram’ın ise mobil versiyonunda bu
değerin daha düşük olduğu gözlenmiştir. Ayrıca, genelde mobil versiyonlarda bir
sınıftan doğrudan türetilmiş sınıf sayısının fazla olduğu göze çarpmıştır (Şekil 2).</p>
        <p>Şekil. 2. NOC Metrik Değeri vs. Sınıf Sayısı
Sınıfın Tetiklediği Metot Sayısı (RFC) metriği incelendiğinde düşük değerde olması
beklenen bu metrik değerinin KeePass ve Telegram uygulamalarının mobil
versiyonlarında, AdBlock ve Zulip uygulamalarının ise masaüstü versiyonlarında daha düşük
değerde olduğu görülmüştür (Şekil 3).</p>
        <p>Kalıtım Ağacının Derinliği (DIT) metriğine göre karşılaştırma yapıldığında bu
metriğin ortalama değerinin birbirine yakın sonuçlara sahip olduğu görülmüştür. Ayrıca
Telegram dışındaki uygulamaların mobil versiyonlarında kalıtım ağacının derinliğinin
de daha yüksek seviyelerde seyrettiği tespit edilmiştir. (Şekil 4).</p>
        <p>Sınıf Başı Ağırlıklı Metot Sayısı (WMC) metriği incelendiğinde AdBlock
uygulaması dışındaki diğer üç uygulamanın mobil versiyonunda masaüstü versiyonuna göre
daha düşük değerler elde edildiği görülmüştür (Şekil 5).
Şekil. 4. DIT Metrik Değeri vs. Sınıf Sayısı
Metot İçi Uyumsuzluk Yüzdesi (PLCOM) metriği incelendiğinde dört uygulamanın
masaüstü ve mobil versiyonlarının uyumsuzluk yüzdesi karşılaştırıldığında tüm
uygulamaların mobil versiyonlarında bu metrik değerlerinin masaüstü versiyonlarına
oranla daha düşük olduğu gözlemlenmiştir. Bu nedenle bu metriğin mobil uygulamalarda
etkin bir şekilde kullanılabileceği düşünülmektedir (Şekil 6).</p>
        <p>Tablo 4’de sonuçların daha detaylı incelenebilmesi için yukarıdaki ş ekillerde
grafiksel olarak gösterilen tüm parametreler birlikte verilmiştir.
Şekil. 6. PLCOM Metrik Değeri vs. Sınıf Sayısı
6</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Sonuç ve Gelecek Çalışmalar</title>
      <p>Bu çalışmada, AdBlock, KeePass, Telegram ve Zulip açık kaynak kodlu
uygulamalarının, masaüstü ve mobil versiyonları için CK metrik kümesi metrikleri “Understand”
statik kod analiz aracı kullanılarak elde edilmiş ve elde edilen değerler
karşılaştırılarak, geleneksel masaüstü uygulamalarında kullanılan yazılım metriklerinin mobil
uygulamalarda etkin olarak kullanılabilirliği araştırılmıştır. Tablo 4 ve grafiklerden
anlaşılacağı üzere CBO metriğinin davranışı Telegram – Zulip ve AdBlock - KeePass
olarak sınıflandırabilir. Bu metrik Telegram – Zulip için mobil uygulamalarda daha
yüksek değere sahipken AdBlock – KeePass için masaüstü uygulamalarda daha
yüksek değere sahiptir. NOC metriği Telegram uygulaması hariç mobil uygulamalarda
daha yüksek değer almıştır. RFC metriği ise uygulamaları davranış yönünden
AdBlock – Zulip, KeePass – Telegram olarak gruplamıştır. AdBlock ve Zulip
uygulamalarının mobil versiyonlarında RFC metriğinin daha yüksek değere sahip olduğu
gözlenirken, KeePass ve Telegram uygulamalarının masaüstü versiyonlarında RFC
değerinin daha yüksek değer aldığı görülmüştür. DIT metriğinin ortalama değerleri
incelendiğinde AdBlock – KeePass uygulamalarında mobil versiyonların metrik değeri daha
yüksekken, Telegram – Zulip uygulamalarında tam tersi bir durum söz konusudur.
WMC metriği ise AdBlock hariç mobil versiyonlarda daha düşük değere sahiptir.
PLCOM metriği tüm uygulamaların mobil versiyonlarında daha düşük değer almıştır.</p>
      <p>Tablo 4. Metriklerin Uygulama Bazında Karşılaştırılması</p>
      <p>Sonuç olarak aynı uygulamanın masaüstü ve mobil sürümlerinin (içsel) kalite
özellikleri arasında total bir korelasyon bulunamamıştır. Desktop uygulamasının
kalitesinin mobil uygulamanın kalitesi üzerine direkt etkisi gösterilememiştir. Bu nedenle
gelecek çalışmalarda metrik tabanlı analizlerin daha ayrıntılandırılması
planlanmaktadır. Ayrıca gelecekte yapılması planlanan çalışmalar arasında, bu çalışmanın aynı
programlama diliyle yazılmış masaüstü ve mobil uygulamalarda da uygulanması ve
farklı metrikler ile kıyaslama yapılması bulunmaktadır.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>1. Number of apps in leading app stores, 2016 Statistic</article-title>
          , URL https://www.statista.com/ statistics/276623/number-of
          <article-title>-apps-available-in-leading-app-stores.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. ISO/IEC 9126-1:
          <fpage>2001</fpage>
          - Software engineering --
          <string-name>
            <surname>Product</surname>
          </string-name>
          quality -- Part 1:
          <string-name>
            <surname>Quality</surname>
            <given-names>model</given-names>
          </string-name>
          , URL http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.
          <source>htm? csnumber=22749</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Fenton</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Bieman</surname>
          </string-name>
          , J.:
          <article-title>Software metrics: a rigorous and practical approach</article-title>
          . CRC Press.
          <article-title>(</article-title>
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Sommerville</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          : Software Engineering, 9th ed.,
          <source>Pearson Education Inc. Addison-Wesley</source>
          , Boston. (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Taytaş</surname>
            ,
            <given-names>E.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gün</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dinçer</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baştüzel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tekin</surname>
            ,
            <given-names>B.: Kamu</given-names>
          </string-name>
          <string-name>
            <surname>Kurumları Tarafından Yazılım Satın Alma Sürecinde Kullanılacak Etkin Bir Yöntem Geliştirilmesi</surname>
          </string-name>
          .
          <source>Proceedings of the 9th Turkish National Software Engineering Symposium. Yaşar Üniversitesi</source>
          , Izmir,
          <string-name>
            <surname>Turkey.</surname>
          </string-name>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Chidamber</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kemerer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>A metrics suite for object oriented design</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          .
          <volume>20</volume>
          ,
          <fpage>476</fpage>
          -
          <lpage>493</lpage>
          , (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Abreu</surname>
            ,
            <given-names>F. B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carapuça</surname>
          </string-name>
          , R.:
          <article-title>Object-Oriented Software Engineering : Measuring and Controlling the Development Process</article-title>
          . 4th.
          <source>International Conference of Software Quality</source>
          ,
          <volume>4</volume>
          (
          <issue>October</issue>
          ),
          <fpage>3</fpage>
          -
          <lpage>5</lpage>
          . (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Bansiya</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>C. G.</given-names>
          </string-name>
          :
          <article-title>A hierarchical model for object-oriented design quality assessment</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <volume>28</volume>
          (
          <issue>1</issue>
          ),
          <fpage>4</fpage>
          -
          <lpage>17</lpage>
          . (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Mcquillan</surname>
            ,
            <given-names>J. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Power</surname>
            ,
            <given-names>J. F.</given-names>
          </string-name>
          :
          <article-title>Some observations on the application of software metrics to UML models - Position Paper</article-title>
          . (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>10. AdBlockPlus, URL https://github.com/adblockplus</mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>11. KeePass, URL https://github.com/keepassx</mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Telegram</surname>
          </string-name>
          , URL https://github.com/telegram
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Zulip</surname>
          </string-name>
          , URL https://github.com/zulip
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Jošt</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huber</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ičko</surname>
            ,
            <given-names>M. H. E. R.</given-names>
          </string-name>
          :
          <article-title>Using Object Oriented Software Metrics for Mobile Application Development</article-title>
          .
          <source>Second Workshop on Software Quality Analysis, Monitoring, Improvement and Applications</source>
          ,
          <volume>17</volume>
          -
          <fpage>27</fpage>
          . (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Syer</surname>
            ,
            <given-names>M. D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nagappan</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Adams</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hassan</surname>
            ,
            <given-names>A. E.</given-names>
          </string-name>
          :
          <article-title>Studying the relationship between source code quality and mobile platform dependence</article-title>
          .
          <source>Software Quality Journal</source>
          ,
          <volume>23</volume>
          (
          <issue>3</issue>
          ),
          <fpage>485</fpage>
          -
          <lpage>508</lpage>
          . (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Ural</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Umut</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Feza</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Nesneye Dayalı Yazılım Metrikleri ve Yazılım Kalitesi. Yazı- lım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu</article-title>
          . (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Marinescu</surname>
          </string-name>
          , R.:
          <article-title>Using object-oriented metrics for automatic design flaws detection in large scale systems</article-title>
          .
          <source>Lecture Notes in Computer Science</source>
          ,
          <volume>1543</volume>
          ,
          <fpage>252</fpage>
          -
          <lpage>252</lpage>
          . (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Deursen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Van</surname>
            , Magiel,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Predicting Class Testability using Object-Oriented Metrics</article-title>
          .
          <source>Fourth IEEE International Workshop</source>
          . (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Scitools</surname>
          </string-name>
          , URL https://stage.scitools.com/
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>20. Scitools | Build Notes, URL https://scitools.com/build-notes/</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>