<!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>Kodu İyileştirmeye Nereden Başlamalı? Bir Yazılım Metrik Yaklaşımı: Yazılım Kalite Risk Oranı</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Furkan Palıgu</string-name>
          <email>furkan.paligu@tubitak.gov.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Savaş Öztürk</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nurhan Yağcı</string-name>
          <email>nurhan.yagci@tubitak.gov.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Yazılım Test ve Kalite Değerlendirme Merkezi, TÜBİTAK</institution>
          ,
          <addr-line>Kocaeli</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Özet. Kod gözden geçirme, yeniden yapılandırma, testlere başlama gibi kritik karar alma zamanlarında kodu iyileştirmeye nereden başlanacağı ya da en çok hangi modül ya da kod parçacıklarına dikkat edilmesi gerektiği önemli bir araştırma konusudur. Bu çalışmada, bir yazılım projesinde sadece kaynak kodu kullanarak yazılım metrikleri açısından en problemli metot ve sınıfların tespitine yönelik bir oran hesaplaması geliştirilmiştir. Karmaşıklık, Satır sayısı ve nesne yönelimli metrik gruplarından yaklaşık 20 adet metriğin ölçüm değerleri, eşik aşım sayısı ve eşiği aşma miktarları dikkate alınarak hesaplanan katsayıları kullanarak tümleştirilmiş ve en riskli yazılım bölümleri tespit edilmiştir. Bu çalışma sayesinde ekip liderleri sorumlu oldukları yazılım projelerinde kısa sürede etkin işbölümü ve organizasyon yaparak, geliştiricileri çok sayıda metriği ölçme ve değerlendirme yükünden kurtarmış olacaktır.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Bir projenin yazılım kalite metrikleri ile statik analizleri yapıldığında genellikle çok
fazla ve karışık sonuçlar ortaya çıkar. Sadece McCabe 150´den fazla metrik
içermektedir [1]. Yazılım kalite ölçüm araçlardan alınan sonuçların yazılım geliştirici
tarafından yorumlanması ve iyileştirme çalışmalarının başlaması zor ve zaman alıcıdır.
Yazılımcı her zaman metriklerin tanımları ile aşina değildir ve projedeki birçok öğe
arasından probleme etkisi yüksek olanları tespit etmek fazlaca gayret ister. Bu tespit
sürecini hızlandırmak bütün metriklerden alınan sonuçların ortak bir paydada
toplanması ile mümkündür. YKRO (Yazılım Kalite Risk Oranı) metriği, bütün metrik ölçüm
sonuçları yorumlanarak oluşturulan birleştirici bir metriktir ve projede probleme etkisi
en fazla olan öğelerin tespitinde kullanılması amaçlanmaktadır.</p>
      <p>Bir projede her zaman gözden geçirme ve kalite arttırma faaliyetlerini detaylı
olarak yürütecek zaman mevcut değildir. Proje yöneticisi, yazılımdaki kaliteyi sağlamak
amacı ile ekipteki bazı bireyleri ekip arkadaşlarının geliştirdiği kodları gözden
geçirmek üzere görevlendirir. Fakat bu çalışma genellikle hızlı ve verimsiz olarak
tamamlanır. Yeterli zaman bulunsa dahi yazılımcılar çalışan kodlar üzerinde detaylı
incelemeler yapmaya meyilli değildir. Dolayısı ile birçok önemli nokta gözden kaçmakta ve
çalışmalar bir formaliteye dönme eğilimi göstermektedir. Kalite metriklerine göre
problemin yoğunlaştığı öğeleri deşifre etmek gözden geçirme faaliyetlerinde
verimliliği arttıracaktır çünkü iyileştirme çalışmalarında gözden geçirilmesi gereken öncelikli
öğeler aynı zamanda probleme etkisi en fazla olan öğelerdir, aynı şekilde ilk test
edilmesi gereken öğeler problem çıkartma potansiyeli en yüksek olanlardır.
Problemin odak noktalarının tespiti aynı zamanda öğelere işlem görme önceliklendirmesi
sağlamış olur. Bu önceliklendirme sınırlı zaman içerisinde en verimli test ve gözden
geçirmelerin yapılmasını böylece kısa bir süre içerisinde verimli bir iyileştirme
gerçekleştirilmesini sağlar.</p>
      <p>YKRO, ölçüm raporlarının hızlı ve verimli değerlendirilmesini sağladığı gibi proje
