कहेसिओन (कंप्यूटर विज्ञान): Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Degree to which elements within a module belong together}} | {{short description|Degree to which elements within a module belong together}} | ||
[[कंप्यूटर प्रोग्रामिंग]] में, संसंजन उस 'डिग्री' को संदर्भित करता है जिस तक [[मॉड्यूल (प्रोग्रामिंग)]] के अंदर के तत्व एक साथ होते हैं।<ref name="Yourdon_1979"/> | [[कंप्यूटर प्रोग्रामिंग]] में, संसंजन उस 'डिग्री' को संदर्भित करता है जिस तक [[मॉड्यूल (प्रोग्रामिंग)]] के अंदर के तत्व एक साथ होते हैं।<ref name="Yourdon_1979"/> दूसरे अर्थ में, यह [[विधि (कंप्यूटर प्रोग्रामिंग)|विधि]] और कक्षा (कंप्यूटर प्रोग्रामिंग) के डेटा और उस वर्ग द्वारा प्रदान किए गए कुछ एकीकृत उद्देश्य या अवधारणा के बीच संबंधों की शक्ति का उपाय है। दूसरे अर्थ में, यह वर्ग के विधियों और स्वयं डेटा के बीच संबंध की शक्ति का उपाय है। | ||
सामंजस्य क्रमिक प्रकार का माप है और इसे सामान्यतः "उच्च संसंजन" या "निम्न संसंजन" के रूप में वर्णित किया जाता है। उच्च सामंजस्य वाले मॉड्यूल उत्तम होते हैं, क्योंकि उच्च सामंजस्य सॉफ्टवेयर के कई वांछनीय लक्षणों से जुड़ा होता है, जिसमें रोबस्टनेस | सामंजस्य क्रमिक प्रकार का माप है और इसे सामान्यतः "उच्च संसंजन" या "निम्न संसंजन" के रूप में वर्णित किया जाता है। उच्च सामंजस्य वाले मॉड्यूल उत्तम होते हैं, क्योंकि उच्च सामंजस्य सॉफ्टवेयर के कई वांछनीय लक्षणों से जुड़ा होता है, जिसमें रोबस्टनेस, विश्वसनीयता, पुन: प्रयोज्यता और समझ सम्मिलित है। इसके विपरीत, कम सामंजस्य अवांछनीय लक्षणों से जुड़ा हुआ है जैसे कि बनाए रखना, परीक्षण करना, पुन: उपयोग करना या यहां तक कि समझना जटिल है। | ||
सामंजस्य को अधिकांशतः [[युग्मन (कंप्यूटर विज्ञान)|युग्मन | सामंजस्य को अधिकांशतः [[युग्मन (कंप्यूटर विज्ञान)|युग्मन]], अलग अवधारणा के विपरीत माना जाता है। उच्च सामंजस्य अधिकांशतः ढीले युग्मन और इसके विपरीतता से संबंधित होता है।<ref name="Ingeno_2018"/> 1960 के दशक के उत्तरार्ध में [[लैरी कॉन्स्टेंटाइन]] द्वारा युग्मन और सामंजस्य के [[सॉफ्टवेयर मीट्रिक]] का आविष्कार संरचित डिज़ाइन के हिस्से के रूप में किया गया था, जो देखभाल और संशोधन व्यय को कम करने वाली "अच्छी" प्रोग्रामिंग प्रथाओं की विशेषताओं पर आधारित था। [[संरचित डिजाइन]], सामंजस्य और युग्मन लेख स्टीवंस, मायर्स और कॉन्सटेंटाइन<ref name="Yourdon_1979" /> (1974), योरडॉन और कॉन्सटेंटाइन पुस्तक<ref name="Stevens_1974"/> (1979) में प्रकाशित किए गए थे। बाद के दो, बाद में [[सॉफ्टवेयर इंजीनियरिंग]] में मानक शब्द बन गए। | ||
== उच्च सामंजस्य == | == उच्च सामंजस्य == | ||
Line 10: | Line 10: | ||
[[File:CouplingVsCohesion.svg|thumb|एकजुटता]]सामंजस्य बढ़ जाता है यदि: | [[File:CouplingVsCohesion.svg|thumb|एकजुटता]]सामंजस्य बढ़ जाता है यदि: | ||
*वर्ग में एम्बेड की गई कार्यप्रणाली, इसके विधियों के माध्यम से एक्सेस की गई, में बहुत कुछ सामान्य है। | *वर्ग में एम्बेड की गई कार्यप्रणाली, इसके विधियों के माध्यम से एक्सेस की गई, में बहुत कुछ सामान्य है। | ||
*डेटा के मोटे दाने वाले या असंबंधित सेट से बचकर, विधियाँ संबंधित गतिविधियों की | *डेटा के मोटे दाने वाले या असंबंधित सेट से बचकर, विधियाँ संबंधित गतिविधियों की छोटी संख्या को परिणाम देती हैं। | ||
*संबंधित विधियाँ | *संबंधित विधियाँ समान स्रोत फ़ाइल में हैं या अन्यथा एक साथ समूहीकृत हैं; उदाहरण के लिए, अलग फ़ाइलों में लेकिन समान उप-निर्देशिका/फ़ोल्डर में। | ||
उच्च सामंजस्य (या ठोस सामंजस्य) के लाभ हैं: | उच्च सामंजस्य (या ठोस सामंजस्य) के लाभ हैं: | ||
Line 21: | Line 21: | ||
== सामंजस्य के प्रकार == | == सामंजस्य के प्रकार == | ||
सामंजस्य | सामंजस्य गुणात्मक माप है, जिसका अर्थ है कि मापे जाने वाले स्रोत कोड को वर्गीकरण निर्धारित करने के लिए [[रूब्रिक (अकादमिक)]] का उपयोग करके जांचा जाता है। सामंजस्य प्रकार, सबसे खराब से सर्वोत्तम तक, इस प्रकार हैं: | ||
;आकस्मिक सामंजस्य (सबसे खराब): संयोगात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को इच्छानुसार समूहीकृत किया जाता है; भागों के बीच एकमात्र संबंध यह है कि उन्हें एक साथ समूहीकृत किया गया है (उदाहरण के लिए, "उपयोगिताएँ" वर्ग)। उदाहरण | ;आकस्मिक सामंजस्य (सबसे खराब): संयोगात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को इच्छानुसार समूहीकृत किया जाता है; भागों के बीच एकमात्र संबंध यह है कि उन्हें एक साथ समूहीकृत किया गया है (उदाहरण के लिए, "उपयोगिताएँ" वर्ग)। उदाहरण: <syntaxhighlight> | ||
/* | /* | ||
Groups: The function definitions | Groups: The function definitions | ||
Line 39: | Line 39: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;तार्किक सामंजस्य: तार्किक सामंजस्य तब होता है जब मॉड्यूल के | ;तार्किक सामंजस्य: तार्किक सामंजस्य तब होता है जब मॉड्यूल के हिस्सों को समूहीकृत किया जाता है क्योंकि वे तार्किक रूप से समान काम करने के लिए वर्गीकृत होते हैं, तथापि वे प्रकृति से भिन्न (उदाहरण के लिए, सभी माउस और कीबोर्ड इनपुट हैंडलिंग रूटीन को समूहीकृत करना या सभी मॉडलों, विचारों और नियंत्रकों को अलग-अलग एमवीसी पैटर्न में फ़ोल्डरों में बंडल करना) होते हैं। | ||
;टेम्पोरल सामंजस्य: टेम्पोरल सामंजस्य तब होता है जब | ;टेम्पोरल सामंजस्य: टेम्पोरल सामंजस्य तब होता है जब मॉड्यूल के हिस्सों को संसाधित होने पर समूहीकृत किया जाता है - भागों को प्रोग्राम निष्पादन में विशेष समय पर संसाधित (उदाहरण के लिए, फलन जिसे अपवाद को पकड़ने के बाद बुलाया जाता है जो खुली फाइलों को बंद करता है, त्रुटि बनाता है, लॉग और उपयोगकर्ता को सूचित करता है) किया जाता है । | ||
;प्रक्रियात्मक सामंजस्य: प्रक्रियात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे | ;प्रक्रियात्मक सामंजस्य: प्रक्रियात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सदैव निष्पादन के निश्चित अनुक्रम (उदाहरण के लिए, फलन जो फ़ाइल अनुमतियों की जांच करता है और फिर फ़ाइल खोलता है) का पालन करते हैं। | ||
;संचार/सूचनात्मक सामंजस्य: संचार संबंधी सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे | ;संचार/सूचनात्मक सामंजस्य: संचार संबंधी सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे समान डेटा पर काम करते हैं (उदाहरण के लिए, मॉड्यूल जो सूचना के समान रिकॉर्ड पर काम करता है)। | ||
;अनुक्रमिक सामंजस्य: अनुक्रमिक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि एक भाग से आउटपुट असेंबली लाइन की तरह दूसरे भाग में इनपुट होता है (उदाहरण के लिए, | ;अनुक्रमिक सामंजस्य: अनुक्रमिक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि एक भाग से आउटपुट असेंबली लाइन की तरह दूसरे भाग में इनपुट होता है (उदाहरण के लिए, फलन जो फ़ाइल से डेटा पढ़ता है और डेटा को संसाधित करता है)। | ||
;कार्यात्मक सामंजस्य (सर्वश्रेष्ठ): कार्यात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सभी मॉड्यूल के अच्छी तरह से परिभाषित कार्य | ;कार्यात्मक सामंजस्य (सर्वश्रेष्ठ): कार्यात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सभी मॉड्यूल के अच्छी तरह से परिभाषित कार्य (उदाहरण के लिए, एक्सएमएल स्ट्रिंग का लेक्सिकल विश्लेषण) में योगदान करते हैं। उदाहरण:<syntaxhighlight> | ||
/* | /* | ||
Groups: The function definitions | Groups: The function definitions | ||
Line 92: | Line 76: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;पूर्ण सामंजस्य (परमाणु): उदाहरणː <syntaxhighlight> | |||
;पूर्ण सामंजस्य (परमाणु): उदाहरणː | |||
/* | /* | ||
Groups: The function definitions | Groups: The function definitions | ||
Line 132: | Line 89: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
चूंकि सामंजस्य रैंकिंग प्रकार का पैमाना है, रैंक उत्तम सामंजस्य की स्थिर प्रगति का संकेत नहीं देते हैं। लैरी कॉन्सटेंटाइन, [[एडवर्ड योरडन]] और [[स्टीव मैककोनेल]] सहित विभिन्न लोगों द्वारा अध्ययन<ref name="McConnell" /> संकेत मिलता है कि पहले दो प्रकार के सामंजस्य हीन हैं; संचार और अनुक्रमिक सामंजस्य बहुत अच्छा है; और कार्यात्मक सामंजस्य श्रेष्ठ है। | |||
चूंकि सामंजस्य रैंकिंग प्रकार का पैमाना है, रैंक उत्तम सामंजस्य की स्थिर प्रगति का संकेत नहीं देते हैं। लैरी कॉन्सटेंटाइन, [[एडवर्ड योरडन]] और [[स्टीव मैककोनेल]] सहित विभिन्न लोगों द्वारा अध्ययन<ref name="McConnell"/> संकेत मिलता है कि पहले दो प्रकार के सामंजस्य हीन हैं; संचार और अनुक्रमिक सामंजस्य बहुत अच्छा है; और कार्यात्मक सामंजस्य श्रेष्ठ है। | |||
== यह भी देखें == | == यह भी देखें == |
Revision as of 01:36, 28 February 2023
कंप्यूटर प्रोग्रामिंग में, संसंजन उस 'डिग्री' को संदर्भित करता है जिस तक मॉड्यूल (प्रोग्रामिंग) के अंदर के तत्व एक साथ होते हैं।[1] दूसरे अर्थ में, यह विधि और कक्षा (कंप्यूटर प्रोग्रामिंग) के डेटा और उस वर्ग द्वारा प्रदान किए गए कुछ एकीकृत उद्देश्य या अवधारणा के बीच संबंधों की शक्ति का उपाय है। दूसरे अर्थ में, यह वर्ग के विधियों और स्वयं डेटा के बीच संबंध की शक्ति का उपाय है।
सामंजस्य क्रमिक प्रकार का माप है और इसे सामान्यतः "उच्च संसंजन" या "निम्न संसंजन" के रूप में वर्णित किया जाता है। उच्च सामंजस्य वाले मॉड्यूल उत्तम होते हैं, क्योंकि उच्च सामंजस्य सॉफ्टवेयर के कई वांछनीय लक्षणों से जुड़ा होता है, जिसमें रोबस्टनेस, विश्वसनीयता, पुन: प्रयोज्यता और समझ सम्मिलित है। इसके विपरीत, कम सामंजस्य अवांछनीय लक्षणों से जुड़ा हुआ है जैसे कि बनाए रखना, परीक्षण करना, पुन: उपयोग करना या यहां तक कि समझना जटिल है।
सामंजस्य को अधिकांशतः युग्मन, अलग अवधारणा के विपरीत माना जाता है। उच्च सामंजस्य अधिकांशतः ढीले युग्मन और इसके विपरीतता से संबंधित होता है।[2] 1960 के दशक के उत्तरार्ध में लैरी कॉन्स्टेंटाइन द्वारा युग्मन और सामंजस्य के सॉफ्टवेयर मीट्रिक का आविष्कार संरचित डिज़ाइन के हिस्से के रूप में किया गया था, जो देखभाल और संशोधन व्यय को कम करने वाली "अच्छी" प्रोग्रामिंग प्रथाओं की विशेषताओं पर आधारित था। संरचित डिजाइन, सामंजस्य और युग्मन लेख स्टीवंस, मायर्स और कॉन्सटेंटाइन[1] (1974), योरडॉन और कॉन्सटेंटाइन पुस्तक[3] (1979) में प्रकाशित किए गए थे। बाद के दो, बाद में सॉफ्टवेयर इंजीनियरिंग में मानक शब्द बन गए।
उच्च सामंजस्य
वस्तु-उन्मुख प्रोग्रामिंग में, यदि वर्ग की सेवा करने वाली विधियाँ कई पहलुओं में समान होती हैं, तो उस वर्ग को उच्च सामंजस्य कहा जाता है।[4] अत्यधिक सामंजस्यपूर्ण प्रणाली में, कोड पठनीयता और पुन: प्रयोज्यता बढ़ जाती है, जबकि जटिलता को प्रबंधनीय रखा जाता है।
सामंजस्य बढ़ जाता है यदि:
- वर्ग में एम्बेड की गई कार्यप्रणाली, इसके विधियों के माध्यम से एक्सेस की गई, में बहुत कुछ सामान्य है।
- डेटा के मोटे दाने वाले या असंबंधित सेट से बचकर, विधियाँ संबंधित गतिविधियों की छोटी संख्या को परिणाम देती हैं।
- संबंधित विधियाँ समान स्रोत फ़ाइल में हैं या अन्यथा एक साथ समूहीकृत हैं; उदाहरण के लिए, अलग फ़ाइलों में लेकिन समान उप-निर्देशिका/फ़ोल्डर में।
उच्च सामंजस्य (या ठोस सामंजस्य) के लाभ हैं:
- कम मॉड्यूल जटिलता (वे कम संचालन वाले सरल हैं)।
- बढ़ी हुई प्रणाली देखभाल, क्योंकि डोमेन में तार्किक परिवर्तन कम मॉड्यूल को प्रभावित करते हैं, और क्योंकि मॉड्यूल में बदलाव के लिए अन्य मॉड्यूल में कम बदलाव की आवश्यकता होती है।
- बढ़ा हुआ मॉड्यूल पुन: प्रयोज्यता, क्योंकि अनुप्रयोग डेवलपर्स मॉड्यूल द्वारा प्रदान किए गए संचालन के संयोजन सेट के बीच सॉफ़्टवेयर घटक को अधिक सरलता से ढूंढते हैं।
जबकि सिद्धांत रूप में मॉड्यूल में केवल एकल, परमाणु तत्व - एकल कार्य होने के कारण पूर्ण सामंजस्य हो सकता है, उदाहरण के लिए - व्यवहार में जटिल कार्य एकल, सरल तत्व द्वारा अभिव्यक्त नहीं होते हैं। इस प्रकार एकल-तत्व मॉड्यूल में तत्व होता है जो या तो बहुत जटिल होता है, किसी कार्य को पूरा करने के लिए, या बहुत संकीर्ण होता है, और इस प्रकार अन्य मॉड्यूल के लिए कसकर युग्मन (कंप्यूटर प्रोग्रामिंग) होता है। इस प्रकार सामंजस्य इकाई जटिलता और युग्मन दोनों के साथ संतुलित है।
सामंजस्य के प्रकार
सामंजस्य गुणात्मक माप है, जिसका अर्थ है कि मापे जाने वाले स्रोत कोड को वर्गीकरण निर्धारित करने के लिए रूब्रिक (अकादमिक) का उपयोग करके जांचा जाता है। सामंजस्य प्रकार, सबसे खराब से सर्वोत्तम तक, इस प्रकार हैं:
- आकस्मिक सामंजस्य (सबसे खराब)
- संयोगात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को इच्छानुसार समूहीकृत किया जाता है; भागों के बीच एकमात्र संबंध यह है कि उन्हें एक साथ समूहीकृत किया गया है (उदाहरण के लिए, "उपयोगिताएँ" वर्ग)। उदाहरण:
/* Groups: The function definitions Parts: The terms on each function */ Module A { /* Implementation of r(x) = 5x + 3 There is no particular reason to group functions in this way, so the module is said to have Coincidental Cohesion. */ r(x) = a(x) + b(x) a(x) = 2x + 1 b(x) = 3x + 2 }
- तार्किक सामंजस्य
- तार्किक सामंजस्य तब होता है जब मॉड्यूल के हिस्सों को समूहीकृत किया जाता है क्योंकि वे तार्किक रूप से समान काम करने के लिए वर्गीकृत होते हैं, तथापि वे प्रकृति से भिन्न (उदाहरण के लिए, सभी माउस और कीबोर्ड इनपुट हैंडलिंग रूटीन को समूहीकृत करना या सभी मॉडलों, विचारों और नियंत्रकों को अलग-अलग एमवीसी पैटर्न में फ़ोल्डरों में बंडल करना) होते हैं।
- टेम्पोरल सामंजस्य
- टेम्पोरल सामंजस्य तब होता है जब मॉड्यूल के हिस्सों को संसाधित होने पर समूहीकृत किया जाता है - भागों को प्रोग्राम निष्पादन में विशेष समय पर संसाधित (उदाहरण के लिए, फलन जिसे अपवाद को पकड़ने के बाद बुलाया जाता है जो खुली फाइलों को बंद करता है, त्रुटि बनाता है, लॉग और उपयोगकर्ता को सूचित करता है) किया जाता है ।
- प्रक्रियात्मक सामंजस्य
- प्रक्रियात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सदैव निष्पादन के निश्चित अनुक्रम (उदाहरण के लिए, फलन जो फ़ाइल अनुमतियों की जांच करता है और फिर फ़ाइल खोलता है) का पालन करते हैं।
- संचार/सूचनात्मक सामंजस्य
- संचार संबंधी सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे समान डेटा पर काम करते हैं (उदाहरण के लिए, मॉड्यूल जो सूचना के समान रिकॉर्ड पर काम करता है)।
- अनुक्रमिक सामंजस्य
- अनुक्रमिक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि एक भाग से आउटपुट असेंबली लाइन की तरह दूसरे भाग में इनपुट होता है (उदाहरण के लिए, फलन जो फ़ाइल से डेटा पढ़ता है और डेटा को संसाधित करता है)।
- कार्यात्मक सामंजस्य (सर्वश्रेष्ठ)
- कार्यात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सभी मॉड्यूल के अच्छी तरह से परिभाषित कार्य (उदाहरण के लिए, एक्सएमएल स्ट्रिंग का लेक्सिकल विश्लेषण) में योगदान करते हैं। उदाहरण:
/* Groups: The function definitions Parts: The terms on each function */ Module A { /* Implementation of arithmetic operations This module is said to have functional cohesion because there is an intention to group simple arithmetic operations on it. */ a(x, y) = x + y b(x, y) = x * y } Module B { /* Module B: Implements r(x) = 5x + 3 This module can be said to have atomic cohesion. The whole system (with Modules A and B as parts) can also be said to have functional cohesion, because its parts both have specific separate purposes. */ r(x) = [Module A].a([Module A].b(5, x), 3) }
- पूर्ण सामंजस्य (परमाणु)
- उदाहरणː
/* Groups: The function definitions Parts: The terms on each function */ Module A { /* Implementation of r(x) = 2x + 1 + 3x + 2 It's said to have perfect cohesion because it cannot be reduced any more than that. */ r(x) = 5x + 3 }
चूंकि सामंजस्य रैंकिंग प्रकार का पैमाना है, रैंक उत्तम सामंजस्य की स्थिर प्रगति का संकेत नहीं देते हैं। लैरी कॉन्सटेंटाइन, एडवर्ड योरडन और स्टीव मैककोनेल सहित विभिन्न लोगों द्वारा अध्ययन[5] संकेत मिलता है कि पहले दो प्रकार के सामंजस्य हीन हैं; संचार और अनुक्रमिक सामंजस्य बहुत अच्छा है; और कार्यात्मक सामंजस्य श्रेष्ठ है।
यह भी देखें
- युग्मन (कंप्यूटर विज्ञान)
- वस्तु-उन्मुख प्रोग्रामिंग शब्दों की सूची
- स्टेटिक कोड विश्लेषण
संदर्भ
- ↑ 1.0 1.1 Yourdon, Edward; Constantine, Larry LeRoy (1979) [1975]. Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design. Yourdon Press. Bibcode:1979sdfd.book.....Y. ISBN 978-0-13-854471-3.
- ↑ Ingeno, Joseph (2018). Software Architect's Handbook. Packt Publishing. p. 175. ISBN 978-178862406-0.
- ↑ Stevens, Wayne P.; Myers, Glenford J.; Constantine, Larry LeRoy (June 1974). "Structured design". IBM Systems Journal. 13 (2): 115–139. doi:10.1147/sj.132.0115.
- ↑ Marsic, Ivan (2012). Software Engineering. Rutgers University.
- ↑ McConnell, Steve (June 2004) [1993]. Code Complete (2 ed.). pp. 168-171. ISBN 978-0-7356-1967-8.