सामंजस्य (कंप्यूटर विज्ञान)
कंप्यूटर प्रोग्रामिंग में, संसंजन उस 'डिग्री' को संदर्भित करता है जिस तक एक मॉड्यूल (प्रोग्रामिंग) के अंदर के तत्व एक साथ होते हैं।[1]एक अर्थ में, यह विधि (कंप्यूटर प्रोग्रामिंग) और कक्षा (कंप्यूटर प्रोग्रामिंग) के डेटा और उस वर्ग द्वारा प्रदान किए गए कुछ एकीकृत उद्देश्य या अवधारणा के बीच संबंधों की ताकत का एक उपाय है। दूसरे अर्थ में, यह वर्ग के तरीकों और स्वयं डेटा के बीच संबंध की ताकत का एक उपाय है।
संसंजन माप का एक स्तर है#सामान्य_पैमाने का माप प्रकार और इसे आमतौर पर "उच्च संसंजन" या "निम्न संसंजन" के रूप में वर्णित किया जाता है। उच्च सामंजस्य वाले मॉड्यूल बेहतर होते हैं, क्योंकि उच्च सामंजस्य सॉफ्टवेयर के कई वांछनीय लक्षणों से जुड़ा होता है, जिसमें रोबस्टनेस (कंप्यूटर विज्ञान), विश्वसनीयता, पुन: प्रयोज्यता और समझ शामिल है। इसके विपरीत, कम सामंजस्य अवांछनीय लक्षणों से जुड़ा हुआ है जैसे कि बनाए रखना, परीक्षण करना, पुन: उपयोग करना या यहां तक कि समझना मुश्किल है।
सामंजस्य को अक्सर युग्मन (कंप्यूटर विज्ञान), एक अलग अवधारणा के विपरीत माना जाता है। उच्च सामंजस्य अक्सर ढीले युग्मन से संबंधित होता है, और इसके विपरीत।[2]1960 के दशक के उत्तरार्ध में लैरी कॉन्स्टेंटाइन द्वारा युग्मन और सामंजस्य के सॉफ्टवेयर मीट्रिक ्स का आविष्कार स्ट्रक्चर्ड डिज़ाइन के हिस्से के रूप में किया गया था, जो रखरखाव और संशोधन लागत को कम करने वाली "अच्छी" प्रोग्रामिंग प्रथाओं की विशेषताओं पर आधारित था। संरचित डिजाइन, सामंजस्य और युग्मन लेख स्टीवंस, मायर्स एंड कॉन्सटेंटाइन (1974) में प्रकाशित किए गए थे।[3]और योरडॉन एंड कॉन्सटेंटाइन (1979) पुस्तक;[1]बाद के दो बाद में सॉफ्टवेयर इंजीनियरिंग में मानक शब्द बन गए।
उच्च सामंजस्य
This section does not cite any sources. (October 2014) (Learn how and when to remove this template message) |
वस्तु-उन्मुख प्रोग्रामिंग में, यदि एक वर्ग की सेवा करने वाली विधियाँ कई पहलुओं में समान होती हैं, तो उस वर्ग को उच्च सामंजस्य कहा जाता है।[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 }
- तार्किक सामंजस्य
- तार्किक सामंजस्य तब होता है जब एक मॉड्यूल के हिस्सों को समूहीकृत किया जाता है क्योंकि वे तार्किक रूप से एक ही काम करने के लिए वर्गीकृत होते हैं, भले ही वे स्वभाव से भिन्न हों (उदाहरण के लिए, सभी माउस और कीबोर्ड इनपुट हैंडलिंग रूटीन को समूहीकृत करना या सभी मॉडल, विचार, और बंडल करना) मॉडल-व्यू-नियंत्रक में अलग-अलग फ़ोल्डरों में नियंत्रक)।
- {{anchor|Temporal}टेम्पोरल सामंजस्य
- टेम्पोरल सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को संसाधित होने पर समूहीकृत किया जाता है - भागों को प्रोग्राम निष्पादन में एक विशेष समय पर संसाधित किया जाता है (उदाहरण के लिए, एक फ़ंक्शन जिसे एक अपवाद को पकड़ने के बाद बुलाया जाता है जो खुली फाइलों को बंद करता है, एक बनाता है त्रुटि लॉग, और उपयोगकर्ता को सूचित करता है)।
- प्रक्रियात्मक सामंजस्य
- प्रक्रियात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे हमेशा निष्पादन के एक निश्चित अनुक्रम का पालन करते हैं (उदाहरण के लिए, एक फ़ंक्शन जो फ़ाइल अनुमतियों की जांच करता है और फिर फ़ाइल खोलता है)।
- संचारात्मक/सूचनात्मक सामंजस्य
- संचारात्मक सामंजस्य तब होता है जब एक मॉड्यूल के हिस्सों को समूहीकृत किया जाता है क्योंकि वे एक ही डेटा पर काम करते हैं (उदाहरण के लिए, एक मॉड्यूल जो सूचना के एक ही रिकॉर्ड पर काम करता है)।
- {{anchor|Sequential}अनुक्रमिक सामंजस्य
- अनुक्रमिक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि एक भाग से आउटपुट असेंबली लाइन की तरह दूसरे हिस्से में इनपुट होता है (उदाहरण के लिए, एक फ़ंक्शन जो फ़ाइल से डेटा पढ़ता है और डेटा को संसाधित करता है)।
- कार्यात्मक सामंजस्य (सर्वश्रेष्ठ)
- कार्यात्मक सामंजस्य तब होता है जब मॉड्यूल के कुछ हिस्सों को समूहीकृत किया जाता है क्योंकि वे सभी मॉड्यूल के एक अच्छी तरह से परिभाषित कार्य में योगदान करते हैं (उदाहरण के लिए, एक्सएमएल स्ट्रिंग का लेक्सिकल विश्लेषण)। उदाहरण:
/* 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.