Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sınıf bağlaması, ilk olarak CK94 tarafından tanımlandığı gibi Nesneler Arasında Bağlantı (CBO) adıyla da geçer. Temel olarak, sınıf bağlama, tek bir sınıfın kaç sınıf kullandığını gösteren bir ölçüdür. Bu ölçümde yüksek bir sayı kötüdür ve düşük bir sayı genellikle iyidir. Sınıf eşleştirmesinin yazılım hatasının doğru bir tahmincisi olduğu gösterilmiştir ve son yapılan çalışmalar 9 üst sınır değerinin en verimli S2010 olduğunu göstermiştir.
Microsoft belgelerine göre, sınıf birleştirme "parametreler, yerel değişkenler, dönüş türleri, yöntem çağrıları, genel veya şablon örneklemeleri, temel sınıflar, arabirim uygulamaları, dış türler üzerinde tanımlanan alanlar ve öznitelik dekorasyonu aracılığıyla benzersiz sınıflarla eşleştirmeyi ölçer. İyi yazılım tasarımı, türlerin ve yöntemlerin yüksek uyum ve düşük kavramaya sahip olması gerektiğini belirtir. Yüksek kavrama, diğer türlerdeki birçok bağımlılık nedeniyle yeniden kullanılması ve bakımı zor olan bir tasarımı belirtir."
Kavrama ve uyum kavramları açıkça ilişkilidir. Tartışmayı konu üzerinde tutmak için, KKLS2000'den kısa bir tanım vermek haricinde uyum konusuna derinlemesine girmeyeceğiz.
"Modül uyumu Yourdon ve Constantine tarafından 'bir modülün iç öğelerinin birbirine ne kadar sıkı bağlı veya ilişkili olduğu' olarak tanıtıldı YC79. Bir modülün tam olarak bir görevi [...] temsil ediyorsa güçlü bir uyumu vardır ve tüm öğeleri bu tek göreve katkıda bulunur. Uyumu kod yerine bir tasarım özniteliği ve yeniden kullanılabilirlik, bakım ve değiştirilebilirliği tahmin etmek için kullanılabilecek bir öznitelik olarak tanımlarlar."
Sınıf Bağlantısı Örneği
Şimdi sınıf ilişkilendirmesine bir göz atalım. İlk olarak, yeni bir konsol uygulaması oluşturun ve içinde bazı özelliklere sahip Kişi adlı yeni bir sınıf oluşturun ve ardından kod ölçümlerini hemen hesaplayın:
Bu sınıf başka sınıf kullanmadığından sınıf bağlamasının 0 olduğuna dikkat edin. Şimdi Person örneği oluşturan ve özellik değerlerini ayarlayan bir yöntemle PersonStuff adlı başka bir sınıf oluşturun. Kod ölçümlerini yeniden hesaplayın:
Sınıf bağlama değerinin nasıl yukarı gittiğini görüyor musunuz? Ayrıca, kaç özellik ayarlarsanız ayarlayın, sınıf bağlama değerinin sadece 1 arttığına ve başka bir değerle artmadığına dikkat edin. Sınıf eşleştirmesi, ne kadar kullanıldığına bakılmaksızın bu ölçüm için her sınıfı yalnızca bir kez ölçer. Buna ek olarak, DoSomething()'da bir 1 olduğunu, ancak oluşturucu PersonStuff()'nin ise değer olarak 0 olduğunu görebiliyor musunuz? Şu anda oluşturucuda başka bir sınıf kullanan bir kod yoktur.
Başka bir sınıf kullanan oluşturucuya kod koyarsanız ne olur? Şunları elde edersiniz:
Oluşturucunun açıkça başka bir sınıf kullanan kodu vardır ve sınıf bağlama ölçümü bu gerçeği gösterir. Yine, PersonStuff() için sınıf bağlamasının 1 olduğunu ve DoSomething() için de 1 olduğunu görebilirsiniz. Bu, iç kodunuz ne kadar olursa olsun, yalnızca bir dış sınıfın kullanıldığını gösterir.
Ardından başka bir yeni sınıf oluşturun. Bu sınıfa bir ad verin ve içinde bazı özellikler oluşturun:
Şimdi DoSomething() sınıfını PersonStuff sınıfı içindeki bir yöntemimizde kullanın ve kod ölçümlerini yeniden hesaplayın.
Gördüğünüz gibi, PersonStuff sınıfı için sınıf bağlantısı 2'ye kadar çıkar ve eğer sınıfın içine girerseniz, DoSomething() yönteminde en fazla bağlantının bulunduğunu, ancak oluşturucunun hala yalnızca 1 sınıf tükettiğini görebilirsiniz. Bu ölçümleri kullanarak, belirli bir sınıf için genel maksimum sayıyı görebilir ve üye başına ayrıntılarda detaya gidebilirsiniz.
Sihirli Sayı
Döngüsel karmaşıklıkta olduğu gibi, tüm kuruluşlara uyan bir sınır yoktur. Ancak S2010 , 9 sınırının en uygun olduğunu gösterir:
Bu nedenle eşik değerlerini [...] en etkili olarak görüyoruz. Bu eşik değerleri (tek bir üye için) CBO = 9[...]." (vurgu eklendi)
Kod Analizi
Kod analizi, Bakım kuralları kategorisini içerir. Daha fazla bilgi için bkz. Bakım kuralları. Eski kod analizi kullanılırken Genişletilmiş Tasarım Kılavuzu kural kümesi bir bakım alanı içerir:
Sürdürülebilirlik alanının içinde sınıf bağları için bir kural vardır.
Bu kural, sınıf bağlantısı aşırı olduğunda bir uyarı oluşturur. Daha fazla bilgi için bkz. CA1506: Aşırı sınıf bağlantısından kaçının.
Alıntı
CK94
^ Chidamber, S. R. & Kemerer, C. F. (1994). Nesne Odaklı Tasarım için Ölçüm Paketi (Yazılım Mühendisliğinde IEEE İşlemleri, Cilt 20, No. 6). Pittsburgh Üniversitesi web sitesinden 14 Mayıs 2011'de alındı: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf
KKLS2000
Kabaili, H., Keller, R., Lustman, F., and Saint-Denis, G. (2000). Sınıf Uyumuna Yeniden Bakış: Endüstriyel Sistemler Üzerine Ampirik Bir Çalışma (Nesne Yönelimli Yazılım Mühendisliğinde Nicel Yaklaşımlar Çalıştayı'nın Bildirileri). 20 Mayıs 2011'de, Université de Montréal web sitesinden alındı http://www.iro.umontreal.ca/~sahraouh/qaoose/papers/Kabaili.pdf
SK2003
Subramanyam, R. & Krishnan, M. S. (2003). Object-Oriented Tasarım Karmaşıklığı için CK Ölçümlerinin Ampirik Analizi: Yazılım Hatalarının Etkileri (Yazılım Mühendisliğinde IEEE İşlemleri, Cilt 29, No. 4).
S2010
^ Shatnawi, R. (2010). Open-Source Sistemlerinde Object-Oriented Ölçümlerinin Kabul Edilebilir Risk Düzeylerinin Nicel Araştırması (Yazılım Mühendisliğinde IEEE İşlemleri, Cilt 36, No. 2).
YC79
Edward Yourdon ve Larry L. Constantine. Yapılandırılmış Tasarım. Prentice Hall, Englewood Cliffs, N.J., 1979.