Yazılımda Kalite Metrikleri


          Yazılım Mühendisliği: Yazılım Kalite Metrikleri
Yazılım kalite metriği yazılımların bir çok yönden değerlendirilmesini sağlayan, kaliteli bir yazılım geliştirmede bize yardımcı olan elemanlardır. Bunlar çeşitli alt yapılara bölünürler her yapının temsil ettiği bir değer ve her değerin bir anlamı vardır. Karmaşık yapılarda bu değerler üzerinden uygulama hakkında çeşitli yorumlar yapılabilir.
Yazılım metriği kaliteden bahseder dedik. Peki ya bir yazılım için kalite ölçütleri nelerdir?
•Maliyet
•Zaman
•Test
•Bakım
•Tasarım Düzeni
•Kullanım Kolaylığı
•Anlaşılabilirlik
Olası bir yazılım için kalite ölçütleri yukarıdaki gibi sıralanabilir.
Nesneye yönelimli tasarım  kalitesini değerlendirmek için hiyerarşik bir model tanımlanabilir.Bu modelde sınıfların, nesnelerin ve bunlar arasındaki ilişkilerin yapısal ve davranışsal tasarım özellikleri nesne yönelimli tasarım metrikleri kullanılarak değerlendirilmektedir. Nesne yönelimli tasarım metrikleri, geliştirilen yazılımların,
etkinlik/verimlilik, karmaşıklık, anlaşılırlık, yeniden kullanılabilirlik, test
edilebilirlik ve dayanıklılık gibi kalite özellik düzeylerinin ölçülmesinde
kullanılır. Yani kısacası yukarıda belirtilen tüm kalite değerlerini ölçebilmek için metrikleri kullanabiliriz.  Bu ölçümleri yapabilmek için çeşitli metrik ölçüm kümeleri bulunmaktadır. Bu bir çok metrik ölçüm kümeleri arasında en çok üzerinde durulan metrik kümeleri:
•Chidamber & Kemerer
• Brito e Abreu
•Bansiya & Davis metrik kümeleridir.

Sınıfın Ağrılıklı Metod Sayısı ( WMC )
Bir sınıftaki metodların karmaşıklık derecesi veya sayısıdır.Metotların karmaşıklık veya  sayısı, sınıfın geliştrilmesine ve bakımına harcanacak zaman-çaba hakkında fikir vermektedir. Bu metriği inceleyerek bir sınıfın “anlaşılabilirlik, yeniden kullanılabilirlik ve dayanıklılık” ölçütü üzerinde yorum yapmak mümkündür.
Kalıtım Ağacının Derinliği ( DIT )
Bir sınıfın kalıtım ağacının köküne olan uzaklığını gösteren metriktir. Bu metrik yardımıyla yazılımın verimliliğini, yeniden kullanımını, anlaşılırlığını, test edilebilirliğini ölçmek mümkündür. Eğer bu değer yüksek ise test edilebilirliğin düşük olduğu anlaşılır.

Alt Sınıf Sayısı ( NOC )
Bir sınfıtan direk olarak türetilmiş alt sınıfların sayısını gösteren metriktir. Eğer alt sınıf sayısı fazla ise yeniden kullanım yüksek, hata riski fazladır. Bu metrik ile yazılımın verimlilik,yeniden kullanılabilirlik, test edilebilirlik gibi  özelliklerini ölçmek mümkündür.
Nesne Sınıfları Arasındaki Bağımlılık ( CBO )
Bir sınıf içindeki özellik ya da metotların diğer sınıf ya da sınıflarda kullanılması ve sınıflar arasında kalıtımın olmaması durumunda iki sınıf  arasında bağımlılık ilişkisi vardır. Bu metrik ile yazılımın verimlilik, yeniden kullanırlık değerlerinin ölçülmesi söz konusudur.
Sınıfın Tetiklediği Metot Sayısı ( RFC )
Bir sınıftan bir nesnenin metotları çağrılması durumunda, bu nesnenin tetikleyebileceği tüm metotların sayısı RFC değerini verir.Kısaca bir sınıfta yazılan ve çağrılan toplam metot sayısıdır. Bu metrik kullanılarak yazılımın anlaşılabilirlik, dayanıklılık, karmaşıklık, test edilebilirlik gibi özelliklerini ölçmek söz konusudur.
Metotlardaki Uyum Eksikliği ( LCOM )
N adet kümenin kesişiminden oluşan kümelerdeki uyumsuzlukların sayısıdır ve metotlardaki benzerlik derecesini ölçer. Bu metrik değeri kullanılarak yazılımın verimlilik , yeniden kullanılabilirlik gibi değerlerinin ölçülmesi mümkündür.
Verimlilik
Yazılımın ihtiyaç duyulan ölçüde yeterli performansla çalışabilme becerisi olarak tanımlanmaktadır. Zaman ve kaynak kullanımı konuları bu sınıf altında incelenmektedir.

Taşınabilirlik
Yazılımın çalıştığı ortam değişikliklerine uyum sağlayabilme yeteneği olarak tanımlanmaktadır. Adaptasyon yeteneği, yüklenebilirlik özellikleri, ortam değiştirme imkânı ve diğer yazılımlarla uyum konuları bu sınıf altında incelenmektedir.

Güvenilirlik
Yazılımın düzgün çalışma halini muhafaza edebilme becerisi olarak tanımlanmaktadır. Olgunluk, hata toleransı ve geri kurtarma konuları bu sınıf altında incelenmektedir.

Kullanılabilirlik
Yazılımın kullanım kolaylığı sağlayan yetenekleri olarak tanımlanmaktadır. Öğrenebilme, anlaşılabilirlik, işletilebilirlik ve kullanıcı etkileşimi konuları bu sınıf altında incelenmektedir.



Yorumlar

Bu blogdaki popüler yayınlar

LINUX KERNEL ILE RASPBERRY PI 3'DEN TCP PROTOLÜ ILE SENSÖR VERILERI ALINMASI