ekibinin başarısı, problem oluşturan öğeler ve kalite metrik sonuçlarındaki problemin
proje genelindeki dağılımı gibi proje yönetimini yakından ilgilendiren konular
hakkında da bilgiler verir. Böylece proje yöneticisinin teknik detaya girmeden projenin
gidişatı hakkında bilgi edinmesini sağlar. Problemin hangi öğelerde yoğunlaştığı
bilgisinin proje yöneticisi tarafından sürekli olarak takip edilebilmesi bu öğelerden
sorumlu olan yazılımcıların kalite iyileştirme faaliyetlerine daha fazla ilgi göstererek
projenin sürdürülebilirlik ve bakım yapılabilirliğini arttırmasıyla sonuçlanır.</p>
      <p>Bu kullanım tercih ve duruma göre daha verimli bir şekle getirilebilir, örneğin bir
proje ekibi bütün YKRO değerlerini 10´un altına indirmek gibi bir hedef koyabilir.
Böylece hiçbir metot ya da sınıf projedeki kalite ölçüm sorunlarının %10´undan
fazlasını bünyesinde bulundurmuş olmaz. Proje düzenli bir yazılım kalite dağılımına sahip
olur.</p>
      <p>Bu makalede YKRO metriğinin prensipleri anlatılmış, benzer çalışmalardan
bahsedilmiş ve çeşitli kodlar üzerinde yapılan metrik ölçüm sonuçlarından alınan değerler
üzerinde örnekler gösterilmiştir.
2</p>
      <p>İlgili Çalışmalar
Daha önce belirli metrikleri birleştiren çalışmalar yapılmıştır. Bu çalışmaların en çok
bilineni Oman ve Hagemeister tarafından önerilen Maintainability Index (MI)
çalışmasıdır. Maintainability Index bazı geleneksel metriklerin birleşimi ile oluşan ve
bakım yapılabilirliği ölçmeyi amaçlayan bir metriktir. Halstead Metrik Grubu´dan
efor ve hacim, McCabe´in çevrimsel karmaşıklığı ve kod satır sayısı metriklerinden
oluşur. Bazı durumlarda bu birleşime yorum satır sayısı da dâhil olur. [2-3]</p>
      <p>Kullanılan metriklerin seçimindeki gerekçe altta listelenen özellikleri sayısal olarak
ifade edebilecek olan ölçüm metotlarını kendi bünyesinde birleştirmektir.
 Ne kadar değişken bulunduğu ve bu değişkenlerin nasıl kullanıldığı – efor ve
hacim
 Programın karmaşıklığı – çevrimsel karmaşıklık
 Programın büyüklüğü – satır sayısı
 Programın bir insan tarafından anlaşılabilirliği – yorum satır sayısı
Maintainability Index için çeşitli farklılıklar içeren varyantlar da türemiştir [4-5-6]
fakat bu çalışmaların hepsi genelinde aynı prensipleri takip eder.</p>
      <p>Birleştirici bir metrik olma özelliğini taşıyan benzer bir yapı da sonar aracında
kullanılan ve Ward Cunningham tarafından icat edilen Technical Debt kavramıdır[7].
5 ölçütten elde edilen sonuçlara göre hesaplanır; Kod kopyalaması, yazılım kural
ihlalleri, yorumlar, test kapsamı ve karmaşıklık. Zaman içerisinde hızlı ve verimsiz
bir şekilde geliştirilen yazılımların bahsedilen ölçütlere göre oluşturduğu problemlerin
çözülmesi için ne boyutta bir çalışma gücüne ihtiyaç olduğunun tespiti üzerine
kurulmuştur.</p>
      <p>Bu çalışmalar birçok ölçütten alınan değerlerin birleştirilip yorumlanması
bakımından YKRO ile aynı çizgidedir. Fakat bu çalışmaların amacı ölçülebilir bir rakam
ile problemin boyutunu sergilemektir. YKRO´un amacı ise problemin ne boyutta
olduğunu göz önüne almaksızın var olan problemin hangi öğeler üzerinde
yoğunlaştığını gösterip problemin hızlı çözülmesi için bir yol gösterici olmaktır.</p>
      <p>YKRO problemin boyutunu işaret eden yapılar ile kullanıldığında daha verimli
