Coupling (computer programming)
સોફ્ટવેર એન્જિનિયરિંગમાં, કપલિંગ એ સોફ્ટવેર મોડ્યુલો વચ્ચે પરસ્પર નિર્ભરતાનું પ્રમાણ છે; બે દિનચર્યાઓ અથવા મોડ્યુલો કેટલા નજીકથી જોડાયેલા છે તેનું માપ; મોડ્યુલો વચ્ચેના સંબંધોની તાકાત. જોડણી સામાન્ય રીતે સંયોગથી વિપરીત હોય છે. નિમ્ન જોડાણ ઘણીવાર ઉચ્ચ સુસંગતતા સાથે સંકળાયેલું હોય છે, અને તેનાથી ઊલટું. નીચા જોડાણને ઘણીવાર સુવ્યવસ્થિત કમ્પ્યુટર સિસ્ટમ અને સારી ડિઝાઇનની નિશાની માનવામાં આવે છે, અને જ્યારે ઉચ્ચ સુસંગતતા સાથે જોડવામાં આવે છે, ત્યારે તે ઉચ્ચ વાંચનીયતા અને જાળવણીક્ષમતાના સામાન્ય લક્ષ્યોને ટેકો આપે છે. કપલિંગ અને કોહેઝનના સોફ્ટવેર ગુણવત્તા મેટ્રિક્સની શોધ લેરી કોન્સ્ટેન્ટાઇન દ્વારા 1960 ના દાયકાના અંતમાં માળખાગત ડિઝાઇનના ભાગ રૂપે કરવામાં આવી હતી, જે જાળવણી અને ફેરફાર ખર્ચમાં ઘટાડો કરતી "સારી" પ્રોગ્રામિંગ પ્રથાઓની લાક્ષણિકતાઓ પર આધારિત હતી. સ્ટીવન્સ, માયર્સ એન્ડ કોન્સ્ટેન્ટાઇન (1974) અને પુસ્તક યોરડન એન્ડ કોન્સ્ટેન્ટાઇન (1979) માં સંકલન અને જોડાણ સહિત માળખાગત ડિઝાઇન પ્રકાશિત કરવામાં આવી હતી અને બાદમાં તે પ્રમાણભૂત શરતો બની હતી. કપલિંગના પ્રકારો "નીચા" ("છૂટક" અને "નબળા" પણ) અથવા "ઉચ્ચ" ("ચુસ્ત" અને "મજબૂત" પણ) હોઈ શકે છે. ઉચ્ચતમથી સૌથી નીચલા જોડાણના ક્રમમાં જોડાણના કેટલાક પ્રકારો નીચે મુજબ છેઃ પ્રક્રિયાગત પ્રોગ્રામિંગ અહીં એક મોડ્યુલ કોઈપણ પ્રકારની સબરૂટિનનો સંદર્ભ આપે છે, એટલે કે. એક અથવા વધુ નિવેદનોનો સમૂહ જેનું નામ હોય અને પ્રાધાન્યમાં તેના પોતાના ચલ નામોનો સમૂહ હોય. કન્ટેન્ટ કપલિંગ (ઉચ્ચ) કન્ટેન્ટ કપલિંગ ત્યારે થાય છે જ્યારે એક મોડ્યુલ બીજા મોડ્યુલના કોડનો ઉપયોગ કરે છે, ઉદાહરણ તરીકે શાખા. આ માહિતી છુપાવવાનું ઉલ્લંઘન કરે છે-મૂળભૂત સોફ્ટવેર ડિઝાઇન ખ્યાલ. સામાન્ય જોડાણ સામાન્ય જોડાણ ત્યારે થાય છે જ્યારે ઘણા મોડ્યુલો પાસે સમાન વૈશ્વિક ડેટાની ઍક્સેસ હોય. પરંતુ જ્યારે ફેરફારો કરવામાં આવે ત્યારે તે અનિયંત્રિત ભૂલ પ્રસાર અને અણધાર્યા આડઅસરો તરફ દોરી શકે છે. બાહ્ય જોડાણ ત્યારે થાય છે જ્યારે બે મોડ્યુલો બાહ્ય રીતે લાદવામાં આવેલ ડેટા ફોર્મેટ, સંચાર પ્રોટોકોલ અથવા ઉપકરણ ઇન્ટરફેસને શેર કરે છે. આ મૂળભૂત રીતે બાહ્ય સાધનો અને ઉપકરણો સાથેના સંચાર સાથે સંબંધિત છે. કંટ્રોલ કપલિંગ એ એક મોડ્યુલ છે જે બીજાના પ્રવાહને નિયંત્રિત કરે છે, તેને શું કરવું તેની માહિતી પસાર કરીને (દા. ત., શું કરવું તે અંગેનો ધ્વજ પસાર કરીને). સ્ટેમ્પ કપલિંગ (ડેટા-સ્ટ્રક્ચર્ડ કપલિંગ) સ્ટેમ્પ કપલિંગ ત્યારે થાય છે જ્યારે મોડ્યુલો સંયુક્ત ડેટા સ્ટ્રક્ચરને શેર કરે છે અને તેના માત્ર ભાગોનો ઉપયોગ કરે છે, સંભવતઃ વિવિધ ભાગો (દા. ત., સંપૂર્ણ રેકોર્ડને ફંક્શનમાં પસાર કરે છે જેને તેના માત્ર એક ક્ષેત્રની જરૂર હોય છે). આ પરિસ્થિતિમાં, મોડ્યુલને જરૂર ન હોય તેવા ક્ષેત્રમાં ફેરફાર મોડ્યુલ રેકોર્ડ વાંચવાની રીતને બદલવા તરફ દોરી શકે છે. ડેટા કપલિંગ ત્યારે થાય છે જ્યારે મોડ્યુલો ડેટા શેર કરે છે, ઉદાહરણ તરીકે, પરિમાણો. દરેક ડેટમ એક પ્રાથમિક ભાગ છે, અને આ એકમાત્ર વહેંચાયેલ ડેટા છે (દા. ત., વર્ગમૂળની ગણતરી કરતા કાર્યને પૂર્ણાંક પસાર કરવો). ઓબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ સબક્લાસ કપલિંગ બાળક અને તેના માતાપિતા વચ્ચેના સંબંધનું વર્ણન કરે છે. બાળક તેના માતાપિતા સાથે જોડાયેલું છે, પરંતુ માતાપિતા બાળક સાથે જોડાયેલા નથી. ટેમ્પોરલ કપલિંગ તે ત્યારે થાય છે જ્યારે બે ક્રિયાઓ એક મોડ્યુલમાં એકસાથે જોડવામાં આવે છે કારણ કે તે એક જ સમયે થાય છે. તાજેતરના કાર્યમાં વિવિધ અન્ય જોડાણ વિભાવનાઓની તપાસ કરવામાં આવી છે અને વ્યવહારમાં ઉપયોગમાં લેવાતા વિવિધ મોડ્યુલરાઇઝેશન સિદ્ધાંતો માટે સૂચકાંકો તરીકે તેનો ઉપયોગ કરવામાં આવે છે. ડાયનેમિક કપલિંગ આ પ્રકારના કપલિંગને વ્યાખ્યાયિત કરવા અને માપવાનો ધ્યેય સોફ્ટવેર સિસ્ટમનું રન-ટાઇમ મૂલ્યાંકન પ્રદાન કરવાનો છે. એવી દલીલ કરવામાં આવી છે કે ગતિશીલ બંધન અથવા વારસાના સઘન ઉપયોગ સાથે વ્યવહાર કરતી વખતે સ્થિર જોડાણ મેટ્રિક્સ ચોકસાઇ ગુમાવે છે. આ મુદ્દાને ઉકેલવાના પ્રયાસમાં ગતિશીલ જોડાણના પગલાંને ધ્યાનમાં લેવામાં આવ્યા છે. સિમેન્ટીક કપલિંગ આ પ્રકારનું કપલિંગ મેટ્રિક, ઉદાહરણ તરીકે, ટિપ્પણીઓ અને ઓળખકર્તાઓનો ઉપયોગ કરીને અને સુપ્ત સિમેન્ટીક અનુક્રમણિકા (એલ. એસ. આઈ.) જેવી તકનીકો પર આધાર રાખીને સોફ્ટવેર એકમો વચ્ચેની વૈચારિક સમાનતાને ધ્યાનમાં લે છે. લોજિકલ કપલિંગ લોજિકલ કપલિંગ (અથવા ઇવોલ્યુશનરી કપલિંગ અથવા ચેન્જ કપલિંગ) વિશ્લેષણ મોડ્યુલો અથવા વર્ગો વચ્ચે પરિવર્તનની પેટર્ન શોધવા માટે સોફ્ટવેર સિસ્ટમના પ્રકાશન ઇતિહાસનો ઉપયોગ કરે છેઃ દા. ત., અસ્તિત્વ કે જે એકસાથે બદલાઇ શકે છે અથવા ફેરફારોની શ્રેણી (વર્ગ A માં ફેરફાર હંમેશા વર્ગ B માં ફેરફાર દ્વારા અનુસરવામાં આવે છે). ચુસ્ત જોડાણના ગેરફાયદા ચુસ્ત જોડાણ પ્રણાલીઓ નીચેની વિકાસલક્ષી લાક્ષણિકતાઓ પ્રદર્શિત કરે છે, જેને ઘણીવાર ગેરફાયદા તરીકે જોવામાં આવે છેઃ એક મોડ્યુલમાં ફેરફાર સામાન્ય રીતે અન્ય મોડ્યુલમાં ફેરફારોની લહેર અસરને દબાણ કરે છે. આંતર-મોડ્યુલ નિર્ભરતામાં વધારો થવાને કારણે મોડ્યુલોની એસેમ્બલી માટે વધુ પ્રયત્નો અને/અથવા સમયની જરૂર પડી શકે છે. ચોક્કસ મોડ્યુલનો ફરીથી ઉપયોગ કરવો અને/અથવા પરીક્ષણ કરવું મુશ્કેલ હોઈ શકે છે કારણ કે આશ્રિત મોડ્યુલો શામેલ હોવા આવશ્યક છે. પ્રદર્શનના મુદ્દાઓ ભલે ઢીલા અથવા ચુસ્ત રીતે જોડાયેલા હોય, સંદેશ અને પરિમાણ નિર્માણ, પ્રસારણ, અનુવાદ (દા. ત.) દ્વારા પ્રણાલીની કામગીરીમાં ઘણીવાર ઘટાડો થાય છે. માર્શલિંગ) અને સંદેશનું અર્થઘટન (જે સ્ટ્રિંગ, એરે અથવા ડેટા સ્ટ્રક્ચરનો સંદર્ભ હોઈ શકે છે), જેમાં એસ. ઓ. એ. પી. સંદેશ જેવા જટિલ સંદેશ બનાવવા કરતાં ઓછા ઓવરહેડની જરૂર પડે છે. લાંબા સંદેશાઓને ઉત્પન્ન કરવા માટે વધુ CPU અને મેમરીની જરૂર પડે છે. રનટાઇમ પ્રદર્શનને શ્રેષ્ઠ બનાવવા માટે, સંદેશની લંબાઈ ઘટાડવી આવશ્યક છે અને સંદેશનો અર્થ મહત્તમ હોવો આવશ્યક છે. મેસેજ ટ્રાન્સમિશન ઓવરહેડ અને પરફોર્મન્સ સંદેશને તેનો સંપૂર્ણ અર્થ જાળવી રાખવા માટે સંપૂર્ણ રીતે પ્રસારિત કરવો આવશ્યક હોવાથી, મેસેજ ટ્રાન્સમિશનને ઓપ્ટિમાઇઝ કરવું આવશ્યક છે. લાંબા સંદેશાઓને પ્રસારિત કરવા અને પ્રાપ્ત કરવા માટે વધુ CPU અને મેમરીની જરૂર પડે છે. ઉપરાંત, જ્યારે જરૂરી હોય ત્યારે, પ્રાપ્તકર્તાઓએ તેને સંપૂર્ણપણે પ્રાપ્ત કરવા માટે સંદેશને તેની મૂળ સ્થિતિમાં ફરીથી ભેગા કરવો આવશ્યક છે. તેથી, રનટાઇમ પ્રદર્શનને શ્રેષ્ઠ બનાવવા માટે, સંદેશની લંબાઈ ઘટાડવી આવશ્યક છે અને સંદેશનો અર્થ મહત્તમ હોવો આવશ્યક છે. સંદેશ અનુવાદ ઓવરહેડ અને પ્રદર્શન સંદેશ પ્રોટોકોલ અને સંદેશાઓમાં ઘણીવાર વધારાની માહિતી (એટલે કે પેકેટ, માળખું, વ્યાખ્યા અને ભાષાની માહિતી) હોય છે. તેથી, પ્રાપ્તકર્તાએ ઘણીવાર વધારાના અક્ષરો અને માળખાની માહિતીને દૂર કરીને અને/અથવા મૂલ્યોને એક પ્રકારમાંથી બીજા પ્રકારમાં રૂપાંતરિત કરીને સંદેશને વધુ શુદ્ધ સ્વરૂપમાં અનુવાદિત કરવાની જરૂર પડે છે. કોઈપણ પ્રકારનું ભાષાંતર CPU અને/અથવા મેમરી ઓવરહેડમાં વધારો કરે છે. રનટાઇમ પ્રદર્શનને શ્રેષ્ઠ બનાવવા માટે, સંદેશ ફોર્મ અને સામગ્રીને તેનો અર્થ વધારવા અને અનુવાદ ઘટાડવા માટે ઘટાડવી અને શુદ્ધ કરવી આવશ્યક છે. સંદેશ અર્થઘટન ઓવરહેડ અને પ્રદર્શન તમામ સંદેશાઓનું અર્થઘટન પ્રાપ્તકર્તા દ્વારા થવું આવશ્યક છે. પૂર્ણાંકો જેવા સરળ સંદેશાઓને અર્થઘટન કરવા માટે વધારાની પ્રક્રિયાની જરૂર ન પડી શકે. જો કે, એસ. ઓ. એ. પી. સંદેશાઓ જેવા જટિલ સંદેશાઓને ઇચ્છિત અર્થો દર્શાવવા માટે પાર્સર અને સ્ટ્રિંગ ટ્રાન્સફોર્મરની જરૂર પડે છે. રનટાઇમ પ્રદર્શનને શ્રેષ્ઠ બનાવવા માટે, ઓવરહેડ અર્થઘટનને ઓછું કરવા માટે સંદેશાને શુદ્ધ અને ઘટાડવો આવશ્યક છે. ઉકેલો કપલિંગ ઘટાડવાનો એક અભિગમ કાર્યાત્મક ડિઝાઇન છે, જે કાર્યક્ષમતા સાથે મોડ્યુલોની જવાબદારીઓને મર્યાદિત કરવા માંગે છે. બે વર્ગો A અને B વચ્ચે જોડાણ વધે છે જોઃ A પાસે એક લક્ષણ છે જે (પ્રકાર) B નો સંદર્ભ આપે છે. ઑબ્જેક્ટ B ની સેવાઓ પર કૉલ કરો. એ પાસે એક પદ્ધતિ છે જે બી (વળતર પ્રકાર અથવા પરિમાણ દ્વારા) નો સંદર્ભ આપે છે. એ એ વર્ગ બી (અથવા સાધનો) નો પેટા વર્ગ છે. લો કપલિંગ એ એવા સંબંધનો ઉલ્લેખ કરે છે જેમાં એક મોડ્યુલ સરળ અને સ્થિર ઇન્ટરફેસ દ્વારા બીજા મોડ્યુલ સાથે ક્રિયાપ્રતિક્રિયા કરે છે અને અન્ય મોડ્યુલના આંતરિક અમલીકરણ સાથે સંબંધિત હોવાની જરૂર નથી (માહિતી છુપાવી જુઓ). કોર્બા અથવા કોમ જેવી પ્રણાલીઓ વસ્તુઓને અન્ય વસ્તુના અમલીકરણ વિશે કંઇ જાણ્યા વિના એકબીજા સાથે વાતચીત કરવાની મંજૂરી આપે છે. આ બંને પ્રણાલીઓ વસ્તુઓને અન્ય ભાષાઓમાં લખેલી વસ્તુઓ સાથે વાતચીત કરવાની પણ મંજૂરી આપે છે. કપલિંગ વિરુદ્ધ કોહેઝન કપલિંગ અને કોહેઝન એ એવા શબ્દો છે જે ઘણી વાર એક સાથે આવે છે. કપલિંગ એ મોડ્યુલો વચ્ચેની પરસ્પર નિર્ભરતાનો સંદર્ભ આપે છે, જ્યારે કોહેઝન એ વર્ણવે છે કે એક મોડ્યુલમાં કાર્યો કેટલા સંબંધિત છે. ઓછી સુસંગતતા સૂચવે છે કે આપેલ મોડ્યુલ એવા કાર્યો કરે છે જે એકબીજા સાથે ખૂબ સંબંધિત નથી અને તેથી મોડ્યુલ મોટું થતાં સમસ્યાઓ ઊભી કરી શકે છે. સોફ્ટવેર એન્જિનિયરિંગમાં મોડ્યુલ કપલિંગ કપલિંગ આ ખ્યાલ સાથે સંકળાયેલ મેટ્રિક્સના સંસ્કરણનું વર્ણન કરે છે. ડેટા અને કંટ્રોલ ફ્લો કપલિંગ માટેઃ ડીઆઈઃ ઇનપુટ ડેટા પરિમાણોની સંખ્યા સીઆઈઃ ઇનપુટ કંટ્રોલ પરિમાણોની સંખ્યા કરે છેઃ આઉટપુટ ડેટા પરિમાણોની સંખ્યા કોઃ આઉટપુટ કંટ્રોલ પરિમાણોની સંખ્યા વૈશ્વિક કપલિંગ માટેઃ જીડીઃ ડેટા જીસી તરીકે ઉપયોગમાં લેવાતા વૈશ્વિક ચલોની સંખ્યાઃ નિયંત્રણ તરીકે ઉપયોગમાં લેવાતા વૈશ્વિક ચલોની સંખ્યા પર્યાવરણીય કપલિંગ માટેઃ ડબલ્યુઃ (ફેન-આઉટ) આર તરીકે ઓળખાતા મોડ્યુલોની સંખ્યાઃ વિચારણા હેઠળના મોડ્યુલને કૉલ કરતા મોડ્યુલોની સંખ્યા (ફેન-ઇન) કપલિંગ (સી) મૂલ્યને મોટું બનાવે છે. જો કોઈ મોડ્યુલમાં 5 ઇનપુટ અને આઉટપુટ ડેટા પરિમાણો હોય, સમાન સંખ્યામાં નિયંત્રણ પરિમાણો હોય અને 3ના ફેન-ઇન અને 4ના ફેન-આઉટ સાથે વૈશ્વિક ડેટાની 10 વસ્તુઓને એક્સેસ કરે, તો કોહેઝન (કોમ્પ્યુટર સાયન્સ) કોનેસન્સ (કોમ્પ્યુટર સાયન્સ) કપલિંગ (ફિઝિક્સ) ડેડ કોડ એલિમિનેશન ડિપેન્ડન્સી હેલ એફેરન્ટ કપલિંગ ઇન્વર્ઝન ઓફ કંટ્રોલ લિસ્ટ ઓફ ઓબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ ટર્મ્સ લૂઝ કપલિંગ મેક (સોફ્ટવેર) સ્ટેટિક કોડ એનાલિસિસ સંદર્ભો વધુ વાંચન પ્રોગ્રામિંગ સિદ્ધાંતો ઓબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ આર્કિટેક્ચર સોફ્ટવેર મેટ્રિક્સ