Loose coupling
کمپیوٹنگ اور سسٹمز ڈیزائن میں، ایک ڈھیلا جوڑا ہوا نظام وہ ہوتا ہے جس میں اجزاء ایک دوسرے کے ساتھ کمزور طور پر وابستہ ہوتے ہیں (ٹوٹنے کے قابل تعلقات ہوتے ہیں)، اور اس طرح ایک جزو میں ہونے والی تبدیلیاں دوسرے جزو کے وجود یا کارکردگی کو کم سے کم متاثر کرتی ہیں۔ جس میں اس کے ہر جزو کو دوسرے الگ الگ اجزاء کی تعریفوں کا بہت کم یا کوئی علم نہیں ہے، یا اس کا استعمال کرتا ہے۔ ذیلی علاقوں میں کلاسز، انٹرفیسز، ڈیٹا اور خدمات کا جوڑا شامل ہے۔ ڈھیلا جوڑا تنگ جوڑے کے برعکس ہے۔ فوائد اور نقصانات ڈھیلے جوڑے والے نظام میں اجزاء کو متبادل نفاذ کے ساتھ تبدیل کیا جا سکتا ہے جو وہی خدمات فراہم کرتے ہیں۔ ڈھیلے جوڑے والے نظام میں اجزاء ایک ہی پلیٹ فارم، زبان، آپریٹنگ سسٹم، یا تعمیراتی ماحول تک کم محدود ہوتے ہیں۔ اگر نظام کو وقت کے ساتھ منقطع کر دیا جاتا ہے، تو لین دین کی سالمیت فراہم کرنا بھی مشکل ہے ؛ اضافی کوآرڈینیشن پروٹوکول کی ضرورت ہے۔ مختلف نظاموں میں ڈیٹا کی نقل ڈھیلی جوڑی (دستیابی میں) فراہم کرتی ہے، لیکن مستقل مزاجی (ڈیٹا سنکرونائزیشن) کو برقرار رکھنے میں مسائل پیدا کرتی ہے۔ انضمام میں وسیع تر تقسیم شدہ نظام کے ڈیزائن میں ڈھیلے جوڑے کو لین دین، پیغام پر مبنی مڈل ویئر کے ذریعہ فراہم کردہ قطاریں، اور انٹرآپریبلٹی معیارات کے استعمال سے حاصل کیا جاتا ہے۔ خود مختاری کی چار قسمیں، جو ڈھیلے جوڑے کو فروغ دیتی ہیں، یہ ہیں: حوالہ خود مختاری، وقت کی خود مختاری، فارمیٹ خود مختاری، اور پلیٹ فارم کی خود مختاری۔ ڈھیلے جوڑے خدمت پر مبنی آرکیٹیکچرز میں ایک آرکیٹیکچرل اصول اور ڈیزائن کا ہدف ہے۔ ڈھیلے جوڑے کی گیارہ شکلیں اور ان کے تنگ جوڑے کے ہم منصبوں کو درج کیا گیا ہے: ثالث کے ذریعے جسمانی کنکشن، غیر متزلزل مواصلاتی انداز، صرف ڈیٹا ماڈل میں سادہ عام اقسام، کمزور قسم کا نظام، ڈیٹا پر مرکوز اور خود مختار پیغامات، پروسیس منطق کا تقسیم شدہ کنٹرول، متحرک بائنڈنگ (سروس صارفین اور فراہم کنندگان کا)، پلیٹ فارم کی آزادی، سسٹم کی سطح کے لین دین کے بجائے کاروباری سطح کا معاوضہ، مختلف اوقات میں تعیناتی، ورژننگ میں مضمر اپ گریڈ۔ انٹرپرائز سروس بس (ای ایس بی) مڈل ویئر کو متعدد جہتوں میں ڈھیلے جوڑے کو حاصل کرنے کے لیے ایجاد کیا گیا تھا۔ تاہم، زیادہ انجینئرنگ اور غلط پوزیشن والے ای ایس بی بھی اس کے برعکس اثر ڈال سکتے ہیں اور ناپسندیدہ تنگ جوڑے اور ایک مرکزی آرکیٹیکچرل ہاٹ اسپاٹ تشکیل دے سکتے ہیں۔ ایونٹ پر مبنی فن تعمیر کا مقصد ڈھیلے جوڑے کو فروغ دینا بھی ہے۔ جوڑے کو کم کرنے کے طریقے انٹرفیس کے ڈھیلے جوڑے کو معیاری شکل (جیسے ایکس ایم ایل یا جے ایس او این) میں ڈیٹا شائع کرکے بڑھایا جا سکتا ہے۔ پروگرام کے اجزاء کے درمیان ڈھیلے جوڑے کو پیرامیٹرز میں معیاری ڈیٹا کی اقسام کا استعمال کرکے بڑھایا جا سکتا ہے۔ حسب ضرورت ڈیٹا کی اقسام یا اشیاء کو پاس کرنے کے لیے دونوں اجزاء کو حسب ضرورت ڈیٹا کی تعریف کا علم ہونا ضروری ہے۔ سروس میں کلیدی ڈیٹا کو منتقل کی جانے والی معلومات کو کم کرکے سروسز کے ڈھیلے جوڑے کو بڑھایا جا سکتا ہے۔ مثال کے طور پر، ایک سروس جو خط بھیجتی ہے وہ سب سے زیادہ دوبارہ قابل استعمال ہوتی ہے جب صرف کسٹمر شناخت کنندہ پاس کیا جاتا ہے اور سروس کے اندر کسٹمر کا پتہ حاصل کیا جاتا ہے۔ اس سے خدمات منقطع ہو جاتی ہیں کیونکہ خدمات کو کسی مخصوص ترتیب میں کال کرنے کی ضرورت نہیں ہوتی (جیسے۔ GetCustomerAdress، SendLetter)۔ پروگرامنگ میں جوڑے سے مراد براہ راست علم کی ڈگری ہے جو ایک جزو کے پاس دوسرے کے بارے میں ہے۔ کمپیوٹنگ میں ڈھیلے جوڑے کی تشریح انکوپیسولیشن بمقابلہ نان انکوپیسولیشن کے طور پر کی جاتی ہے۔ تنگ جوڑے کی ایک مثال اس وقت ہوتی ہے جب ایک منحصر کلاس میں براہ راست کنکریٹ کلاس کا پوائنٹر ہوتا ہے جو مطلوبہ طرز عمل فراہم کرتا ہے۔ انحصار کو منحصر طبقے میں تبدیلی کی ضرورت کے بغیر تبدیل نہیں کیا جا سکتا، یا اس کے "دستخط" کو تبدیل نہیں کیا جا سکتا۔ ڈھیلا جوڑا اس وقت ہوتا ہے جب منحصر کلاس میں صرف ایک انٹرفیس کا پوائنٹر ہوتا ہے، جسے پھر ایک یا کئی ٹھوس کلاسوں کے ذریعے لاگو کیا جا سکتا ہے۔ اسے انحصار الٹ جانا جاتا ہے۔ منحصر طبقے کا انحصار انٹرفیس کے ذریعہ متعین کردہ "معاہدے" پر ہے۔ طریقوں اور/یا خصوصیات کی ایک متعین فہرست جو کلاسوں کو نافذ کرنے کے لیے فراہم کرنا ضروری ہے۔ کوئی بھی کلاس جو انٹرفیس کو لاگو کرتی ہے اس طرح کلاس کو تبدیل کیے بغیر ایک منحصر طبقے کے انحصار کو پورا کر سکتی ہے۔ یہ سافٹ ویئر ڈیزائن میں توسیع کی اجازت دیتا ہے ؛ ایک انٹرفیس کو نافذ کرنے والی ایک نئی کلاس کو کچھ یا تمام حالات میں موجودہ انحصار کو تبدیل کرنے کے لیے لکھا جا سکتا ہے، بغیر منحصر طبقے میں تبدیلی کی ضرورت کے ؛ نئی اور پرانی کلاسوں کو آزادانہ طور پر تبدیل کیا جا سکتا ہے۔ مضبوط جوڑی اس کی اجازت نہیں دیتی ہے۔ یہ ایک یو ایم ایل خاکہ ہے جو ایک منحصر طبقے اور ٹھوس کلاسوں کے ایک سیٹ کے درمیان ڈھیلے جوڑے کی مثال پیش کرتا ہے، جو مطلوبہ طرز عمل فراہم کرتا ہے: موازنہ کے لیے، یہ خاکہ منحصر طبقے اور فراہم کنندہ کے درمیان مضبوط جوڑے کے ساتھ متبادل ڈیزائن کی وضاحت کرتا ہے: دیگر شکلیں کمپیوٹر پروگرامنگ زبانیں جن میں بنیادی ماڈیول کے طور پر دونوں افعال کے تصورات ہوتے ہیں (فنکشنل پروگرامنگ دیکھیں) یا اشیاء کے طور پر افعال ڈھیلے جوڑے پروگرامنگ کی بہترین مثالیں فراہم کرتے ہیں۔ فنکشنل زبانوں میں تسلسل، بندش، یا جنریٹر کے نمونے ہوتے ہیں۔ فنکشن پروگرامنگ زبانوں کی مثالوں کے طور پر کلوجر اور لیسپ دیکھیں۔ سمال ٹاک اور روبی جیسی آبجیکٹ پر مبنی زبانوں میں کوڈ بلاکس ہوتے ہیں، جبکہ ایفل میں ایجنٹ ہوتے ہیں۔ بنیادی خیال یہ ہے کہ کسی دوسرے منسلک تصور (مثال کے طور پر) سے آزاد فنکشن کو اعتراض (ایک آبجیکٹ کے طور پر منسلک) کیا جائے۔ منسلک شے کے کسی بھی براہ راست علم سے کسی آبجیکٹ فنکشن کو الگ کرنا)۔ بطور آبجیکٹ فنکشن کے بارے میں مزید بصیرت کے لیے فرسٹ کلاس فنکشن دیکھیں، جو فرسٹ کلاس فنکشن کی ایک شکل کے طور پر اہل ہے۔ لہذا، مثال کے طور پر، آبجیکٹ پر مبنی زبان میں، جب کسی آبجیکٹ کے فنکشن کو آبجیکٹ کے طور پر حوالہ دیا جاتا ہے (جو اسے اس کے منسلک میزبان آبجیکٹ کے بارے میں کوئی علم رکھنے سے آزاد کرتا ہے) تو نئے فنکشن آبجیکٹ کو بعد میں پاس، اسٹور اور کال کیا جا سکتا ہے۔ وصول کنندہ اشیاء (جن کو یہ فعال اشیاء دی گئی ہیں) منسلک میزبان شے کے براہ راست علم کے بغیر اپنی سہولت کے مطابق موجود فنکشن کو محفوظ طریقے سے انجام دے سکتی ہیں (کال کر سکتی ہیں)۔ اس طرح، ایک پروگرام زنجیروں یا فعال اشیاء کے گروپوں کو انجام دے سکتا ہے، جبکہ منسلک میزبان آبجیکٹ کا کوئی براہ راست حوالہ رکھنے سے محفوظ طریقے سے الگ ہوجاتا ہے۔ فون نمبر ایک بہترین اینالاگ ہیں اور آسانی سے اس ڈیکپلنگ کی ڈگری کی وضاحت کر سکتے ہیں۔ مثال کے طور پر: کچھ ادارے کسی خاص کام کو انجام دینے کے لیے کال کرنے کے لیے دوسرے کو فون نمبر فراہم کرتے ہیں۔ جب نمبر پر کال کی جاتی ہے، تو کال کرنے والا ادارہ مؤثر طریقے سے کہہ رہا ہوتا ہے، "براہ کرم میرے لیے یہ کام کریں"۔ ڈیکپلنگ یا ڈھیلا جوڑا فوری طور پر ظاہر ہوتا ہے۔ کال کرنے کے لیے نمبر وصول کرنے والے ادارے کو اس بات کا علم نہیں ہوگا کہ نمبر کہاں سے آیا ہے (مثال کے طور پر۔ نمبر کے فراہم کنندہ کا حوالہ)۔ دوسری طرف، کال کرنے والے کو اس مخصوص علم سے الگ کر دیا جاتا ہے کہ وہ کس کو کال کر رہے ہیں، وہ کہاں ہیں، اور یہ جاننا کہ کال وصول کرنے والا اندرونی طور پر کیسے کام کرتا ہے۔ مثال کو ایک قدم آگے بڑھاتے ہوئے، کال کرنے والا کال وصول کرنے والے سے کہہ سکتا ہے، "براہ کرم میرے لیے یہ کام کریں۔ کام ختم ہونے پر مجھے اس نمبر پر کال کریں۔ " وصول کنندہ کو پیش کیے جانے والے "نمبر" کو "کال بیک" کہا جاتا ہے۔ ایک بار پھر، اس فعال شے کی ڈھیلی جوڑی یا منقطع نوعیت واضح ہے۔ کال بیک کا وصول کنندہ اس بات سے بے خبر ہوتا ہے کہ کس کو کال کیا جا رہا ہے۔ یہ صرف اتنا جانتا ہے کہ وہ کال کر سکتا ہے اور خود فیصلہ کرتا ہے کہ کب کال کرنا ہے۔ حقیقت میں، کال بیک اس شخص کے لیے بھی نہیں ہو سکتا جس نے پہلی جگہ کال بیک فراہم کی ہو۔ سمت کی یہ سطح ہی فنکشن آبجیکٹ کو ڈھیلے جوڑے والے پروگراموں کو حاصل کرنے کے لیے ایک بہترین ٹیکنالوجی بناتی ہے۔ ڈھیلے جوڑے والے اجزاء کے درمیان مواصلات میکانزم کے نباتات پر مبنی ہو سکتا ہے، جیسے کہ مذکور غیر متزلزل مواصلاتی انداز یا مطابقت پذیر پیغام منتقل کرنے کا انداز ڈیٹا عنصر جوڑے کی پیمائش ڈھیلے جوڑے کی ڈگری کو ڈیٹا عناصر میں ہونے والی تبدیلیوں کی تعداد کو نوٹ کرکے ماپا جا سکتا ہے جو بھیجنے یا وصول کرنے والے نظام میں ہو سکتی ہیں اور اس بات کا تعین کرتے ہیں کہ آیا کمپیوٹر اب بھی صحیح طریقے سے بات چیت جاری رکھیں گے۔ ان تبدیلیوں میں ایسی چیزیں شامل ہیں جیسے: پیغامات میں نئے ڈیٹا عناصر کو شامل کرنا ڈیٹا عناصر کی ترتیب کو تبدیل کرنا ڈیٹا عناصر کے ناموں کو تبدیل کرنا ڈیٹا عناصر کے ڈھانچے کو تبدیل کرنا ڈیٹا عناصر کو چھوڑنا یہ بھی دیکھیں کہ کسکیڈنگ ناکامی ہم آہنگی (کمپیوٹر سائنس) کوناسینس (کمپیوٹر پروگرامنگ) جوڑا (کمپیوٹر سائنس) انٹرپرائز سروس بس ایپلی کیشن پروگرامنگ انٹرفیس ڈیمیٹر کی علیحدگی کا قانون سروس پر مبنی فن تعمیر اسپیس بیسڈ فن تعمیر (ایس بی اے) انٹرپرائز حوالہ جات ایپلی کیشن انضمام سروس پر مبنی (بزنس کمپیوٹنگ) پروگرامنگ کے اصول سافٹ ویئر کے معیار