ইন্টার্ভিউ প্রশ্ন : সফটওয়ার ইঞ্জিনিয়ারিংয়ে Tight coupling এবং Loose coupling বলতে কি বোঝায় ?

উপরের মেশিনটি দেখুন।দেখতেই অনেক জটিল লাগছে।ধরুন মেশিনের তেলের টাংকির নিচে মোটরটি অকেজো হয়ে গেছে কোন কারনে।এখন যদি এটিকে বের করতে চান তাহলে আপনাকে উপরের তেলের টাংকিটি খুলতে হবে এরপর খুলতে হবে এর পাশের প্রোপেলারটিকে।এরপর মোটরটিকে বের করে কাজ করে ঠিক করে তুলতে হবে।

বিশ্বের সকল ইঞ্জিনিয়ারিং কিন্তু একই সূত্রে গাধা।সকল ইঞ্জিনিয়ারিংই প্রোডাক্ট এমনভাবে তৈরী করার পরামর্শ দেয় যেন তা পরবর্তীতে রক্ষণাবেক্ষন খুব সহজে সম্ভব হয় এবং মেশিনে নতুন কিছু যোগ করতে চাইলে যেন খুব সহজে করা যায়।

সফটওয়ার ইঞ্জিনিয়ারিংও এর বাহিরে না।আপনি যদি একটি সফটওয়ার তৈরীর সময় এর প্রেজেন্টেশন লজিক মানে সফটওয়ারের যেই জিনিসগুলো আমরা চোখে দেখি (বাটন,টেক্সট ভিউ ইত্যাদি ) সেগুলোর লজিক ,বিজনেস লজিক মানে সফটওয়ারের মূল ফাংশনালিটি এবং ডাটাবেজ অপারেশন ইত্যাদি সকল কাজগুলো যদি একই জায়গায় একই ক্লাসে একটি অপরিকল্পিতভাবে করে থাকি তাহলে এক সময় অনেক ধরনের বাগ দেখা দিবে।আমরা সহজে সেই বাগগুলো ডিবাগ করতে পারবোনা।নতুন কোন ফিচার সহজে সফটওয়ারে যুক্ত করতে পারবো না।আর এমন কোড করার স্টাইলকেই আমরা Tight coupling বলে থাকি।

এটি অনেকটা সরল একটি মেশিন

উপরের মেশিনটির দিকে এবার দেখা যাক।এটি মূলত আগের মেশিনটিই কিন্তু এবার এর গঠন তুলনামুলকভাবে সরল।এখন যদি মোটরটি নষ্ট হয় বা আমরা মেশিনে নতুন কিছু যোগ করতে চাই তাহলে কিন্তু আমাদের আর কোন ঝামেলা করতে হবে না।কারন প্রতিটি অংশই এখন আলাদা আলাদা।

ঠিক একই জিনিসটি ঘটে সফটওয়ার ইঞ্জিনিয়ারিংয়ের ক্ষেত্রে।আমরা যখন উপরের মেশিনটির মত আমাদের কোডগুলোকে একাধিক ক্লাসে আলাদা আলাদা করে মডিউল আকারে লিখি তাহলে কোডের প্রেজেন্টেশন লজিক,বিজনেস লজিক এবং ডাটাবেজ অপারেশনের একে অপরের সাথে নির্ভরশীলতা অনেক কমে যাবে।ফলে এক একটি স্বাধীনভাবে থাকতে পারবে।আমরা চাইলে খুব দ্রুত কোথাও কোন বাগ ধরা পড়লে তা ডিবাগ করতে পারবো।সেই থাকে নতুন কোন ফিচার আমাদের সফটওয়ারে খুব অল্প সময়ের ভিতরেই যুক্ত করতে পারবো।এই কোড করার স্টাইলকেই বলে Loose coupling ।আমরা নানার ধরনের ডিজাইন প্যান্টার্ন ইউজ করে এই লুস কাপলিং করতে পারি কোডের।ডিজাইন প্যান্টার্ন নিয়ে পরবর্তীতে আলোচনা করা হবে।

ফেসবুক এ শেয়ার করুন

Leave a Reply

Your email address will not be published. Required fields are marked *