2010-10-06 25 views
6

उन चीजों में से एक जो मैं बहुत दूर सोच रहा था और यह है कि हम परिवर्तन को मापने के लिए किसी तरह के मीट्रिक का उपयोग कैसे कर सकते हैं, क्या हम पीछे की तरफ जा रहे हैं या नहीं? यह एक बड़े, विरासत कोड बेस के संदर्भ में है जिसे हम सुधार रहे हैं। अधिकांश कोड सी विरासत के साथ सी ++ है। कुछ नए कार्यों और जीयूआई सी # में लिखे गए हैं।मैं बड़े कोड बेस गुणवत्ता में परिवर्तनों को कैसे देख सकता हूं?

आरंभ करने के लिए, हम कम से कम जांच कर सकते हैं कि कोड में समय के साथ सरल जटिलता स्तर बदल रहा था या नहीं। कठिनाई का प्रतिनिधित्व करने में कठिनाई होती है - हम शायद एक 3 डी सतह कर सकते हैं जहां एक 2 डी मानचित्र कोड का प्रतिनिधित्व करता है और हमारे पास 3 डी सतह के साथ जटिलता का प्रतिनिधित्व करने वाले रंग का गर्मी-नक्शा होता है जिसमें परिवर्तन दिखाने के लिए अंदर और बाहर उभरा होता है।

एक बार जब आप संख्याओं के कुछ मैट्रिक्स उत्पन्न कर सकते हैं तो इस तरह की चीजों का ख्याल रखने के लिए गणित प्रणालियों का एक टन होता है।

समय के साथ, मैं वहां अधिक परिष्कृत संख्याएं चाहता हूं लेकिन परिवर्तन का प्रतिनिधित्व करने के लिए उपयोग की जाने वाली वही विज़ुअलाइज़ेशन तकनीकें।

मुझे उस कोड को कवर करने वाली जटिलता और इकाई परीक्षणों की संख्या के बीच अनुपात पर ध्यान केंद्रित करने के Crap4j में विचार पसंद है।

मैं Uncle Bob's SOLID metrics और कुछ चिदंबर और केमेरर ओओ मेट्रिक्स भी शामिल करना चाहता हूं। हार्ड भाग सी ++ के लिए इन्हें उत्पन्न करने के लिए टूल ढूंढ रहा है। एकमात्र विकल्प Krakatau Essential Metrics लगता है (मुझे उपकरण के लिए भुगतान करने पर कोई आपत्ति नहीं है)। सीके मेट्रिक्स का उपयोग करने की मेरी इच्छा आंशिक रूप से Object-Oriented Metrics:Measures of Complexity से हैंडर्सन-सेलर्स और पहले Object-Oriented Software Metrics द्वारा आती है।

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

ध्यान दें कि एक संबंधित प्रश्न measuring code quality across a large code base है। मुझे बदलने में अधिक दिलचस्पी है।

उत्तर

3

मैं समय के साथ विकसित कई सॉफ़्टवेयर मीट्रिक आयामों का प्रतिनिधित्व करने के लिए Kiviat Diagram का उपयोग करने पर विचार करता हूं। ये आरेख एक केंद्र बिंदु के चारों ओर एक अवतल हल में एकाधिक डेटा बिंदुओं का प्रतिनिधित्व करते हैं। दृश्य निरीक्षण दिखाएगा कि एक विशेष मीट्रिक ऊपर या नीचे जा रहा है, और किसी को कुछ ह्यूरिस्टिक क्षेत्र गणना का उपयोग करके मीट्रिक मूल्य द्वारा पक्षपातपूर्ण क्षेत्र के समग्र अनुपात की गणना करने में सक्षम होना चाहिए।

+1

धन्यवाद, कि जादू अवधि मुझे अपनी खोजों को कम करने में सक्षम होने की जरूरत थी। मुझे 3 डी किवियत आरेखों का उपयोग करने पर वास्तव में एक दिलचस्प पोस्टर पेपर मिला है http://w3.msi.vxu.se/~kerren/pubs/kerren-softvis10.pdf –

+0

पेपर को लिंक अपडेट करना: http: //homepage.lnu। se/staff/akemsi/pubs/kerren-softvis10.pdf –

1

आप NDepend documentation about code metrics पर भी एक नज़र डाल सकते हैं। अस्वीकरण: मैं उपकरण NDepend के डेवलपर में से एक हूं।

Code Rule and Query over LINQ (CQLinq) सुविधा के साथ, कोड बेस के समय दो अलग-अलग स्नैपशॉट में कोड मीट्रिक विकास/प्रवृत्ति के लिए पूछना संभव है। Avoid making complex methods even more complex नीचे स्क्रीनशॉट द्वारा सचित्र: उदाहरण के लिए वहाँ के लिए डिफ़ॉल्ट नियम प्रस्तावित है

Avoid making complex methods even more complex

कई मीट्रिक ट्रेंडिंग नियम की तरह प्रस्ताव है: प्रकार की

कोड मीट्रिक के दृश्य के संबंध में, NDepend एक interactive treemap के माध्यम से कल्पना कोड मैट्रिक्स मूल्यों करने देता है:

Code Metric viualized through Treemap

+0

सुझाव के लिए धन्यवाद लेकिन जैसा कि मैंने सवाल में कहा था, मैं जिस कोड से चिंतित हूं वह सी ++ है। मैंने एनडियंस के ईर्ष्या-प्रेरित करने वाले लोगों को देखा है। मैं उनके मेट्रिक्स दस्तावेज को देखने के लिए टिप की सराहना करता हूं। –

+0

फिर क्यों CppDepend का उपयोग नहीं कर रहे हैं? http://www.cppdepend.com/ NDepend का सी ++ संस्करण? –

+0

मैंने यह नहीं देखा था कि यह अस्तित्व में है। "फोल्ड के नीचे" होम पेज के निचले दाएं कोने में एकमात्र उल्लेख नीचे दिया गया है और एनडॉन्सेन को नेट टूल के रूप में भारी रूप से विज्ञापित किया जाता है। मैं निश्चित रूप से इसे एक परीक्षण दे दूंगा। मैं यह भी सुझाव देता हूं कि आप वेबसाइट बैनर पर उल्लेख करने के बारे में मार्केटिंग लोगों से बात करें कि आप सी ++ और जावा भी करते हैं - मुझे आश्चर्य है कि कितने अन्य लोग सी ++ लिंक से चूक गए हैं। धन्यवाद –

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