olur. Bir alternatif değil bir tamamlayıcıdır. Bir kullanıcı, kalite metrik sonuçlarından
problemin varlığı ve ciddiyeti hakkındaki bilgileri aldığında bir sonraki aşamaya yani
bu problemin çözümü üzerine stratejiler geliştirilmesine geçer. Burada YKRO´un
sorunlu öğeleri hedef göstermesi strateji çalışmalarındaki verimliliği arttırır. İdeal bir
kalite değerlendirme raporunda problemin boyutu, yeri ve çözümü üzerine öneriler
olmalıdır. Böylece yazılım kalite değerlendirme raporu, yazılımcının hatalarını açığa
vuran bir kavram olmaktan kurtulup proje ekibinin büyük bir yardımcısına dönüşür.
YKRO metriğinin en temel amacı da budur.
3</p>
      <p>Önerilen Çalışma
YKRO değeri bir metodun proje kalite ölçüm problemlerine yaptığı katkının yüzdelik
ifadesine tekabül eder. Örneğin bir sınıfın YKRO değeri 20 olarak hesaplanmış ise, o
sınıftaki kalite problemlerinin çözümü proje genelindeki sınıf problemlerin %20
azalması demektir. Buradaki amaç problemin büyüklüğünü değil var olan problemin
metot ve sınıflar üzerindeki dağılımını göstermektir.</p>
      <p>Bir öğenin projedeki metrik kalite ölçümlerinde ortaya çıkan problemlerin ne
kadarını oluşturduğunu tespit etmek, o metodun her metrik ölçümünden aldığı sonuçların
ve projenin geri kalan metotlarının aynı ölçümlerde verdiği sonuçların
değerlendirilmesi ile olur. McCabe IQ aracında ölçüm birçok metrik ile yapılır ve her metriğin eşik
değeri birbirinden farklıdır. Bu sebeple farklı metrik ölçüm sonuçlarının doğrudan
bütünleştirilmesi mümkün değildir. Her metriğin ayrı olarak ele alınması ve verdiği
sonucun belirli katsayılar ile işlenerek genelde birleştirilmesi gerekir.
3.1</p>
    </sec>
    <sec id="sec-2">
      <title>YKRO Hesaplama</title>
      <p>
        Bir metot ya da sınıfın YKRO değeri Formül (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) ve Formül (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) ye göre hesaplanır.
      </p>
      <p>
        Tdj = ∑ (MVij-Thrj)
YKROi = ∑ ( (MVij-Thrj) / Tdj * 100) * Cj
(
        <xref ref-type="bibr" rid="ref1">1</xref>
        )
(
        <xref ref-type="bibr" rid="ref2">2</xref>
        )
      </p>
      <p>
        Formül (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) ve Formül (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) de i metot ya da sınıf numaralandırıcısıdır, j metrik tipi,
Tdj metot ya da sınıfın risk değeri, MVij metrik ölçüm sonucu, Thrj seçilen metriğin
eşik değeri ve Cj seçilen metriğe verilen katsayıdır. MVij - Thrj değerinin Thrj´in
MVij den büyük olması durumunda 0 olarak kabul edilmesi gereklidir.
      </p>
      <p>Seçilen metrikler, tercih edilen eşik değerleri ve belirlenen metrik önem katsayıları
Tablo 1´de gösterilmiştir. Metrikler seviyelerine göre iki gruba ayrılmıştır; metot
seviyesindeki metrikler ve sınıf seviyesindeki metrikler. İki grupta da katsayıların
toplamı 1´i verir.</p>
      <p>Metrik önem katsayısı atamasında 3 farklı yöntem kullanılır; bu yöntemler metrik
önem katsayısı başlığı altında detaylı olarak anlatılmıştır. Katsayılar proje tipine ya da
tercihlere göre atanabilir. Bu çalışmada kullanılan metrik önem katsayıları yazılımın
türü ve önceki ölçüm değerlerine göre tercihler doğrultusunda atanmıştır.</p>
      <sec id="sec-2-1">
        <title>Tablo 1. Seçilen Yazılım Metrikleri [8]</title>
        <p>Metrik
