2009-06-23 12 views
18

Son zamanlarda NDepend'i kullandım ve .net meclisleri ve ilgili pdbs'ler hakkında iyi bir rapor hazırladı.Soyutlık vs Kararsızlık Grafiği nedir?

Raporda bulduğum en ilginç şey, soyutluk ve kararsızlık grafiği idi. Bunu gerçek anlamda anlamak istedim, kendi dokümanlarını ve çevrimiçi metriklerini okudum, ancak sadece bir ölçüde yardımcı olabilirdi.

öncelikle bir stabilite ile soyutluğunda kontrol etmek için doğru olarak grafik değerlendirmek ve teknikleri anlamak istiyoruz.

here üzerinde çok iyi bir makale var, ancak buna ek olarak bunlara ek olarak, bunu nasıl kontrol ederim?

alt text

cevap

25

soyutluk bir yazılım sistemi katılık bir ölçüsüdür [stabilite soyutluğunda kontrol]. Daha yüksek soyutlama, sertliği azalt (veya esnekliği arttır) ve tersi. Sistemin bileşenleri soyut sınıflara veya arayüzlere dayanıyorsa, böyle bir sistemin, doğrudan doğruya somut sınıflara bağlıysa, genişletilmesi ve değiştirilmesi daha kolaydır.

stabilitesi yazılım sistemi kırılma olmadan değişiklik sağlar ne kadar iyi olarak değiştirmek için bir tolerans ölçüsüdür. Bu, sistem bileşenlerinin karşılıklı bağımlılıklarını analiz ederek belirlenir.

Robert C. Martin article OO metriklere daha nicel açıdan bu kavramları açıklar. makaleden

alıntı:

sorumluluk, bağımsızlık ve bir kategorinin istikrar o kategoriye etkileşim bağımlılıkları sayılarak ölçülebilir. Üç ölçümlerini tespit edilmiştir:

Ca; afferent Kaplinler: Bu kategori içinde sınıflara bağlı bu kategoride dışında sınıfların sayısını.

Ce: Gösterişli Kaplinler: Bu kategorilerin dışında sınıflara bağlı bu kategoride içindeki sınıf sayısı.

I: Değişkenlik: (Ce ÷ (Ca + Ce)): Bu ölçüm aralığı [0,1] yer alır. I = 0, maksimum kararlı bir kategoriyi belirtir. I = 1, azami derecede istikrarsız bir kategoriyi belirtir.

A: soyutluk: (kategori içerisinde soyut sınıflar ÷ kategorideki sınıfların toplam #). Bu metrik aralığı [0,1]. 0 beton anlamına gelir ve 1 tamamen soyut demektir. herhangi bir yazılım sisteminde

özellikle büyük olanları, denge önemlidir. Bu durumda, bir sistemin “iyi” olması için soyutluğu istikrar ile dengelemesi gerekir. A-I grafiğindeki pozisyon bunu gösterir. Lütfen açıklama için makaleyi okuyun.

0

Kodunuzu değerlendirmek için hem soyutlama hem de kararsızlık tek başına kullanılabilir. Bazı modüllerin ne kadar soyut veya kararlı olduğunu önceden biliyorsunuz.Örneğin, sunum katmanının orta düzeyde soyut ve son derece kararlı olmasını istiyorsunuz çünkü alt modüller buna bağlı. Öte yandan, altyapı katmanının yüksek beton (düşük soyutlık) ve yüksek düzeyde istikrarsız olmasını istiyorsunuz çünkü üst tabakaların ne istediğini uygulamalıdır.

Bu açık olduğunda, soyutluk ve kararsızlığı tek bir grafikte birleştirebilirsiniz, bu da kararsızlık-soyutlık grafiği. İhtiyaçlarınızdaki gelecekteki değişiklikleri desteklemek için ihtiyaçlarınızı dengelemek amacıyla, kodunuzun kararlı olduğu kadar soyutluk sergilemesini istiyorsunuz. Her neyse, yine de birlikte çalıştıklarını anlamaya çalışmadan önce, kararsızlık ve soyutlık ölçütlerini yeterince kavramış olmalısınız. Bu makalede ne anlama geldiğini istikrarsızlık bazı örnekler bulabilirsiniz: How to Use Module Coupling and Instability Metrics to Guide Refactoring

uygulamadaki tüm modüllerin istikrarsızlığı ölçen bir CQLinq sorgu türetmek ilgili makale vardır: How to Measure Module Coupling and Instability Using NDepend

İlgili konular