कहेसिओन (कंप्यूटर विज्ञान)

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

सामंजस्य क्रमिक प्रकार का माप है और इसे सामान्यतः "उच्च संसंजन" या "निम्न संसंजन" के रूप में वर्णित किया जाता है। उच्च सामंजस्य वाले मॉड्यूल उत्तम होते हैं, क्योंकि उच्च सामंजस्य सॉफ्टवेयर के कई वांछनीय लक्षणों से जुड़ा होता है, जिसमें रोबस्टनेस, विश्वसनीयता, पुन: प्रयोज्यता और समझ सम्मिलित है। इसके विपरीत, कम सामंजस्य अवांछनीय लक्षणों से जुड़ा हुआ है जैसे कि बनाए रखना, परीक्षण करना, पुन: उपयोग करना या यहां तक ​​कि समझना जटिल है।

सामंजस्य को अधिकांशतः युग्मन, अलग अवधारणा के विपरीत माना जाता है। उच्च सामंजस्य अधिकांशतः ढीले युग्मन और इसके विपरीतता से संबंधित होता है। 1960 के दशक के उत्तरार्ध में लैरी कॉन्स्टेंटाइन द्वारा युग्मन और सामंजस्य के सॉफ्टवेयर मीट्रिक का आविष्कार संरचित डिज़ाइन के हिस्से के रूप में किया गया था, जो देखभाल और संशोधन व्यय को कम करने वाली "अच्छी" प्रोग्रामिंग प्रथाओं की विशेषताओं पर आधारित था। संरचित डिजाइन, सामंजस्य और युग्मन लेख स्टीवंस, मायर्स और कॉन्सटेंटाइन (1974), योरडॉन और कॉन्सटेंटाइन पुस्तक (1979) में प्रकाशित किए गए थे। बाद के दो, बाद में सॉफ्टवेयर इंजीनियरिंग में मानक शब्द बन गए।

उच्च सामंजस्य
वस्तु-उन्मुख प्रोग्रामिंग में, यदि वर्ग की सेवा करने वाली विधियाँ कई पहलुओं में समान होती हैं, तो उस वर्ग को उच्च सामंजस्य कहा जाता है। अत्यधिक सामंजस्यपूर्ण प्रणाली में, कोड पठनीयता और पुन: प्रयोज्यता बढ़ जाती है, जबकि जटिलता को प्रबंधनीय रखा जाता है। सामंजस्य बढ़ जाता है यदि:
 * वर्ग में एम्बेड की गई कार्यप्रणाली, इसके विधियों के माध्यम से एक्सेस की गई, में बहुत कुछ सामान्य है।
 * डेटा के मोटे दाने वाले या असंबंधित सेट से बचकर, विधियाँ संबंधित गतिविधियों की छोटी संख्या को परिणाम देती हैं।
 * संबंधित विधियाँ समान स्रोत फ़ाइल में हैं या अन्यथा एक साथ समूहीकृत हैं; उदाहरण के लिए, अलग फ़ाइलों में लेकिन समान उप-निर्देशिका/फ़ोल्डर में।

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

जबकि सिद्धांत रूप में मॉड्यूल में केवल एकल, परमाणु तत्व - एकल कार्य होने के कारण पूर्ण सामंजस्य हो सकता है, उदाहरण के लिए - व्यवहार में जटिल कार्य एकल, सरल तत्व द्वारा अभिव्यक्त नहीं होते हैं। इस प्रकार एकल-तत्व मॉड्यूल में तत्व होता है जो या तो बहुत जटिल होता है, किसी कार्य को पूरा करने के लिए, या बहुत संकीर्ण होता है, और इस प्रकार अन्य मॉड्यूल के लिए कसकर युग्मन (कंप्यूटर प्रोग्रामिंग) होता है। इस प्रकार सामंजस्य इकाई जटिलता और युग्मन दोनों के साथ संतुलित है।

सामंजस्य के प्रकार
सामंजस्य गुणात्मक माप है, जिसका अर्थ है कि मापे जाने वाले स्रोत कोड को वर्गीकरण निर्धारित करने के लिए रूब्रिक (अकादमिक) का उपयोग करके जांचा जाता है। सामंजस्य प्रकार, सबसे खराब से सर्वोत्तम तक, इस प्रकार हैं:


 * आकस्मिक सामंजस्य (सबसे खराब): संयोगात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को इच्छानुसार समूहीकृत किया जाता है; भागों के बीच एकमात्र संबंध यह है कि उन्हें एक साथ समूहीकृत किया गया है (उदाहरण के लिए, "उपयोगिताएँ" वर्ग)। उदाहरण:


 * तार्किक सामंजस्य: तार्किक सामंजस्य तब होता है जब मॉड्यूल के हिस्सों को समूहीकृत किया जाता है क्योंकि वे तार्किक रूप से समान काम करने के लिए वर्गीकृत होते हैं, तथापि वे प्रकृति से भिन्न (उदाहरण के लिए, सभी माउस और कीबोर्ड इनपुट हैंडलिंग रूटीन को समूहीकृत करना या सभी मॉडलों, विचारों और नियंत्रकों को अलग-अलग एमवीसी पैटर्न में फ़ोल्डरों में बंडल करना) होते हैं।


 * टेम्पोरल सामंजस्य: टेम्पोरल सामंजस्य तब होता है जब मॉड्यूल के हिस्सों को संसाधित होने पर समूहीकृत किया जाता है - भागों को प्रोग्राम निष्पादन में विशेष समय पर संसाधित (उदाहरण के लिए, फलन जिसे अपवाद को पकड़ने के बाद बुलाया जाता है जो खुली फाइलों को बंद करता है, त्रुटि बनाता है, लॉग और उपयोगकर्ता को सूचित करता है) किया जाता है ।


 * प्रक्रियात्मक सामंजस्य: प्रक्रियात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सदैव निष्पादन के निश्चित अनुक्रम (उदाहरण के लिए, फलन जो फ़ाइल अनुमतियों की जांच करता है और फिर फ़ाइल खोलता है) का पालन करते हैं।


 * संचार/सूचनात्मक सामंजस्य: संचार संबंधी सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे समान डेटा पर काम करते हैं (उदाहरण के लिए, मॉड्यूल जो सूचना के समान रिकॉर्ड पर काम करता है)।


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

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

यह भी देखें

 * युग्मन (कंप्यूटर विज्ञान)
 * वस्तु-उन्मुख प्रोग्रामिंग शब्दों की सूची
 * स्टेटिक कोड विश्लेषण

बाहरी संबंध

 * Definitions of Cohesion metrics
 * Cohesion metrics
 * Measuring Cohesion in Python