Çevrimsel Karmaşıklık
Esas Karmaşıklık
Modül Tasarım Karmaşıklığı
Genel Veri Karmaşıklığı
Kod Satır Sayısı
Yorum Satır Sayısı
Boş Satır Sayısı
Karışık Satır Sayısı
Maksimum Çevrimsel Karmaşıklık
Maksimum Esas Karmaşıklık
Ortalama Çevrimsel Karmaşıklık
Toplam Çevrimsel Karmaşıklık
Kalıtım Ağacı Derinliği
Bütünlük Kaybı
Bir Sınıf İçin Çağrı Sayısı
Sınıf İçindeki Metot Sayısı
Bağımlı Sınıf Sayısı
Herkese Açık Veri</p>
        <p>Metrik
Kodu
v(G)
ev(G)
iv(G)
gdv(G)
Code
Comment
Blank
mixed
MAXV
MAXEV
AVGV
SUMV
DIT
LOCM
RFC
WMC
CBO
pubdata</p>
        <p>Metrik
Seviyesi</p>
        <p>Metot
Metot
Metot
Metot
Metot
Metot
Metot
Metot
Sınıf
Sınıf
Sınıf
Sınıf
Sınıf
Sınıf
Sınıf
Sınıf
Sınıf
Sınıf</p>
        <p>Eşik
Ölçülen v(G)
Fark = Ölçülen – Eşik Değeri
Ayarlı Fark = (Fark / Toplam Fark) *100
Ağırlıklı Değer = Ayarlı Fark * Metrik Önem
Katsayısı
Tablo 2´de YKRO´un örnek bir hesaplanması detaylı olarak gösterilmiştir. Örnekte 3
farklı metot için çevrimsel karmaşıklık metriğinin YKRO etkisi hesaplanmaktadır.
Tablodaki hesaplamada B metodu %10 değeriyle çevrimsel karmaşıklık bakımından
eşik aşımına etkisi en yüksek olan metot olarak tespit edilmiştir. Bu hesaplama bütün
metot seviyesindeki metrikler için yapıldığında metotların her metrik için alacakları
değerlerin toplamı o metotların YKRO değerleri olacaktır.</p>
        <p>YKRO değeri her metot ve sınıf için hesaplandıktan ve değerler azalan düzende
sıralandıktan sonra sınıf ve metotlar olmak üzere iki riskli grup oluşturulur. Her
seviyedeki YKRO toplamları her zaman 100 çıkacaktır.</p>
        <p>3 farklı metot ve bu metotların bazı metriklerin ölçümünden alınan sonuçları Tablo
3´de listelenmiştir. Metot D ve Metot E için sadece Kod Satır Sayısı metriği eşik
değerinin üzerinde kalmıştır. Dolayısı ile bu metotlar için YKRO değerleri sadece Kod
Satır Sayısı metriğinden alacakları değerler ile belirlenecektir. Metot F için bütün
ölçüm değerlerinin metrik eşik değerleri ile aynı olduğu gözlenmektedir. Bu durumda
eşik aşılmadığı için YKRO değeri 0 olarak hesaplanır. Görüldüğü üzere Metot F´den
alınan ölçüm sonuçları Metot D´den alınan sonuçlara kıyasla daha yüksektir, fakat
metriklerden birinin eşik değerinin aşılması Metot D´in Metot F´den daha kötü bir
sonuç almasıyla sonuçlanmıştır. Görülmektedir ki kullanılacak olan eşik değerlerinin
belirlenmesi proje için önemli bir karar aşamasıdır.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Tablo 3. Karşılaştırmalı YKRO Örneği</title>
        <p>
          Yazılım Genel bilgileri Tablo 4´de verilen proje 14240 satır sayısı ile orta
büyüklükte kabul edilen bir Java projesidir[9-10]. Yazılım kalite metrikleri ölçümleri
McCabe IQ aracı kullanılarak alınmıştır. Projenin ölçümleri üzerinde YKRO değerleri
önceki bölümde verilen Formül (
          <xref ref-type="bibr" rid="ref2">2</xref>
          )´ye göre Tablo 1´deki metrik önem katsayıları
kullanılarak hesaplanmıştır.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Tablo 4. Örnek Proje Genel Değerleri</title>
        <p>Parametre
