Loose coupling
કમ્પ્યુટિંગ અને સિસ્ટમ ડિઝાઇનમાં, ઢીલી રીતે જોડાયેલી સિસ્ટમ એ છે જેમાં ઘટકો એકબીજા સાથે નબળા રીતે સંકળાયેલા હોય છે (તોડી શકાય તેવા સંબંધો ધરાવે છે), અને આમ એક ઘટકમાં ફેરફારો અન્ય ઘટકના અસ્તિત્વ અથવા કામગીરીને ઓછામાં ઓછી અસર કરે છે. જેમાં તેના દરેક ઘટકો અન્ય અલગ ઘટકોની વ્યાખ્યાઓનું ઓછું અથવા કોઈ જ્ઞાન ધરાવતા નથી અથવા તેનો ઉપયોગ કરે છે. પેટા ક્ષેત્રોમાં વર્ગો, ઇન્ટરફેસો, ડેટા અને સેવાઓનું જોડાણ સામેલ છે. લૂઝ કપલિંગ એ ટાઈટ કપલિંગની વિરુદ્ધ છે. ફાયદા અને ગેરફાયદા ઢીલી રીતે જોડાયેલી પ્રણાલીમાં ઘટકોને વૈકલ્પિક અમલીકરણ સાથે બદલી શકાય છે જે સમાન સેવાઓ પ્રદાન કરે છે. ઢીલી રીતે જોડાયેલી સિસ્ટમમાં ઘટકો સમાન પ્લેટફોર્મ, ભાષા, ઓપરેટિંગ સિસ્ટમ અથવા બિલ્ડ એન્વાયર્નમેન્ટ માટે ઓછા મર્યાદિત હોય છે. જો સિસ્ટમો સમયસર અલગ થઈ જાય, તો વ્યવહારની અખંડિતતા પૂરી પાડવી પણ મુશ્કેલ છે; વધારાના સંકલન પ્રોટોકોલ જરૂરી છે. વિવિધ પ્રણાલીઓમાં ડેટા પ્રતિકૃતિ છૂટક જોડાણ (ઉપલબ્ધતામાં) પ્રદાન કરે છે, પરંતુ સુસંગતતા જાળવવામાં સમસ્યાઓ પેદા કરે છે (ડેટા સિંક્રોનાઇઝેશન). એકીકરણમાં વ્યાપક વિતરિત સિસ્ટમ ડિઝાઇનમાં લૂઝ કપલિંગ વ્યવહારોના ઉપયોગ, સંદેશ-લક્ષી મિડલવેર દ્વારા પ્રદાન કરવામાં આવેલી કતારો અને આંતરસંચાલનીયતાના ધોરણો દ્વારા પ્રાપ્ત થાય છે. ચાર પ્રકારની સ્વાયત્તતા, જે છૂટક જોડાણને પ્રોત્સાહન આપે છે, તે છેઃ સંદર્ભ સ્વાયત્તતા, સમય સ્વાયત્તતા, બંધારણ સ્વાયત્તતા અને મંચ સ્વાયત્તતા. લૂઝ કપલિંગ એ સર્વિસ-ઓરિએન્ટેડ આર્કિટેક્ચરમાં આર્કિટેક્ચરલ સિદ્ધાંત અને ડિઝાઇન લક્ષ્ય છે; લૂઝ કપલિંગના અગિયાર સ્વરૂપો અને તેમના ચુસ્ત કપલિંગ સમકક્ષો આમાં સૂચિબદ્ધ છેઃ મધ્યસ્થી દ્વારા ભૌતિક જોડાણો, અસિંક્રોનસ સંચાર શૈલી, ફક્ત ડેટા મોડેલમાં સરળ સામાન્ય પ્રકારો, નબળા પ્રકારની સિસ્ટમ, ડેટા-કેન્દ્રિત અને સ્વ-સમાવિષ્ટ સંદેશાઓ, પ્રક્રિયા તર્કનું વિતરિત નિયંત્રણ, ગતિશીલ બંધન (સેવા ગ્રાહકો અને પ્રદાતાઓનું), પ્લેટફોર્મ સ્વતંત્રતા, સિસ્ટમ-સ્તરના વ્યવહારોને બદલે વ્યવસાય-સ્તરનું વળતર, જુદા જુદા સમયે જમાવટ, સંસ્કરણમાં ગર્ભિત સુધારાઓ. એન્ટરપ્રાઇઝ સર્વિસ બસ (ઇ. એસ. બી.) મિડલવેરની શોધ બહુવિધ પરિમાણોમાં છૂટક જોડાણ હાંસલ કરવા માટે કરવામાં આવી હતી; જો કે, વધુ ઇજનેરી અને ખોટી સ્થિતિમાં ઇ. એસ. બી. પણ વિપરીત અસર કરી શકે છે અને અનિચ્છનીય ચુસ્ત જોડાણ અને કેન્દ્રિય સ્થાપત્ય હોટસ્પોટ બનાવી શકે છે. ઇવેન્ટ-સંચાલિત આર્કિટેક્ચરનો હેતુ છૂટક જોડાણને પ્રોત્સાહન આપવાનો પણ છે. જોડાણ ઘટાડવા માટેની પદ્ધતિઓ ઇન્ટરફેસના લૂઝ કપ્લિંગને પ્રમાણભૂત સ્વરૂપમાં (જેમ કે XML અથવા JSON) માહિતી પ્રકાશિત કરીને વધારી શકાય છે. પરિમાણોમાં પ્રમાણભૂત ડેટા પ્રકારોનો ઉપયોગ કરીને પ્રોગ્રામ ઘટકો વચ્ચે છૂટક જોડાણને વધારી શકાય છે. કસ્ટમાઇઝ્ડ ડેટા પ્રકારો અથવા ઑબ્જેક્ટ્સને પસાર કરવા માટે બંને ઘટકોને કસ્ટમ ડેટા વ્યાખ્યાનું જ્ઞાન હોવું જરૂરી છે. સેવામાં મુખ્ય ડેટામાં પસાર થતી માહિતીને ઘટાડીને સેવાઓના છૂટક જોડાણને વધારી શકાય છે. ઉદાહરણ તરીકે, જે સેવા પત્ર મોકલે છે તે ત્યારે સૌથી વધુ ફરીથી વાપરી શકાય છે જ્યારે ફક્ત ગ્રાહક ઓળખકર્તા પસાર થાય છે અને સેવામાં ગ્રાહકનું સરનામું મેળવવામાં આવે છે. આ સેવાઓને અલગ કરે છે કારણ કે સેવાઓને ચોક્કસ ક્રમમાં બોલાવવાની જરૂર નથી (દા. ત. ગ્રાહકનું સરનામું મેળવો, SendLetter). પ્રોગ્રામિંગમાં કપલિંગ એ સીધા જ્ઞાનની માત્રાનો ઉલ્લેખ કરે છે જે એક ઘટક બીજામાં ધરાવે છે. કમ્પ્યુટિંગમાં લૂઝ કપલિંગને એન્કેપ્સ્યુલેશન વિ. નોન-એન્કેપ્સ્યુલેશન તરીકે અર્થઘટન કરવામાં આવે છે. ચુસ્ત જોડાણનું ઉદાહરણ ત્યારે થાય છે જ્યારે આશ્રિત વર્ગમાં સીધા કોંક્રિટ વર્ગને નિર્દેશક હોય છે જે જરૂરી વર્તન પ્રદાન કરે છે. આશ્રિત વર્ગમાં ફેરફારની જરૂર વગર નિર્ભરતાને બદલી શકાતી નથી, અથવા તેની "સહી" બદલી શકાતી નથી. લૂઝ કપલિંગ ત્યારે થાય છે જ્યારે આશ્રિત વર્ગમાં માત્ર ઇન્ટરફેસ માટે નિર્દેશક હોય છે, જે પછી એક અથવા ઘણા નક્કર વર્ગો દ્વારા અમલમાં મૂકી શકાય છે. આને નિર્ભરતા વ્યુત્ક્રમ તરીકે ઓળખવામાં આવે છે. આશ્રિત વર્ગની નિર્ભરતા ઇન્ટરફેસ દ્વારા નિર્દિષ્ટ "કરાર" પર છે; પદ્ધતિઓ અને/અથવા ગુણધર્મોની વ્યાખ્યાયિત સૂચિ કે જે વર્ગોના અમલીકરણ માટે પ્રદાન કરવી આવશ્યક છે. કોઈપણ વર્ગ કે જે ઇન્ટરફેસનો અમલ કરે છે તે આમ વર્ગને બદલ્યા વિના આશ્રિત વર્ગની નિર્ભરતાને સંતોષી શકે છે. આ સોફ્ટવેર ડિઝાઇનમાં વિસ્તરણ માટે પરવાનગી આપે છે; ઇન્ટરફેસને અમલમાં મૂકતો નવો વર્ગ કેટલીક અથવા તમામ પરિસ્થિતિઓમાં વર્તમાન નિર્ભરતાને બદલવા માટે લખી શકાય છે, આશ્રિત વર્ગમાં ફેરફારની જરૂર વગર; નવા અને જૂના વર્ગોને મુક્તપણે અદલાબદલી કરી શકાય છે. મજબૂત જોડાણ આને મંજૂરી આપતું નથી. આ એક યુ. એમ. એલ. આકૃતિ છે જે આશ્રિત વર્ગ અને કોંક્રિટ વર્ગોના સમૂહ વચ્ચેના છૂટક જોડાણનું ઉદાહરણ દર્શાવે છે, જે જરૂરી વર્તણૂક પૂરી પાડે છેઃ સરખામણી માટે, આ આકૃતિ આશ્રિત વર્ગ અને પ્રદાતા વચ્ચે મજબૂત જોડાણ સાથે વૈકલ્પિક ડિઝાઇનને સમજાવે છેઃ અન્ય સ્વરૂપો કમ્પ્યુટર પ્રોગ્રામિંગ ભાષાઓ કે જે મુખ્ય મોડ્યુલ તરીકે કાર્યોની કલ્પના ધરાવે છે (કાર્યાત્મક પ્રોગ્રામિંગ જુઓ) અથવા પદાર્થો તરીકે કાર્યોને ઢીલી રીતે જોડાયેલા પ્રોગ્રામિંગના ઉત્તમ ઉદાહરણો પ્રદાન કરે છે. કાર્યાત્મક ભાષાઓમાં સાતત્ય, બંધ અથવા જનરેટરની પેટર્ન હોય છે. ફંક્શન પ્રોગ્રામિંગ ભાષાઓના ઉદાહરણો તરીકે ક્લોઝર અને લિસ્પ જુઓ. સ્મોલટૉક અને રૂબી જેવી ઓબ્જેક્ટ-ઓરિએન્ટેડ ભાષાઓમાં કોડ બ્લોક હોય છે, જ્યારે એફિલમાં એજન્ટ હોય છે. મૂળભૂત વિચાર એ છે કે કોઈપણ અન્ય સંલગ્ન ખ્યાલ (દા. ત. એક પદાર્થ તરીકે સમાવિષ્ટ) થી સ્વતંત્ર કાર્યને વાંધાજનક બનાવવું. બંધાયેલા પદાર્થના કોઈપણ સીધા જ્ઞાનમાંથી ઑબ્જેક્ટ કાર્યને અલગ કરવું). ઑબ્જેક્ટ્સ તરીકે કાર્યોની વધુ સમજ માટે પ્રથમ-વર્ગ કાર્ય જુઓ, જે પ્રથમ-વર્ગ કાર્યના એક સ્વરૂપ તરીકે લાયક ઠરે છે. તેથી, ઉદાહરણ તરીકે, ઓબ્જેક્ટ-ઓરિએન્ટેડ ભાષામાં, જ્યારે ઓબ્જેક્ટના ફંક્શનને ઓબ્જેક્ટ તરીકે સંદર્ભિત કરવામાં આવે છે (તેને તેના સંલગ્ન યજમાન ઓબ્જેક્ટનું કોઈ જ્ઞાન રાખવાથી મુક્ત કરે છે) ત્યારે નવા ફંક્શન ઓબ્જેક્ટને પસાર કરી શકાય છે, સંગ્રહિત કરી શકાય છે અને પછીથી કૉલ કરી શકાય છે. પ્રાપ્તકર્તા પદાર્થો (જેમને આ કાર્યાત્મક પદાર્થો આપવામાં આવે છે) સંલગ્ન યજમાન પદાર્થની કોઈ સીધી જાણકારી વિના તેમની પોતાની અનુકૂળતાએ સમાવિષ્ટ કાર્યને સુરક્ષિત રીતે ચલાવી શકે છે (કૉલ કરી શકે છે). આ રીતે, પ્રોગ્રામ સાંકળો અથવા કાર્યાત્મક પદાર્થોના જૂથોને ચલાવી શકે છે, જ્યારે સંલગ્ન યજમાન પદાર્થનો કોઈ સીધો સંદર્ભ રાખવાથી સુરક્ષિત રીતે અલગ થઈ શકે છે. ફોન નંબરો એક ઉત્તમ એનાલોગ છે અને આ ડીકપલિંગની માત્રાને સરળતાથી સમજાવી શકે છે. ઉદાહરણ તરીકેઃ અમુક સંસ્થા કોઈ ચોક્કસ કામ કરવા માટે ફોન કરવા માટે બીજાને ફોન નંબર પ્રદાન કરે છે. જ્યારે નંબર પર કૉલ કરવામાં આવે છે, ત્યારે કૉલિંગ એન્ટિટી અસરકારક રીતે કહે છે, "કૃપા કરીને મારા માટે આ કામ કરો". ડીકપલિંગ અથવા છૂટક જોડાણ તરત જ સ્પષ્ટ થાય છે. કૉલ કરવા માટે નંબર મેળવનાર સંસ્થાને નંબર ક્યાંથી આવ્યો તેની કોઈ જાણકારી ન હોઈ શકે (દા. ત. નંબરના સપ્લાયરનો સંદર્ભ). બીજી બાજુ, કોલ કરનારને તેઓ કોને કૉલ કરી રહ્યા છે, તેઓ ક્યાં છે અને કોલ મેળવનાર આંતરિક રીતે કેવી રીતે કાર્ય કરે છે તે જાણવાથી અલગ કરવામાં આવે છે. ઉદાહરણને એક પગલું આગળ વધારતા, કોલ કરનાર કોલ મેળવનારને કહી શકે છે, "મહેરબાની કરીને મારા માટે આ કામ કરો. જ્યારે તમારું કામ પૂરું થઈ જશે ત્યારે મને આ નંબર પર ફોન કરો. પ્રાપ્તકર્તાને આપવામાં આવતા 'નંબર' ને 'કૉલ-બેક' તરીકે ઓળખવામાં આવે છે. ફરીથી, આ કાર્યાત્મક પદાર્થની છૂટક જોડાણ અથવા વિચ્છેદિત પ્રકૃતિ સ્પષ્ટ છે. કોલ-બેક મેળવનાર શું અથવા કોને બોલાવવામાં આવી રહ્યું છે તેનાથી અજાણ હોય છે. તે માત્ર એટલું જ જાણે છે કે તે કૉલ કરી શકે છે અને ક્યારે કૉલ કરવો તે પોતે નક્કી કરે છે. વાસ્તવમાં, કૉલ-બેક તે વ્યક્તિ માટે પણ ન હોઈ શકે જેણે પ્રથમ સ્થાને કૉલ-બેક પ્રદાન કર્યો હતો. દિશાહિનતાનું આ સ્તર ફંક્શન ઓબ્જેક્ટ્સને ઢીલી રીતે જોડાયેલા પ્રોગ્રામ્સ પ્રાપ્ત કરવા માટે એક ઉત્તમ તકનીક બનાવે છે. ઢીલી રીતે જોડાયેલા ઘટકો વચ્ચેનો સંદેશાવ્યવહાર પદ્ધતિઓના પ્રકાર પર આધારિત હોઈ શકે છે, જેમ કે ઉલ્લેખિત અસિંક્રોનસ સંદેશાવ્યવહાર શૈલી અથવા સિંક્રોનસ સંદેશ પસાર કરવાની શૈલી માપન ડેટા તત્વ જોડાણ છૂટક જોડાણની માત્રાને ડેટા ઘટકોમાં ફેરફારોની સંખ્યાને ધ્યાનમાં રાખીને માપી શકાય છે જે મોકલવા અથવા પ્રાપ્ત કરવાની પ્રણાલીઓમાં થઈ શકે છે અને તે નક્કી કરી શકાય છે કે કમ્પ્યુટર હજી પણ યોગ્ય રીતે વાતચીત કરવાનું ચાલુ રાખશે કે નહીં. આ ફેરફારોમાં નીચેની વસ્તુઓનો સમાવેશ થાય છેઃ સંદેશાઓમાં નવા ડેટા ઘટકો ઉમેરવા ડેટા ઘટકોના ક્રમમાં ફેરફાર ડેટા ઘટકોના નામ બદલવા ડેટા ઘટકોનું માળખું બદલવું ડેટા ઘટકોને બાકાત રાખવા પણ જુઓ કેસ્કેડિંગ નિષ્ફળતા સુસંગતતા (કમ્પ્યુટર વિજ્ઞાન) સુસંગતતા (કમ્પ્યુટર પ્રોગ્રામિંગ) જોડાણ (કમ્પ્યુટર વિજ્ઞાન) એન્ટરપ્રાઇઝ સર્વિસ બસ એપ્લિકેશન પ્રોગ્રામિંગ ઇન્ટરફેસ લો ઓફ ડીમીટર સેપરેશન ઓફ કન્સર્ન સર્વિસ-ઓરિએન્ટેડ આર્કિટેક્ચર સ્પેસ-બેઝ્ડ આર્કિટેક્ચર (એસ. બી. એ.) એન્ટરપ્રાઇઝ સંદર્ભો એપ્લિકેશન એકીકરણ સર્વિસ-ઓરિએન્ટેડ (બિઝનેસ કમ્પ્યુટિંગ) પ્રોગ્રામિંગ સિદ્ધાંતો સોફ્ટવેર ગુણવત્તા