• Sonuç bulunamadı

5. METRİKLER, DEĞERLENDİRME KRİTERLERİ VE VERİ KÜMELERİ

5.1 Yazılım Ölçümü ve Yazılım Metrikleri

Yazılım Mühendisliği disiplini, Bilgisayar Bilimleri disiplininden evrimleşerek ortaya çıkmıştır. Fizik ve makine mühendisliği disiplinleri arasındaki ilişkiyi, bilgisayar bilimleri ve yazılım mühendisliği disiplinleri arasındaki ilişkiye benzetmek mümkündür. Fizik, doğa kanunları için teorik alt yapıyı geliştirmeye çalışırken, makine mühendisliği fiziksel dünyadaki problemleri çözmek için fiziğin temel kurallarını kullanır. Benzer şekilde; bilgisayar bilimleri bilgisayar ve hesaplama için teorik alt yapıyı geliştirirken yazılım mühendisliği alanı bilgisayar bilimlerinin uygulamalı bir disiplinidir (Munson, 2003).

Bilimsel deneylerin çıktıları, bilimsel topluluğun kabul ettiği birimlerle sayısal olarak ifade edilir ve bu birimler standartlar halinde ortaya konulur. Örneğin; Amerika Birleşik Devletleri’nde (ABD), Ulusal Standartlar ve Teknoloji Enstitüsü (National Institute for Standards and Technology - NIST) bu ölçüm standartlarının ortaya konulması ile görevlidir. Ancak ne NIST ne de farklı bir ulusal standart organizasyonu yazılım ölçümleri için herhangi bir standardı henüz sunmamakta ve bu durum, yazılım mühendisliği alanında gerçekleştirilen deneylerin paylaşılması noktasında çeşitli sorunlara neden olmaktadır (Munson, 2003).

Yazılım ölçümünde temel olarak 2 kural vardır. İlki ölçümlerin yeniden üretilebilir olması ve ikincisi ölçülen özelliklerin o bağlamda geçerli olmasıdır. Ayrıca, türetilmiş metrikler oluştururken farklı kavramsal metrikler toplanmamalıdır. Örneğin; düzeltilmemiş fonksiyon büyüklüğü (unadjusted function point) hesaplanırken girdi sayısı, çıktı sayısı, sorgulama (inquiry) sayısı, dış dosya sayısı ve iç dosya sayısı gibi metriklerin belirli ağırlıklandırmalardan sonra toplanması son yıllarda büyük eleştiriler almaktadır.

Yazılımlardan çeşitli ölçümler gerçekleştirilerek sayısal değerler elde edilebilmektedir ancak bu sayısal değerleri anlamlı kılan, bilgiye dönüşmüş halleri olan yazılım metrikleridir. Yazılım Mühendisliği disiplinini, sanat boyutundan bilimsel düzeye taşıyacak yaklaşımlardan birisi de bu metriklerin geliştirme sürecinin her aşamasında ölçülmesi ve izlenmesidir. Yazılım metriklerini daha iyi anlayabilmek için, bu metrikleri sistematik olarak sınıflandırmak gerekir. Şekil 5.1’de verilen yazılım metrikleri taksonomisi, El-Wakil ve

arkadaşları (2004) tarafından ortaya konulmuştur ve Fenton ve Pfleeger’in (1997) 3 temel metrik sınıfı (süreç, ürün, proje) yaklaşımını genişletmektedir.

Şekil 5.1 Yazılım metrik taksonomisi (El-Wakil vd., 2004) Taksonomi içerisindeki alt sınıflar aşağıda açıklanmaktadır (El-Wakil vd., 2004):

• Süreç Metrikleri (process metrics): Yazılım yaşam çevrimi ile ilişkili özellikler ölçülmektedir. Örneğin; “yürütülen test senaryosu başına düşen kusur sayısı” metriği test sürecinde toplanabilecek bir süreç metriğidir. Takım liderleri çoğunlukla bu metriklerle ilgilenmektedir ve bu gruptaki metriklerden en önemlileri; zaman, çaba ve maliyet ile ilişkili olanlarıdır. İç süreç metrikleri geliştirmeyi yapan firmanın

