Metot Seviyesindeki Metrikler

Yazılım geliştirme süreçlerinde metot seviyesindeki metrikler ve eşik seviyeleri ile ilgili aşağıdaki bilgilerin faydalı olabileceğini düşünüyorum;

  • Toplam Kod Satır Sayısı : Kod satırlarının sayısıdır. Boş veya yorum satırlarını da içermektedir. Süslü parantez (brace) içerisindeki tüm satırlar sayılarak hesaplanır. Bu metrik yürütülebilir olmayan satırları da içerdiğinden karmaşıklığı belirlemede kullanılması pek mümkün değildir. Tavsiye edilen değeri modülün yapısına bağlıdır.
  • Yorum Satır Sayısı : Yorum satırlarının sayısıdır. Tavsiye edilen değer, modülün karmaşıklığına ve büyüklüğüne göre değişmektedir.
  • Çevrimsel Karmaşıklık : Modülün karar yapısının karmaşıklığını gösterir. 30’dan küçük değerler kabul edilebilir. 30-99 arasındaki değerler modülün tehlikeli olduğunu gösterir ancak uzman görüşünün de alınarak karar verilmesi gerekir. Bunun sebebi algoritmaların bazen gerçekten karmış olabilmesidir. 3 basamaktan oluşan CC değerleri, o modülün bakım yapılabilirliğinin çok düşük olduğunu ve kesinlikle kusur eğilimli olduğunu gösterir.
  • Maksimum iç içe geçmiş derinlik (nesting depth) : İç içe ifadelerin sayısıdır. Örneğin; iç içe 2 tane for döngüsü ve en içte bir if varsa, bu metodun maksimum iç içe geçmiş derinliği 3 olacaktır.
  • Döngü Sayısı (Loop) : Metot içindeki döngülerin toplam sayıdır.
  • Eşsiz (uniqeue) operatör sayısı : Operatörlerin sayısıdır. 15-40 arası bir değer bu metrik için oldukça standarttır. Bu değer, 60’ın üzerine çıkınca modül karmaşıklaşmaya başlar. 125’in üzerindeki değerlerde modülün gözden geçirilmesi gerekir.
  • Eşsiz operand sayısı : 10-20 arasındaki değerler oldukça standarttır. 60’dan büyük değerler karmaşık bir modülü gösterirken, 100Wden büyük değerler aşırı karmaşık modülleri gösterir.
  • Toplam Operatör Sayısı : Metotteki operatörlerin toplam sayısıdır. Operatörler dile bağlı olarak tanımlanır ancak aritmetik işlemler, üzerinde işleme neden olan özel anahtar sözcükler (return, sizeof, if) ve fonksiyon çağrıları birer operatör olarak kabul edilir. 50-125 arasındaki değer oldukça standarttır. 150’den büyük değerler karmaşıklığı gösteirken, 200’den büyük değere sahip olan modüllerin farklı modüllere ayrıştırılması önerilir.
  • Toplam Operand Sayısı : 25-70 arası oldukça standarttır. 100’den büyük değerlere sahip olan modüllerin karmaşık olduğu bilinmektedir.
  • Mimari Karmaşıklık : Bir modülün sistemin diğer elemanları ile olan etkileşiminin karmaşıklığını ifade eder (fonksiyon çağırma sayısı). Bir modülde çağrılan fonksiyon sayısı toplanarak hesaplanır. Mimari karmaşıklık değerleri birçok faktöre bağımlıdır ve spesifik bir rakam vermek güçtü. Genel olarak 60’ı geçen modüllerin incelenmesi gerekir.
  • Yürütülebilir (executable) ifade sayısı : Yürütülebilir satırların sayısıdır.
  • Yorum satırının kod sayısına oranı : Yorum satıı sayısının kod satırı sayısına oranıdır. 0,05’den düşük değerler yetersiz yorum satırı olarak ifade edilir. 0,15’den büyük değerler uygundur. En azından 0,15 olan bir değer tavsiye edilir. Çok fazla yorum sayısının olması da az olması gibi eleştirilmektedir, okumayı zorlaştırır.
  • Şartların (condition) sayısı : Şartların sayısıdır.
  • Kararların (decision) sayısı : Kararların sayısıdır.
  • Yapısal (structural) karmaşıklık : Modül içerisinde yer alan karmaşık anahtar sözcüklerinin sayısına bağlı olarak kod karmaşıklığının ortaya konulduğu metriktir. Karmaşık anahtar sözcük (keyword), bazı kod satırlarını atlamamıza neden olan sözcüktür. 5’i geçen modüllerin önemli sayıda jump içerdiği ve okunmasının/anlaşılmasının zor olduğunu ifade edilir. 20’nin üzerindeki değerler okunması çok zor modülleri gösterir ve tasarım hataları genellikle bu modüllerde mevcuttur.
  • Çıkışların (exit) sayısı : Standart yazılım mühendisliği iyi yazılmış kodların tek giriş / tek çıkış olmasını önerir ve birden fazla return ifadesi kötü kodlama uygulaması olarak ifade edilir. Bu değerin 5’den fazla olması modülün gözden geçirilmesi gerektiğini ortaya koyar ve 20’den fazla olması bakım yapılabilirliğinin zor olduğunu ve hata eğilimli olduğunu ifade eder.
  • Halstead Kelime (vocabulary) : Bir modülü tamamen tanımlamak için gerekli olan eşsiz sözcüklerin sayısıdır. Eşsiz operatör ve eşsiz operandların sayısı toplanarak hesaplanır. 25-75 arasındaki değerler oldukça standarttır. 100’den büyük değerler karmaşıklığı gösterirken, 125’den büyük değerler modülün parçalara ayrılması gerektiğini ortaya koyar.
  • Halstead Uzunluk (lenght) : Bir moüdlü tamamen tanımlamak için gerekli olan sözcüklerin (words) toplam sayısıdır. Toplam operatör sayısı ve toplam operand sayısı toplanarak hesaplanır. 200 civarı oldukça standarttır ve 300’e kadar olması kabul edilebilirdir. 300’den fazla olanlar uzun modül olup, 500’den fazla olanlar ise kötü tasarlanmış ve kötü gerçekleşmiş modüllerdir.
  • Halstead Zorluk (Difficulty) : Bir modülün zorluğunu veya hata eğilimini gösterir. Aynı operandların aşırı kullanılmasına bağlı olarak hatayı ortaya koyan bir metriktir. Tek bir operand fazla sayıda kullanılmışsa ve hatalı atama yapıldıysa, birçok yerde hataya neden olacaktır. (Eşsiz operatör sayısı / 2) * (toplam operand sayısı / eşsiz operand sayısı) formülü ile hesaplanır. 35’e kadar olan değerler normaldir. 50’yi geçen değerler zorluğu ve hata eğilimini ortaya koymaktadır. 100’den büyük değerler karmaşıklığı ve hata eğiliminin şiddetini gösterir.
  • Halstead Seviye (level) : Zorluğun tersidir. 1 ve 0,02 arasındaki değerler oldukça tipiktir. 0,02’den küçük değerler hata eğilimli modülleri gösterir ve 0,01’den küçük değerler problemli modülleri işaret eder.
  • Halstead Hacim (volume) : Bir algoritmanın gerçekleme boyutunu tanımlar. 30 ve 1000 arasındaki değerler oldukça standarttır. 1000’den büyük değerlere pek rastlanmaz. 1200’den büyük modüllerin yeniden tasarlanması ve parçalara ayrılması gerekir.
  • Halstead Zeka İçeriği (intelligent content) : Algoritmanın karmaşıklığının gösterimini sağlar ve teorik olarak programlama dili değişse de bu metrik aynı değere sahip olmalıdır. Hacim ve seviyenin çarpılması ile elde edilir. 50’den küçük değerler kabul edilir düzeydedir. 50 ve 100 araısndaki değerler modülün karmaşık olduğunu gösterir. 100’den büyük değere sahip metotların incelenmesi gerekir.
  • Halstead Çaba (effort) : Bir modülü gerçekleme veya anlama için gerekli çabadır. 100’den küçük değerler oldukça standarttır. 100 ve 500 arasındaki değerler düşük kaliteli kodu işaret eder. 500’den büyük değerler düşük kalitedeki kodu gösterir Ancak tek başına bu metrik kullanılmamalıdır.
  •  Halstead Zaman (time) : Modülü anlamak veya gerçeklemek için gerekli zamanı gösterir. 3600 değeri programcının 1 saat zaman harcaması gerektiğini gösterir. 5000’e kadar olan değer kabul edilebilirdir. 5000’den büyük değerler modülün düşük kalitede olduğunu tek başına göstermez, diğer metriklerle birlikte değerlendirilmelidir.

Yorum bırakın