Loose coupling
কম্পিউটিং এবং সিস্টেমের নকশায়, একটি আলগাভাবে সংযুক্ত ব্যবস্থা হল এমন একটি ব্যবস্থা যেখানে উপাদানগুলি একে অপরের সাথে দুর্বলভাবে সম্পর্কিত (ভাঙতে পারে এমন সম্পর্ক রয়েছে) এবং এইভাবে একটি উপাদানের পরিবর্তন অন্য উপাদানের অস্তিত্ব বা কার্যকারিতাকে কমপক্ষে প্রভাবিত করে। যেখানে এর প্রতিটি উপাদানের অন্যান্য পৃথক উপাদানগুলির সংজ্ঞা সম্পর্কে খুব কম বা কোনও জ্ঞান নেই। উপক্ষেত্রগুলির মধ্যে ক্লাস, ইন্টারফেস, ডেটা এবং পরিষেবাগুলির সংযোগ অন্তর্ভুক্ত রয়েছে। আলগা কাপলিং টাইট কাপলিংয়ের বিপরীত। সুবিধা এবং অসুবিধাগুলি একটি আলগাভাবে সংযুক্ত ব্যবস্থার উপাদানগুলিকে বিকল্প বাস্তবায়নের মাধ্যমে প্রতিস্থাপন করা যেতে পারে যা একই পরিষেবা প্রদান করে। একটি আলগাভাবে সংযুক্ত সিস্টেমের উপাদানগুলি একই প্ল্যাটফর্ম, ভাষা, অপারেটিং সিস্টেম বা পরিবেশ তৈরিতে কম সীমাবদ্ধ। যদি সময়মতো সিস্টেমগুলি বিচ্ছিন্ন করা হয়, তবে লেনদেনের অখণ্ডতা প্রদান করাও কঠিন; অতিরিক্ত সমন্বয় প্রোটোকল প্রয়োজন। বিভিন্ন সিস্টেমে ডেটা প্রতিলিপি আলগা সংযোগ (উপলব্ধতায়) প্রদান করে, তবে সামঞ্জস্য বজায় রাখতে সমস্যা তৈরি করে (ডেটা সিঙ্ক্রোনাইজেশন)। ইন্টিগ্রেশনে বিস্তৃত ডিস্ট্রিবিউটেড সিস্টেম ডিজাইনে লুজ কাপলিং লেনদেন, বার্তা-ভিত্তিক মিডলওয়্যার দ্বারা প্রদত্ত সারি এবং আন্তঃব্যবহারযোগ্যতার মান ব্যবহার করে অর্জন করা হয়। চার ধরনের স্বায়ত্তশাসন, যা আলগা সংযোগকে উৎসাহিত করেঃ রেফারেন্স স্বায়ত্তশাসন, সময় স্বায়ত্তশাসন, বিন্যাস স্বায়ত্তশাসন এবং প্ল্যাটফর্ম স্বায়ত্তশাসন। পরিষেবা-ভিত্তিক স্থাপত্যগুলিতে আলগা সংযোগ একটি স্থাপত্য নীতি এবং নকশার লক্ষ্য; এগারো ধরনের আলগা সংযোগ এবং তাদের শক্ত সংযোগের প্রতিরূপগুলি তালিকাভুক্ত করা হয়েছেঃ মধ্যস্থতাকারীর মাধ্যমে শারীরিক সংযোগ, অ্যাসিঙ্ক্রোনাস যোগাযোগ শৈলী, শুধুমাত্র ডেটা মডেলে সাধারণ সাধারণ প্রকার, দুর্বল টাইপ সিস্টেম, ডেটা-কেন্দ্রিক এবং স্বয়ংসম্পূর্ণ বার্তা, প্রক্রিয়া যুক্তির বিতরণ নিয়ন্ত্রণ, গতিশীল বন্ধন (পরিষেবা গ্রাহক এবং সরবরাহকারীদের), প্ল্যাটফর্ম স্বাধীনতা, সিস্টেম-স্তরের লেনদেনের পরিবর্তে ব্যবসায়-স্তরের ক্ষতিপূরণ, বিভিন্ন সময়ে স্থাপন, সংস্করণে অন্তর্নিহিত আপগ্রেড। এন্টারপ্রাইজ সার্ভিস বাস (ই. এস. বি) মিডলওয়্যার একাধিক মাত্রায় আলগা সংযোগ অর্জনের জন্য উদ্ভাবিত হয়েছিল; তবে, অতিরিক্ত ইঞ্জিনিয়ারড এবং ভুল অবস্থানে থাকা ই. এস. বিগুলির বিপরীত প্রভাবও থাকতে পারে এবং অবাঞ্ছিত টাইট কাপলিং এবং একটি কেন্দ্রীয় স্থাপত্য হটস্পট তৈরি করতে পারে। ইভেন্ট-চালিত স্থাপত্যের লক্ষ্য হল আলগা সংযোগের প্রচার করা। সংযোগ হ্রাস করার পদ্ধতি ইন্টারফেসের আলগা সংযোগ একটি আদর্শ বিন্যাসে (যেমন এক্স. এম. এল বা জে. এস. ও. এন) তথ্য প্রকাশ করে উন্নত করা যেতে পারে। পরামিতিগুলিতে স্ট্যান্ডার্ড ডেটা প্রকার ব্যবহার করে প্রোগ্রামের উপাদানগুলির মধ্যে আলগা সংযোগ বাড়ানো যেতে পারে। কাস্টমাইজড ডেটা টাইপ বা অবজেক্ট পাস করার জন্য উভয় উপাদানের কাস্টম ডেটা সংজ্ঞা সম্পর্কে জ্ঞান থাকা প্রয়োজন। পরিষেবাগুলিতে পাঠানো তথ্যকে মূল উপাত্তে কমিয়ে দিয়ে পরিষেবাগুলির আলগা সংযোগ বাড়ানো যেতে পারে। উদাহরণস্বরূপ, একটি পরিষেবা যা একটি চিঠি পাঠায় তা সর্বাধিক পুনঃব্যবহারযোগ্য হয় যখন কেবল গ্রাহক শনাক্তকারীটি পাস করা হয় এবং পরিষেবার মধ্যে গ্রাহকের ঠিকানা পাওয়া যায়। এটি পরিষেবাগুলিকে বিচ্ছিন্ন করে দেয় কারণ পরিষেবাগুলিকে একটি নির্দিষ্ট ক্রমে কল করার প্রয়োজন হয় না (যেমন। গেট কাস্টমার অ্যাড্রেস, SendLetter)। প্রোগ্রামিং-এ কাপলিং বলতে বোঝায় এক উপাদানের অন্য উপাদান সম্পর্কে প্রত্যক্ষ জ্ঞানের মাত্রা। কম্পিউটিং-এ আলগা সংযোগকে এনক্যাপসুলেশন বনাম নন-এনক্যাপসুলেশন হিসাবে ব্যাখ্যা করা হয়। টাইট কাপলিংয়ের একটি উদাহরণ ঘটে যখন একটি নির্ভরশীল শ্রেণীতে সরাসরি একটি কংক্রিট শ্রেণীতে একটি পয়েন্টার থাকে যা প্রয়োজনীয় আচরণ সরবরাহ করে। নির্ভরশীল শ্রেণীতে পরিবর্তনের প্রয়োজন ছাড়াই নির্ভরতা প্রতিস্থাপন করা যায় না, বা এর "স্বাক্ষর" পরিবর্তন করা যায় না। আলগা সংযোগ ঘটে যখন নির্ভরশীল শ্রেণীতে শুধুমাত্র একটি ইন্টারফেসের জন্য একটি পয়েন্টার থাকে, যা পরে এক বা একাধিক কংক্রিট শ্রেণী দ্বারা প্রয়োগ করা যেতে পারে। একে ডিপেন্ডেন্সি ইনভার্সন বলা হয়। নির্ভরশীল শ্রেণীর নির্ভরতা ইন্টারফেস দ্বারা নির্দিষ্ট একটি "চুক্তি"-র উপর; পদ্ধতি এবং/অথবা বৈশিষ্ট্যগুলির একটি সংজ্ঞায়িত তালিকা যা প্রয়োগকারী শ্রেণীগুলিকে অবশ্যই প্রদান করতে হবে। যে কোনও শ্রেণী যা ইন্টারফেস প্রয়োগ করে তা এইভাবে শ্রেণী পরিবর্তন না করেই একটি নির্ভরশীল শ্রেণীর নির্ভরশীলতাকে সন্তুষ্ট করতে পারে। এটি সফ্টওয়্যার ডিজাইনে সম্প্রসারণযোগ্যতার অনুমতি দেয়; একটি ইন্টারফেস প্রয়োগকারী একটি নতুন শ্রেণী নির্ভরশীল শ্রেণীতে পরিবর্তনের প্রয়োজন ছাড়াই কিছু বা সমস্ত পরিস্থিতিতে বর্তমান নির্ভরতা প্রতিস্থাপনের জন্য লেখা যেতে পারে; নতুন এবং পুরানো শ্রেণীগুলি অবাধে বিনিময় করা যেতে পারে। শক্তিশালী সংযোগ এটির অনুমতি দেয় না। এটি একটি ইউ. এম. এল চিত্র যা নির্ভরশীল শ্রেণী এবং কংক্রিট শ্রেণীর একটি সেটের মধ্যে আলগা সংযোগের একটি উদাহরণ, যা প্রয়োজনীয় আচরণ প্রদান করেঃ তুলনার জন্য, এই চিত্রটি নির্ভরশীল শ্রেণী এবং সরবরাহকারীর মধ্যে শক্তিশালী সংযোগের সাথে বিকল্প নকশাকে চিত্রিত করেঃ অন্যান্য ফর্ম কম্পিউটার প্রোগ্রামিং ভাষাগুলি মূল মডিউল হিসাবে উভয় ফাংশন (কার্যকরী প্রোগ্রামিং দেখুন) বা বস্তু হিসাবে ফাংশনগুলি আলগাভাবে সংযুক্ত প্রোগ্রামিংয়ের দুর্দান্ত উদাহরণ সরবরাহ করে। কার্যকরী ভাষাগুলিতে ধারাবাহিকতা, বন্ধ বা জেনারেটরের নিদর্শন রয়েছে। ফাংশন প্রোগ্রামিং ভাষার উদাহরণ হিসাবে ক্লোজুর এবং লিস্প দেখুন। স্মলটক এবং রুবির মতো অবজেক্ট-ভিত্তিক ভাষাগুলিতে কোড ব্লক রয়েছে, যেখানে আইফেলের এজেন্ট রয়েছে। মূল ধারণাটি হল অন্য কোনও আবদ্ধ ধারণা থেকে স্বাধীন একটি ফাংশনকে বস্তুগত করা (যেমন একটি বস্তু হিসাবে আবদ্ধ করা)। আবদ্ধ বস্তুর যে কোনও সরাসরি জ্ঞান থেকে কোনও বস্তুর ক্রিয়াকে বিচ্ছিন্ন করা)। বস্তু হিসাবে ফাংশন সম্পর্কে আরও অন্তর্দৃষ্টির জন্য প্রথম শ্রেণীর ফাংশন দেখুন, যা প্রথম শ্রেণীর ফাংশনের একটি রূপ হিসাবে যোগ্যতা অর্জন করে। সুতরাং, উদাহরণস্বরূপ, একটি অবজেক্ট-ওরিয়েন্টেড ভাষায়, যখন কোনও বস্তুর একটি ফাংশনকে একটি অবজেক্ট হিসাবে উল্লেখ করা হয় (এটি তার আবদ্ধ হোস্ট অবজেক্ট সম্পর্কে কোনও জ্ঞান থেকে মুক্ত করে) তখন নতুন ফাংশন অবজেক্টটি পাস, সংরক্ষণ এবং কল করা যেতে পারে। প্রাপক বস্তুগুলি (যাদের কাছে এই কার্যকরী বস্তুগুলি দেওয়া হয়) আবদ্ধ পোষক বস্তু সম্পর্কে কোনও সরাসরি জ্ঞান ছাড়াই তাদের নিজস্ব সুবিধার্থে অন্তর্ভুক্ত ফাংশনটি নিরাপদে সম্পাদন (কল) করতে পারে। এইভাবে, একটি প্রোগ্রাম চেইন বা কার্যকরী বস্তুর গোষ্ঠীগুলি কার্যকর করতে পারে, যখন সুরক্ষিতভাবে আবদ্ধ হোস্ট বস্তুর কোনও সরাসরি রেফারেন্স থেকে বিচ্ছিন্ন হয়ে যায়। ফোন নম্বরগুলি একটি চমৎকার এনালগ এবং সহজেই এই বিচ্ছিন্নকরণের মাত্রা ব্যাখ্যা করতে পারে। উদাহরণস্বরূপঃ কিছু সত্তা একটি নির্দিষ্ট কাজ সম্পন্ন করার জন্য কল করার জন্য অন্যটিকে একটি ফোন নম্বর প্রদান করে। যখন নম্বরটি কল করা হয়, তখন কলিং সত্তা কার্যকরভাবে বলছে, "দয়া করে আমার জন্য এই কাজটি করুন"। বিচ্ছিন্নতা বা আলগা সংযোগ অবিলম্বে স্পষ্ট হয়ে ওঠে। কল করার জন্য নম্বরটি গ্রহণকারী সত্তার নম্বরটি কোথা থেকে এসেছে সে সম্পর্কে কোনও জ্ঞান থাকতে পারে না (যেমন। নম্বর সরবরাহকারীর একটি রেফারেন্স)। অন্যদিকে, কলকারীকে নির্দিষ্ট জ্ঞান থেকে বিচ্ছিন্ন করা হয় যে তারা কাকে কল করছে, তারা কোথায় আছে এবং কলের রিসিভার অভ্যন্তরীণভাবে কীভাবে কাজ করে তা জানা। উদাহরণটি আরও এক ধাপ এগিয়ে নিয়ে গিয়ে, কলকারী কল রিসিভারকে বলতে পারে, "দয়া করে আমার জন্য এই কাজটি করুন। কাজ শেষ হলে আমাকে এই নম্বরে ফোন করুন। " প্রাপককে দেওয়া 'নম্বর' কে 'কল-ব্যাক' বলা হয়। আবার, এই কার্যকরী বস্তুর আলগা সংযুক্তি বা বিচ্ছিন্ন প্রকৃতি স্পষ্ট। কল-ব্যাক প্রাপক কী বা কাকে কল করা হচ্ছে সে সম্পর্কে অবগত নন। এটি কেবল জানে যে এটি কল করতে পারে এবং কখন কল করতে হবে তা নিজেই সিদ্ধান্ত নেয়। বাস্তবে, কল-ব্যাক এমনকি সেই ব্যক্তিরও নাও হতে পারে যিনি প্রথমে কল-ব্যাক প্রদান করেছিলেন। দিকনির্দেশনার এই স্তরটি ফাংশন অবজেক্টগুলিকে আলগাভাবে সংযুক্ত প্রোগ্রামগুলি অর্জনের জন্য একটি দুর্দান্ত প্রযুক্তি করে তোলে। আলগাভাবে সংযুক্ত উপাদানগুলির মধ্যে যোগাযোগ বিভিন্ন পদ্ধতির উপর ভিত্তি করে হতে পারে, যেমন উল্লিখিত অ্যাসিঙ্ক্রোনাস যোগাযোগ শৈলী বা সিঙ্ক্রোনাস বার্তা পাসিং শৈলী পরিমাপ ডেটা উপাদান কাপলিং আলগা কাপলিংয়ের মাত্রা প্রেরণ বা গ্রহণ ব্যবস্থায় ডেটা উপাদানগুলির পরিবর্তনের সংখ্যা লক্ষ্য করে এবং কম্পিউটারগুলি এখনও সঠিকভাবে যোগাযোগ চালিয়ে যাবে কিনা তা নির্ধারণ করে পরিমাপ করা যেতে পারে। এই পরিবর্তনগুলির মধ্যে রয়েছেঃ বার্তাগুলিতে নতুন তথ্য উপাদান যুক্ত করা তথ্য উপাদানগুলির ক্রম পরিবর্তন করা তথ্য উপাদানগুলির নাম পরিবর্তন করা তথ্য উপাদানগুলির কাঠামো পরিবর্তন করা তথ্য উপাদানগুলি বাদ দেওয়া আরও দেখুন ক্যাসকেডিং ব্যর্থতা সংযোগ (কম্পিউটার বিজ্ঞান) সংযোগ (কম্পিউটার বিজ্ঞান) সংযোগ (কম্পিউটার বিজ্ঞান) এন্টারপ্রাইজ পরিষেবা বাস অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস ডিমিটার পৃথকীকরণের আইন পরিষেবা-ভিত্তিক স্থাপত্য (এসবিএ) এন্টারপ্রাইজ অ্যাপ্লিকেশন ইন্টিগ্রেশন পরিষেবা-ভিত্তিক (ব্যবসায়িক কম্পিউটিং) প্রোগ্রামিং নীতিগুলি সফ্টওয়্যারের গুণমান