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