Satır sayısı
Sınıf sayısı
Metot sayısı</p>
        <p>Miktar
14240
129</p>
        <p>Hesaplanan metot YKRO değerlerinin ilk 7´si Tablo 5´de azalan sırada
listelenmiştir. Sadece birkaç metot üzerinde iyileştirme çalışması yapılması projeyi düzgün
ve dengeli bir yapıya sokacaktır. 741 tane metodu olan bu projede 3 metodun yazılım
kalite ölçüm problemlerindeki etkisi %40 civarındadır (3 metodun YKRO
değerlerinin toplamı %40 civarındadır). YKRO´ın projedeki risk kaynakları olarak işaret
ettiği bu metotların YKRO değerlerinin yanında metrik ölçüm sonuçları de
verilmiştir. Böylece kod iyileştirme çalışmalarına nereden ve nasıl başlanacağı basit bir
tablo ile ifade edilmiştir.</p>
      </sec>
      <sec id="sec-2-4">
        <title>Tablo 5. Metot YKRO Sıralanmış Listesi</title>
        <p>Boyut</p>
        <p>Karmaşıklık
YKRO LOC
24.46
ev(G)
67
v(G)
101
iv(G)</p>
        <p>71</p>
        <p>Hesaplanan sınıf YKRO değerlerinin ilk 7´si Tablo 6´de azalan sırada
listelenmiştir. Ölçüm sonuçları kullanılan bu projedeki sınıfların metotlardan daha kararlı bir
yapıya sahip olduğu gözlense de 127 sınıftan ilk 7´sinin ölçümlerin sınıfsal
problemlerin %55,87´lik bir kısmını oluşturması genelde bir kararsızlığın söz konusu
olduğunu gösterir. Kod iyileştirme çalışmalarına öncelikli olarak girmesi gereken
sınıflar RuleParser ve RobotAgent sınıflarıdır.</p>
      </sec>
      <sec id="sec-2-5">
        <title>Tablo 6. Sınıf YKRO Sıralanmış Listesi</title>
        <p>Sum
YKRO v(G)</p>
        <p>Avg
v(G)</p>
        <p>Max Max
v(G) ev(G)</p>
        <p>DIT</p>
        <p>RFC</p>
        <p>WMC CBO</p>
        <p>LOCM
Öğelerin metot ve sınıf YKRO değerlerleri toplamlarının 100 vermesi, sonuçların
pasta grafikleri ile gösterimini de uygun kılar. Şekil 1 projenin metot ve sınıf YKRO
pasta grafiklerini gösterir. İki grafikte de değeri %5´in üzerinde kalan öğeler grafiğe
dâhil edilmiş diğer öğelerin değerleri ise toplanarak tek bir dilim şeklinde
gösterilmiştir. Bu grafiklerin daha basit ve ihtiyaç duyulan bilgileri göstermek üzere
tasarlanmasından ileri gelmektedir. Proje ekibi başka bir değer belirlemek ya da
sıralamadan istediği sayıda öğe göstermek gibi farklı tercihlerde bulunabilir.</p>
        <p>Şekil 1. Örnek Proje YKRO Pasta Grafikleri
3.3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Metrik Önem Katsayısı</title>
      <p>YKRO Katsayıları 3 farklı yöntem ile atanabilir. ‘Tercih Yöntemi’ YKRO metriğinin
ilk hesaplamalarında kullanılmış, ‘Otomatik Atama Yöntemi’ ve ‘Karma Yöntem’ ise
zaman içerisinde farklı tür projelerden farklı tür sonuçlar alınmasına binaen çıkan
ihtiyaçlar ışığında geliştirilmiştir.
 Tercih Yöntemi: proje ekibi tecrübeleri ile proje tipini ve şartlarını değerlendirip
hangi metriğin daha büyük bir öneme sahip olduğuna karar verir ve katsayı
atamaları alınan bu kararlara göre yapılır.
 Otomatik Atama Yöntemi: Bu yöntemde metriğin eşik değerini en yüksek
derecede geçen metodunun değeri göz önüne alınır. Temelde, bir metrik ile ilgili olan
problemlerin daha büyük olması o metriğin proje genelindeki problemlere
yapacağı etkinin daha büyük olmasına yol açacağı düşüncesine dayanır.
 Karma Yöntem: Bu yöntem tercih ve eşik otomatik atama yöntemlerinin bir
