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