Büyük Veri ve Analitik: İş Kararlarını Nasıl Dönüştürüyor?
Teknoloji
- •
- 02 Dakika Okuma Süresi
Yazılım Metrikleri ve CK Metrik Kümesi: Yazılım Kalitesini Ölçme Yöntemleri
Yazılımların ölçülebilen özellikleri ve bu özelliklerin sayıları dönüştürülmesidir. Bu bağlamda, nesneye dayalı tasarıma sahip yazılımların iç özelliklerini ölçen metrikler ele alınacaktır.
Metriklerin kullanılmasındaki genel amaç yazılımın kalitesini ölçebilmek ve yazılımın gelecekteki durumu hakkında tahminde bulunabilmektir.
Yazılım tasarım metrikleri elde edildikleri ortama göre ikiye ayrılır:
Program çalıştırılmadan kaynak koddan ya da modelden elde edilen statik metriklerdir. Program çalışırken toplanan metriklere ise dinamik metrikler denir.
Nesneye dayalı yazılım için geliştirelen ilk metrik CK metrik kümesidir. Daha önceki metrikler işlevsel programlar içindir.
Identification: Sınıfların varlıklarının bulunması işlemidir.
Semantics: Sınıfların anlamlarını belirlenmesidir.
Relationships: Sınıflar arasındaki ilişkilerin belirlenmesidir.
Implementation: Sınıfların gerçeklenmesi.
Nesneye dayalı tasarımın temeli sınıflardır. CK metrik kümesi de sınıfların karmaşıklığını ölçebilecek metrikler ele alınmıştır.
Bu metrikler yazılımın statik yapısı ile ilgilenir.
Programı çalıştırmadan da elde edilebilir.
C sınıfının n adet metodu varsa bu methodların karmaşıklıkları ise WMC ile aşağıdaki gibi hesaplanır.
Tüm metotların karmaşıklıkları 1 kabul edillirse WMC = n olur.
WMC değeri o sınıfın geliştirilmesi için gereken zamanı iş yükünü gösterir. Metot sayısının fazlalılığı alt sınıflarında karmaşıklılığını artırır.
Bu değerin küçük olması tercih edilir.
İncelenen sınıfın kalıtım ağacından köke olan uzaklığıdır. Çoklu kalıtım olan programlardan en uzak yol kabul edilir.
Bir sınıf ağaçta ne kadar derine iniyorsa o kadar çok özelliği davranışının ölçmek zorlaşır. Derinliği fazla olan ağaçlar tasarım karmaşıklığıma sebep olabilir.
Çok sayıda sınıfın türetilmesi bir çok niteliğin tekrar kullanıldığı anlamına gelebilir. NOC, bir sınıfın tasarım üzerindeki etkisini gösterir.
Çok sayıda alt sınıf, tekrar kullanıldığı ve bir çok sınıfı barındırdığı için dikkat ile test edilmelidir.
Burada bağımlılık bir sınıfın diğer sınıfa erişimine metodlarının çağırması, özelliklerine erişimi olarak tanımlanmıştır.
Sınıflar arası bağımlılığın yüksek olması modüler programlama prensiplerine aykırı bir durumdur. Sınıfın tekrar kullanılabilirliliğini azaltır.
Bağımlılığı yüksek olan sınıf değişeme olan duyarlılığı kapalıdır ve bakımı zorlaştırır.
Bir sınıfın yanıt kümesi (RS), o sınıfa bir cevap geldiğinde etkileşmesi mümkün olan metotlar kümesidir.
RFC’nin yüksek olması sınıfın karmaşık olduğunu gösterir. RFC değeri yüksek olan sınıfın test edilmesi ve bakımı daha zordur.
Sınıfın uyumsuzluğu hakkında bilgi verir. Metotların uyumlu olmaları tercih edilir. Uyumsuzluk değerinin yüksek olması o sınıfın parçalara ayırılması gerektiğini belirtir. Değerinin yüksek olması yazılımının tasarımında sorun olduğunu belirtir.
Metriklerin çıktı olarak oluşturduğu değerlerin gerçek dünyaya hitap edip etmediği tartışılmalıdır.
Gerçek dünyada yapılan işlemler insan etkileşimini gerek kılar. Bu zaman alır ve maliyetlidir.
Metriklerin doğru bir sonuç gerçek dünyaya hitap etmesi için 9 özellik belirtilmiştir. Nesneye dayalı yazılımlar hedef alınmamıştır.
Non-Coarseness: Tüm sınıflar aynı metrik değerini üretmemeli
Non-Uniqueness: Bazı sınıflar aynı sonucu üretebilir.
Permutation: Bir yazılımda satırların oluşturulan kodların yerlerini bile değiştirmek karışıklığa artırabilir. Sınıflar için uygulanabilir olmadığından dolayı bu özellik C-K metriği tarafından kullanılmamıştır.
Implementation: Tasarımın gerçeklemesi önemlidir. İki sınıf aynı işi yapıp tasarımları farklı olursa kabul edilebilir.
Monotonicity: Bir sınıfa ekleme yapmak onun karmaşıklığını artırır.
Non-equivalence of Interaction: Etkileşimin eşit olmamasını veya dengesiz olmasını ifade eder.
Interaction Increases Complexity: Farklı iki sınıfın veya öğe türünün bir araya getirilmesinin, genellikle daha karmaşık bir sistem veya süreç oluşturduğunu ifade eder.
Finiteness: Sadece sonlu sayıda yazılım aynı metrik değerini üretmelidir. Bu koşul otomatik olarak sağlanabildiği için C-K metriği tarafından kullanılmamıştır.
Renaming Principle: Bir sınıfın adı değiştirilmesi metrik değerini değiştirmez.