bileşkesidir. Eğer metriklerin önem katsayıları metotların eşik aşım miktarına göre
atanırsa, proje için önemi çok yüksek olmayan bir metrik kritik bir konumda kabul
edilebilir ve bu proje ekibini yanlış yönlendirebilir. Öteki taraftan, iki metriğin de
aynı ya da yakın öneme sahip olduğu bir durumda metriklerden birinin eşiği çok
fazla diğerinin ise kritik kabul edilemeyecek derecede aşması metotlar arasında
dengesiz bir dağılıma yol açar.
 Karma hesaplama yönteminde, katsayıların belirli bir kısmı atanacağı metriğin eşik
aşımına geri kalan kısmı ise proje ekibinin belirleyeceği önem durumuna göre
atanır.</p>
      <p>Katsayı atamalarının farklı metotlar kullanılarak yapılmasının ölçüm sonuçlarına ne
tür değişiklikler yapabileceğini daha iyi görmek için, geliştirme aşamasında olan bir
projenin kodları McCabe IQ aracında ölçüldü. Tablo 1 de verilen metriklerden alınan
sonuçlara göre metrik önem katsayıları, verilen 3 farklı metot ile atanmak suretiyle 3
farklı YKRO hesabı yapıldı. Bu projenin yapılan deneyde tercih edilmesinin sebebi
metotlarından birinin kod satır sayısı ölçüm değeri 814 iken karmaşıklık grubu
metriklerinin ölçümlerinden alınan sonuçların eşiğin çok üzerinde olmamasıdır.</p>
      <p>Projenin kalite metrik ölçüm sonuçlarından alınan bilgiler doğrultusunda, her
metrik için metotlardan alınan maksimum değer ve metrikler için tercih edilen önem
katsayıları Tablo 7´de gösterilmiştir.</p>
      <p>Tablo 7´de görüldüğü gibi karmaşıklık metriklerinde eşik değerinin en üstünde
alınan değer iv(G) metriğine aittir. Eşik değeri 7 olan iv(G) metriği için %342´lik bir
aşım söz konusudur. Aynı projede satır sayısı metrikleri tarafından yapılan en büyük
eşik aşımı %2713 ile kod satır sayısında gözlenmektedir. Kod satır sayısındaki bu
astronomik fazlalık tercihsel önem katsayısı atama yönteminde tespit edilemez çünkü
her metrik genel yüzdede kendisine verilen katsayı kadar etki gücüne sahiptir.
Otomatik katsayı atama yönteminde ise eşik aşım miktarı ile doğru orantılı olan bir
hesaplama olacağından dolayı bu satır sayısı değerine sahip metodun YKRO değeri de
oldukça yüksek olacaktır.</p>
      <p>Kod satır sayısı metriği bazı projelerde yüksek bazılarında ise düşük olma özelliği
göstermektedir. Örneğin donanım ağırlıklı bir projede satır sayıları genellikle yüksek
Yazılım kalite değerlendirme metrikleri ile yapılan ölçümlerin değerlendirilmesi
yazılım verimliliğinin arttırılmasında kullanılan önemli yöntemlerden biridir. Bu
metriklerden alınan sonuçların daha hızlı değerlendirilmesini sağlamak amacı ile birleştirici
bir metrik olan YKRO metriği tanımlanmıştır. Bu metrik yeniden yapılandırılması
gerekli olan metot ve sınıfları açıkça ortaya koyar. YKRO metriğinin her metot
üzerinde ve ölçümlerde kullanılan her metrik üzerinde nasıl hesaplandığı bir örnek
üzerinden anlatılmıştır. Hesaplamalara, kullanılan metriklerin ne ölçülerde katkı
sağlayacağını belirlemek için metrik önem katsayısı ortaya konmuş ve bu katsayının
belirlenmesinde kullanılabilecek olan yöntemler örnekler ve bu örneklerden alınan
sonuçlar ile beraber gösterilmiştir. YKRO metriği kullanılarak sadece kaynak kod analizi
ile çok kısa bir süre içerisinde yazılımda ilk olarak iyileştirilmesi gereken yerler
belirlenebilmektedir. Böylelikle gerek kod gözden geçirme sürecinde, gerekse testlere
başlamadan önce sorun çıkması muhtemel kod parçaları öncelikli olarak incelemeye
alınabilmektedir. Daha sonraki çalışmalar metriklerin önce kendi karakteristik
özelliklerine göre sınıflanıp, bu sınıflardan alınan sonuçların hesaplamalarda kullanılması ile
ilgili olacaktır.</p>
      <p>Teşekkür - Yazarlar, bu çalışmanın gerçekleştirilmesi için kaynak ve destek
