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

From Vigyanwiki
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) में प्रकाशित किए गए थे। '''योरडॉन और कॉन्सटेंटाइन (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>
;आकस्मिक सामंजस्य (सबसे खराब): संयोगात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को इच्छानुसार समूहीकृत किया जाता है; भागों के बीच एकमात्र संबंध यह है कि उन्हें एक साथ समूहीकृत किया गया है (उदाहरण के लिए, "उपयोगिताएँ" वर्ग)। उदाहरण: <syntaxhighlight>
/*
/*
Groups: The function definitions
Groups: The function definitions
Line 39: Line 39:
}
}
</syntaxhighlight>
</syntaxhighlight>
:: <वाक्यविन्यास हाइलाइट लैंग = सी>
'''/*
समूह: फलन परिभाषाएँ
भाग: प्रत्येक फलन पर शर्तें'''
*'''/'''
'''मॉड्यूल ए {'''
  '''/*
  आर (एक्स) = 5x + 3 का कार्यान्वयन
  इस तरह समूह कार्यों का कोई विशेष कारण नहीं है,
  इसलिए कहा जाता है कि मॉड्यूल में आकस्मिक सामंजस्य है।
  */
  आर (एक्स) = ए (एक्स) + बी (एक्स)
  ए (एक्स) = 2x + 1
  बी (एक्स) = 3x + 2'''
'''}
</वाक्यविन्यास हाइलाइट>'''


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


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


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


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


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


;कार्यात्मक सामंजस्य (सर्वश्रेष्ठ): कार्यात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सभी मॉड्यूल के अच्छी तरह से परिभाषित कार्य में योगदान करते हैं (उदाहरण के लिए, एक्सएमएल स्ट्रिंग का लेक्सिकल विश्लेषण)उदाहरण:<syntaxhighlight>
;कार्यात्मक सामंजस्य (सर्वश्रेष्ठ): कार्यात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सभी मॉड्यूल के अच्छी तरह से परिभाषित कार्य (उदाहरण के लिए, एक्सएमएल स्ट्रिंग का लेक्सिकल विश्लेषण) में योगदान करते हैं। उदाहरण:<syntaxhighlight>
/*
/*
Groups: The function definitions
Groups: The function definitions
Line 92: Line 76:
}
}
</syntaxhighlight>
</syntaxhighlight>
:: '''<वाक्यविन्यास हाइलाइट लैंग = सी>'''
;पूर्ण सामंजस्य (परमाणु): उदाहरणː <syntaxhighlight>
'''/*
समूह: फलन परिभाषाएँ
भाग: प्रत्येक फलन पर शर्तें'''
*'''/'''
'''मॉड्यूल ए {'''
  '''/*
  अंकगणितीय परिचालनों का कार्यान्वयन
  कहा जाता है कि इस मॉड्यूल में कार्यात्मक सामंजस्य है क्योंकि
  सरल अंकगणितीय परिचालनों को समूहित करने का इरादा है
  इस पर।
  */
  ए (एक्स, वाई) = एक्स + वाई
  बी (एक्स, वाई) = एक्स * वाई'''
'''}'''
 
'''मॉड्यूल बी {'''
  '''/*
  मॉड्यूल बी: कार्यान्वयन r(x) = 5x + 3
  इस मॉड्यूल को परमाणु सामंजस्य कहा जा सकता है। पूरा
  प्रणाली (भागों के रूप में मॉड्यूल ए और बी के साथ) को कार्यात्मक भी कहा जा सकता है
  सामंजस्य, क्योंकि इसके दोनों भागों के विशिष्ट अलग-अलग उद्देश्य हैं।
  */
  आर (एक्स) = [मॉड्यूल ए]। ए ([मॉड्यूल ए]। बी (5, एक्स), 3)'''
'''}
</वाक्यविन्यास हाइलाइट>'''
 
;पूर्ण सामंजस्य (परमाणु): उदाहरणː: <syntaxhighlight>
/*
/*
Groups: The function definitions
Groups: The function definitions
Line 132: Line 89:
}
}
</syntaxhighlight>
</syntaxhighlight>
:: <वाक्यविन्यास हाइलाइट लैंग = सी>
चूंकि सामंजस्य रैंकिंग प्रकार का पैमाना है, रैंक उत्तम सामंजस्य की स्थिर प्रगति का संकेत नहीं देते हैं। लैरी कॉन्सटेंटाइन, [[एडवर्ड योरडन]] और [[स्टीव मैककोनेल]] सहित विभिन्न लोगों द्वारा अध्ययन<ref name="McConnell" /> संकेत मिलता है कि पहले दो प्रकार के सामंजस्य हीन हैं; संचार और अनुक्रमिक सामंजस्य बहुत अच्छा है; और कार्यात्मक सामंजस्य श्रेष्ठ है।
'''/*
समूह: फलन परिभाषाएँ
भाग: प्रत्येक फलन पर शर्तें'''
*'''/'''
'''मॉड्यूल ए {'''
  '''/*
  आर (एक्स) = 2x + 1 + 3x + 2 का कार्यान्वयन
  इसे पूर्ण सामंजस्य कहा जाता है क्योंकि इसे इससे अधिक कम नहीं किया जा सकता है।
  */
  आर (एक्स) = 5x + 3'''
'''}
</वाक्यविन्यास हाइलाइट>'''
 
चूंकि सामंजस्य रैंकिंग प्रकार का पैमाना है, रैंक उत्तम सामंजस्य की स्थिर प्रगति का संकेत नहीं देते हैं। लैरी कॉन्सटेंटाइन, [[एडवर्ड योरडन]] और [[स्टीव मैककोनेल]] सहित विभिन्न लोगों द्वारा अध्ययन<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. 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.
  2. Ingeno, Joseph (2018). Software Architect's Handbook. Packt Publishing. p. 175. ISBN 978-178862406-0.
  3. 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.
  4. Marsic, Ivan (2012). Software Engineering. Rutgers University.
  5. McConnell, Steve (June 2004) [1993]. Code Complete (2 ed.). pp. 168-171. ISBN 978-0-7356-1967-8.


बाहरी संबंध