4.0 भाग 4 का परिचय: कोड और गुणवत्ता मेट्रिक्स
भाग 2 और 3 ने मापा कि काम कैसे चलता है और इसे उत्पन्न करने वाले लोग कैसा कर रहे हैं। यह भाग कलाकृति की ओर मुड़ता है: कोड, और एक मेट्रिक इसकी गुणवत्ता के बारे में क्या बता सकता है और क्या नहीं। कोड गुणवत्ता मेट्रिक्स का इस पुस्तक के किसी भी मेट्रिक परिवार का सबसे लंबा इतिहास है, साइक्लोमैटिक जटिलता 1976 से चली आ रही है, और उसे मेल खाने के लिए दुरुपयोग का सबसे लंबा इतिहास भी। यह भाग उस इतिहास को गंभीरता से लेता है: हर विषय एक विशिष्ट, अच्छी तरह-प्रलेखित तरीक़े के साथ एक वास्तव में उपयोगी संकेत नाम देता है जिससे वह संकेत एक लक्ष्य बनते ही चालाकी के अधीन हो जाता है।
इन छह विषयों को जोड़ने वाली मूल रेखा यह है कि कोई भी एकल कोड मेट्रिक अपने आप में गुणवत्ता को कैप्चर नहीं करता, और कई सबसे लोकप्रिय मेट्रिक्स अलगाव में पीछा किए जाने पर सक्रिय रूप से गुमराह करते हैं। एक उच्च टेस्ट-कवरेज प्रतिशत ऐसे परीक्षणों के साथ सह-अस्तित्व में रह सकता है जो कुछ भी सार्थक सत्यापित नहीं करते। एक कम जटिलता स्कोर ऐसे कोड के साथ सह-अस्तित्व में रह सकता है जो तकनीकी रूप से सरल लेकिन वैचारिक रूप से असंगत है। इस भाग का हर विषय अपने सुर्खी मेट्रिक को उस पूरक जाँच के साथ जोड़ता है जो इसके विशिष्ट अंधे स्थान को पकड़ती है: रखरखाव-योग्यता संदर्भ के साथ जटिलता, म्यूटेशन परीक्षण के साथ कवरेज, हॉटस्पॉट विश्लेषण के साथ चर्न, मानवीय निर्णय के साथ स्थैतिक विश्लेषण, और एक सदैव-बढ़ते, अनदेखे बैकलॉग की बजाय प्राथमिकता प्राप्त उपचार के साथ तकनीकी ऋण।
बड़ी टीमों के लिए, कोड और गुणवत्ता मेट्रिक्स वह हैं जो एक कोडबेस को प्रबंधित करना संभव बनाते हैं जो किसी एक व्यक्ति के अपने दिमाग़ में रखने के लिए बहुत बड़ा है। एक पाँच-व्यक्ति टीम प्रणाली के किन हिस्सों को नाज़ुक हैं इसके साझा अकथित ज्ञान पर निर्भर कर सकती है; दर्जनों सेवाओं में फैले एक पाँच-सौ-इंजीनियर संगठन को उस नाज़ुकता को व्यवस्थित रूप से खोजने के लिए इंस्ट्रूमेंट किए गए संकेतों की आवश्यकता है। एंटरप्राइज़ और सरकारी संगठन, अक्सर वर्षों की बजाय दशकों में मापे गए कोडबेस ले जाते हुए, यह प्राथमिकता देने के लिए इस भाग के मेट्रिक्स पर निर्भर करते हैं कि सीमित रखरखाव निवेश सबसे अधिक अच्छा कहाँ करेगा।
इस भाग के विषय
- 4.1 कोड जटिलता मेट्रिक्स: साइक्लोमैटिक जटिलता और इसके रिश्तेदार, वे वास्तव में क्या भविष्यवाणी करते हैं, और उनका अच्छी तरह-प्रलेखित चालाकी जोखिम।
- 4.2 टेस्ट कवरेज और टेस्ट प्रभावशीलता: अकेले एक कवरेज प्रतिशत आपको इससे कम क्यों बताता है जितना यह दिखता है, और म्यूटेशन परीक्षण अंतर को कैसे बंद करता है।
- 4.3 कोड चर्न और हॉटस्पॉट विश्लेषण: एक कोडबेस के उस विशिष्ट, छोटे हिस्से को खोजना जो दोषों और रखरखाव लागत के एक असंगत हिस्से के लिए ज़िम्मेदार है।
- 4.4 स्थैतिक विश्लेषण और कोड स्मेल मेट्रिक्स: स्वचालित कोड-गुणवत्ता संकेत, उनका वास्तविक मूल्य, और मानवीय निर्णय के विरुद्ध उनकी सीमाएँ।
- 4.5 तकनीकी ऋण माप: एक अदृश्य, अनौपचारिक रूप से चर्चित देनदारी को एक दृश्यमान, प्राथमिकता प्राप्त, प्रबंधनीय पोर्टफ़ोलियो में बदलना।
- 4.6 दस्तावेज़ीकरण और ज्ञान मेट्रिक्स: यह मापना कि क्या दस्तावेज़ीकरण वास्तव में मदद करता है, केवल यह नहीं कि क्या यह मौजूद है।
ये विषय आपस में कैसे संबंधित हैं
ये छह विषय कोड की सबसे छोटी इकाई से बाहर की ओर निर्माण करते हैं। विषय 4.1 एक अकेले फ़ंक्शन या मेथड के स्तर पर शुरू होता है; विषय 4.2 पूछता है कि क्या परीक्षण वास्तव में उस इकाई के व्यवहार को सत्यापित करते हैं; विषय 4.3 यह खोजने के लिए ज़ूम आउट करता है कि पूरे कोडबेस में कौन-सी फ़ाइलें और मॉड्यूल पहले ध्यान देने के हक़दार हैं; विषय 4.4 स्वचालित टूलिंग परत जोड़ता है जो इन सभी को निरंतर स्कैन करता है; विषय 4.5 चारों से संचित खोजों को एक फैलाव, असंबोधित चिंता की बजाय एक प्रबंधित, प्राथमिकता प्राप्त बैकलॉग में बदल देता है; और विषय 4.6 यह मापकर भाग को समाप्त करता है कि क्या इन सबको सुरक्षित रूप से बनाए रखने के लिए आवश्यक ज्ञान वास्तव में दस्तावेज़ीकृत और खोजने योग्य है।
यह भाग सीधे भाग 2 के स्थिरता मेट्रिक्स से वापस जुड़ता है: चेंज फ़ेल्योर रेट (विषय 2.10) बड़े हिस्से में इस भाग द्वारा अपस्ट्रीम मापी गई कोड गुणवत्ता का एक डाउनस्ट्रीम परिणाम है। यह भाग 5 के उत्पाद मेट्रिक्स से भी आगे जुड़ता है, क्योंकि एस्केप्ड दोष (विषय 5.1) अक्सर ठीक उन्हीं जटिलता हॉटस्पॉट और कवरेज अंतरों तक ट्रेस करने योग्य होते हैं जिन्हें उजागर करने के लिए यह भाग बनाया गया है इससे पहले कि वे बिल्कुल उत्पादन तक पहुँचें।