सॉफ्टवेयर उत्पादों में विभिन्न प्रकार की गुणवत्ता को मापा जा सकता है, जैसे उद्देश्य के लिए फिटनेस (जैसे अंत उपयोग), रखरखाव, दक्षता। इनमें से कुछ कुछ व्यक्तिपरक या डोमेन विशिष्ट हैं (उदाहरण के लिए अच्छे जीयूआई डिजाइन सिद्धांत संस्कृतियों में भिन्न हो सकते हैं या उपयोग के संदर्भ पर निर्भर हो सकते हैं, सैन्य बनाम उपभोक्ता उपयोग पर विचार करें)।
मैं जिस चीज में दिलचस्पी रखता हूं, वह प्रकारों के नेटवर्क (या ग्राफ) से संबंधित गुणवत्ता का गहरा रूप है और उनकी अंतर-संबंधितता है, अर्थात, प्रत्येक प्रकार किस प्रकार को संदर्भित करता है, क्या एक उचित रूप से संबंधित इंटरकनेक्टिविटी के स्पष्ट रूप से पहचाने जाने योग्य क्लस्टर हैं tiered वास्तुकला, या इसके विपरीत प्रकार के संदर्भों का एक बड़ा 'बॉल' है ('अखंड' कोड)। साथ ही प्रत्येक प्रकार और / या विधि का आकार (जैसे जावा बाइट कोड या .net IL की मात्रा में मापा जाता है) कुछ संकेत देना चाहिए जहां बड़े जटिल एल्गोरिदम को कोड के अखंड ब्लॉक के रूप में लागू किया गया है बजाय अधिक प्रबंधनीय / बनाए रखने में विघटित होने के। मात्रा।
इस तरह के विचारों पर आधारित एक विश्लेषण उन मैट्रिक्स की गणना करने में सक्षम हो सकता है जो कम से कम गुणवत्ता के लिए एक प्रॉक्सी हैं। उच्च और निम्न गुणवत्ता के बीच सटीक थ्रेशोल्ड / निर्णय बिंदु मैं व्यक्तिपरक हो सकता है, उदाहरण के लिए बनाए रखने के बाद से हम मानव प्रोग्रामर द्वारा स्थिरता बनाए रखने का मतलब है और इस प्रकार कार्यात्मक अपघटन मानव मन कैसे काम करते हैं के साथ संगत होना चाहिए। इस तरह के रूप में मुझे आश्चर्य है कि क्या कभी भी सॉफ्टवेयर गुणवत्ता की गणितीय रूप से शुद्ध परिभाषा हो सकती है जो सभी संभावित परिदृश्यों में सभी संभावित सॉफ़्टवेयर को स्थानांतरित करती है।
मुझे यह भी आश्चर्य होता है कि क्या यह एक खतरनाक विचार है, कि यदि गुणवत्ता के लिए उद्देश्य प्रॉक्सी लोकप्रिय हो जाती है कि व्यावसायिक दबाव डेवलपर्स को समग्र गुणवत्ता की कीमत पर इन मैट्रिक्स को आगे बढ़ाने का कारण बनेगा (गुणवत्ता के उन पहलुओं को जो प्रॉक्सी द्वारा मापा नहीं गया है)।
गुणवत्ता के बारे में सोचने का एक और तरीका एन्ट्रापी के दृष्टिकोण से है। एंट्रोपी व्यवस्था की प्रवृत्ति है जो अव्यवस्थित राज्यों के लिए आदेश से वापस आ गई है। किसी भी व्यक्ति ने कभी वास्तविक दुनिया में काम किया है, मध्यम से बड़े पैमाने पर सॉफ्टवेयर परियोजना उस डिग्री की सराहना करेगी जो कोड आधार की गुणवत्ता समय के साथ नीचा दिखाती है। व्यावसायिक दबावों में आम तौर पर परिवर्तन होता है जो नई कार्यक्षमता पर ध्यान केंद्रित करता है (जहां गुणवत्ता खुद को बेचने वाला सिद्धांत है, उदाहरण के लिए एविओनिक्स सॉफ़्टवेयर में), और प्रतिगमन मुद्दों और 'शू-हॉर्निंग' फ़ंक्शनेलिटी के माध्यम से गुणवत्ता का उन्मूलन जहां यह अच्छी तरह से फिट नहीं होता है एक गुणवत्ता और रखरखाव परिप्रेक्ष्य। तो, क्या हम सॉफ्टवेयर की एन्ट्रॉपी को माप सकते हैं? और यदि हां, तो कैसे?