2009-06-23 15 views
18

मैंने हाल ही में एनडपेन्स का उपयोग किया और इसने मेरे .net असेंबली और संबंधित पीडीबी पर एक अच्छी रिपोर्ट बनाई।सार तत्व बनाम अस्थिरता ग्राफ क्या है?

रिपोर्ट में मिली सबसे दिलचस्प बात अमूर्त बनाम अस्थिरता ग्राफ थी। मैं इसे वास्तविक विस्तार से समझना चाहता था, मैंने अपने दस्तावेज़ और ऑनलाइन मेट्रिसिस पढ़े लेकिन यह केवल कुछ हद तक मदद कर सकता था।

मुख्य रूप से मैं समझना चाहता हूं कि ग्राफ को सही ढंग से मूल्यांकन करने और स्थिरता के साथ सार तत्व को नियंत्रित करने के लिए तकनीकों का मूल्यांकन कैसे करना है।

एक बहुत अच्छा लेख here है जो इस पर बात करता है लेकिन इसके अलावा मुझे और भी आवश्यकता है कि मैं इसे कैसे नियंत्रित करूं? [स्थिरता के साथ अमूर्तता को नियंत्रित] '

alt text

उत्तर

25

अमूर्तता एक सॉफ्टवेयर प्रणाली की कठोरता का एक उपाय है। उच्च अवशोषण, कठोरता को कम करें (या लचीलापन से अधिक) और इसके विपरीत। यदि सिस्टम के घटक अमूर्त कक्षाओं या इंटरफेस पर निर्भर करते हैं, तो ऐसी प्रणाली को विस्तारित करना और बदलना आसान है, अगर यह सीधे कंक्रीट कक्षाओं पर निर्भर करता है।

स्थिरता बदलने के लिए सहिष्णुता का एक उपाय है क्योंकि सॉफ़्टवेयर सिस्टम इसे तोड़ने के बिना इसमें कितनी अच्छी तरह से परिवर्तन की अनुमति देता है। यह प्रणाली के घटकों की परस्पर निर्भरता का विश्लेषण करके निर्धारित किया जाता है।

ओओ मेट्रिक्स पर रॉबर्ट सी मार्टिन article इन अवधारणाओं को अधिक मात्रात्मक शर्तों में वर्णित करता है। लेख से

अंश:

जिम्मेदारी, स्वतंत्रता और एक वर्ग की स्थिरता निर्भरता उस श्रेणी के साथ बातचीत गणना के द्वारा मापा जा सकता है। तीन मीट्रिक की पहचान की गई है:

Ca: असाधारण कपलिंग: इस श्रेणी के बाहर कक्षाओं पर निर्भर इस श्रेणी के बाहर कक्षाओं की संख्या।

Ce: अपवाही कपलिंग: इस श्रेणी के अंदर वर्गों है कि इस श्रेणियों के बाहर वर्गों पर निर्भर करते हैं की संख्या।

मैं: अस्थिरता: (Ce ÷ (सीए + सीई)): यह मीट्रिक रेंज [0,1] है। I = 0 अधिकतम स्थिर श्रेणी इंगित करता है। I = 1 एक अधिकतम अस्थिर श्रेणी इंगित करता है।

एक: अमूर्तता: (श्रेणी में # सार कक्षाएं ÷ श्रेणी में कक्षाओं की कुल #)। यह मीट्रिक रेंज [0,1] है। 0 का मतलब ठोस और 1 का अर्थ पूरी तरह से सार है।

किसी भी सॉफ्टवेयर सिस्टम में विशेष रूप से बड़े, संतुलन महत्वपूर्ण है। इस मामले में, एक प्रणाली को "अच्छा" होने के लिए स्थिरता के साथ अमूर्तता को संतुलित करना चाहिए। ए-आई ग्राफ पर स्थिति यह दिखाती है। स्पष्टीकरण के लिए लेख पढ़ें।

0

दोनों कोड और अस्थिरता का उपयोग आपके कोड का मूल्यांकन करने के लिए अकेले किया जा सकता है। आप पहले से जानते हैं कि कुछ मॉड्यूल कितना सार या स्थिर होना चाहिए।उदाहरण के लिए, आप प्रेजेंटेशन लेयर को सामान्य रूप से अमूर्त और अत्यधिक स्थिर होना चाहते हैं, क्योंकि कम मॉड्यूल इस पर निर्भर करते हैं। दूसरी तरफ, आप बुनियादी ढांचे परत को अत्यधिक ठोस (कम अमूर्तता) और अत्यधिक अस्थिर होना चाहते हैं, क्योंकि इसे ऊपरी परतों की मांग करनी चाहिए।

एक बार यह स्पष्ट हो जाने के बाद, आप एक ग्राफ में सार और अस्थिरता को जोड़ सकते हैं, और यह अस्थिरता-सार तत्व है। आवश्यकताओं में भविष्य में बदलावों का समर्थन करने के लिए जरूरतों को संतुलित करने के लिए, आप चाहते हैं कि आपका कोड स्थिरता के रूप में उतना ही अमूर्तता प्रदर्शित करे।

लेकिन वैसे भी, आपको एक साथ काम करने में समझने से पहले अस्थिरता और सारणी मेट्रिक्स की दृढ़ समझ होनी चाहिए। आप क्या अस्थिरता इस लेख में इसका मतलब है पर कुछ उदाहरण मिल सकते हैं: How to Use Module Coupling and Instability Metrics to Guide Refactoring

वहाँ एक संबंधित लेख एक CQLinq क्वेरी कि आवेदन में सभी मॉड्यूल की अस्थिरता उपायों पाने है: How to Measure Module Coupling and Instability Using NDepend

संबंधित मुद्दे