süreçleriyle ilişkili iken, dış süreç metrikleri müşteri memnuniyeti gibi geliştirme dışında kalan süreçleri içermektedir. Yazılım geliştiren firmalar ya da kurumlar yeniden organize olduğunda, süreçleri değişebileceğinden süreç metrikleri de etkilenebilmektedir. Ayrıca, farklı yazılım yaşam çevrimleri için uygulanan süreçler farklı olabileceğinden, farklı süreç metrikleri kullanılması gerekmektedir. Bu sebeplerle, yazılım ölçüm alanında her firmanın uygulayabileceği ortak süreç metrikleri oluşmamıştır.

• Proje Metrikleri (project metrics): Bu metrikler, kaynak (resource) metrikleri olarak da bilinmektedir. Projedeki kaynakları ortaya koyan bu metriklere örnek olarak; geliştirici sayısı, geliştirici yeteneği (skill), güvenilirlik ve performans örnek olarak verilebilir.

• Hibrit Metrikler (hybrid metrics): Süreç ve ürün metriklerinin bir arada kullanıldığı metriklerdir. Örnek olarak; fonksiyon nokta başına düşen maliyet metriği verilebilir. • Ürün Metrikleri (product metrics): Yazılım yaşam çevriminin çıktılarını tanımlayan

metriklerdir. Yazılım mühendisleri ve yazılım kusur kestirimi konusunda çalışan araştırmacılar ağırlıklı olarak bu gruptaki metriklerle ilgilenmektedir.

o Dış Ürün Metrikleri (external product metrics): Ürün kullanıcıları tarafından görülebilen metriklerdir. Örnek olarak; ürünün güvenilirliği, fonksiyonelliği, performansı ve kullanılabilirliği (usability) verilebilir. Bu metrikleri ölçmek daha zordur ve iç ürün metriklerinden yararlanarak erken safhada ölçülmeye çalışılırlar.

o İç Ürün Metrikleri (internal product metrics): Sadece geliştirme takımı tarafından görülebilen metriklerdir, son kullanıcı ürüne kapalı kutu olarak baktığı durumda bu metrikleri göremez. Örnek olarak; kod satır sayısı, çevrimsel karmaşıklık, modül sayısı verilebilir.

ƒ Dinamik Metrikler: Yazılımın çalıştırılmasının ardından elde edilen metriklerdir. Yazılım metrikleri alanında çalışma yapan araştırmacılar, bu alanda çok az sayıda çalışma gerçekleştirdiğinden henüz ortak kabul edilen metrikler mevcut değildir. İleriki dönemlerde bu alanda da çalışmalar sürdürülmesi, kusur kestirim modellerinin performansını arttırmak üzere bu metriklerin kullanılmasını sağlayabilir.

ƒ Statik Metrikler: Yazılım çalıştırılmadan elde edilen metriklerdir.

• Belirtim Metrikleri (specification metrics): Yazılım resmi belirtimlerinden (formal specification) metrik türetmek mümkündür. De Marco’nun Bang metriği resmi belirtim notasyonlarından türetilmiştir (El-Wakil vd., 2004). Bu metrik dışında; zayıf sözcelerin (phrase) sayısı ve metinlerin sayısı gibi metrikler yazılım belirtim belgelerinden elde edilebilir.

• Tasarım Metrikleri: Tasarım aşamasında elde edilebilen metrikler bu gruba girmektedir. Kullanılan tasarım yaklaşımına göre, bu metrikleri El-Wakil ve arkadaşları (2004) 2 alt grupta göstermiştir. Ancak, yeni paradigmalarla birlikte bu grubun sayısını arttırmak mümkündür. Örneğin; bileşen tabanlı ve ilgiye yönelik metrikleri bu gruba dahil edebiliriz. Henüz bu paradigmalara ilişkin kabul edilmiş bir metrik kümesi oluşmadığından, taksonomide bunlara yer verilmemiştir.

o Yapısal: Yapısal tasarıma ilişkin metrikler bu gruba girmektedir. Henry&Kafura’nın bilgi akış metriği örnek olarak verilebilir.

o Nesneye Yönelik: Nesneye yönelik programlarda kalıtım, sarma (encapsulation), bağlılık (coupling), kohezyon ölçülerek elde edilen metriklerdir.

• Kod Metrikleri: Doğrudan kod üzerinden yapılan ölçümlere ilişkin metriklerdir.

o Yordamsal: Kod satır sayısı, McCabe ve Halstead metrikleri bu alanda kullanılan metriklerdir. Yordamsal programlama dili ile geliştirilmiş programların ölçümleri bu metriklerle gerçekleştirilir.

o Nesneye Yönelik: CK metrik kümesi, QMOOD ve MOOD metrik kümeleri örnek olarak verilebilir.