sağlayan TÜBİTAK BİLGEM Yazılım Test ve Kalite Değerlendirme Merkezi'ne
teşekkür eder.</p>
      <p>Kaynaklar</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>McCabe</given-names>
            <surname>Software</surname>
          </string-name>
          http://www.mccabe.com
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Oman</surname>
            ,
            <given-names>P.W.</given-names>
          </string-name>
          ; Hagemeister, J.; and
          <string-name>
            <surname>Ash</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>A</given-names>
            <surname>Definition</surname>
          </string-name>
          and
          <article-title>Taxonomy for Software Maintainability</article-title>
          ,
          <source>Technical Report #</source>
          <fpage>91</fpage>
          -
          <lpage>08</lpage>
          -TR, Software Engineering Test Laboratory, University of Idaho, Moscow, ID,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Oman</surname>
            ,
            <given-names>P.W.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Hagemeister</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , (
          <year>1992</year>
          )
          <article-title>Metrics for Assessing a Software System's Maintainability</article-title>
          ,
          <source>Proceedings of the Conference on Software Maintenance</source>
          , IEEE Computer Society Press, Los Alamitos, CA,
          <year>1992</year>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>344</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Coleman</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Assessing</surname>
            <given-names>Maintainability</given-names>
          </string-name>
          ,
          <source>Proceedings of the Software Engineering Productivity Conference</source>
          <year>1992</year>
          , Hewlett-Packard, Palo Alto, CA,
          <year>1992</year>
          , pp.
          <fpage>525</fpage>
          -
          <lpage>532</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Coleman</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Ash</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Lowther</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ; and Oman,
          <string-name>
            <surname>P.W.</surname>
          </string-name>
          ,
          <article-title>Using Metrics to Evaluate Software System Maintainability</article-title>
          , IEEE Computer,
          <year>1994</year>
          ,
          <volume>27</volume>
          (
          <issue>8</issue>
          ), pp.
          <fpage>44</fpage>
          -
          <lpage>49</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Oman</surname>
            ,
            <given-names>P.W.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Hagemeister</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <source>Constructing and Testing of Polynomials Predicting Software Maintainability, Journal of Systems and Software</source>
          ,
          <year>1994</year>
          ,
          <volume>24</volume>
          (
          <issue>3</issue>
          ), pp.
          <fpage>251</fpage>
          -
          <lpage>266</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Sonar</given-names>
            <surname>Source</surname>
          </string-name>
          ,
          <article-title>"Evaluate Your Technical Debt" http://www.sonarsource.org/evaluate-your-technical-debt-with-sonar</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>McCabe</given-names>
            <surname>Software</surname>
          </string-name>
          ,
          <article-title>"All Metrics Thresholds in McCabe IQ"</article-title>
          http://www.mccabe.
          <source>com/pdf/McCabe%20IQ%20Metrics.pdf</source>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Emin</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fatih</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Önder</surname>
            <given-names>S.</given-names>
          </string-name>
          “
          <article-title>Yazılım Projelerinde Büyüklük Tahmini"</article-title>
          ,
          <source>Akademik Bilişim</source>
          <year>2013</year>
          ,
          <string-name>
            <given-names>Akdeniz</given-names>
            <surname>Üniversitesi</surname>
          </string-name>
          , Antalya,
          <year>2013</year>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Total</surname>
            <given-names>Metrics</given-names>
          </string-name>
          ,
          <article-title>"'Small Project'</article-title>
          , '
          <string-name>
            <surname>Medium-Size Project</surname>
          </string-name>
          ' and 'Large Project' What Do These Terms Mean?” http://www.totalmetrics.com/
          <article-title>function-points-downloads/FunctionPoint-</article-title>
          <string-name>
            <surname>Scale-</surname>
          </string-name>
          Project-Size.pdf
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>