Object-Oriented Design (OOD) Goals

Object-Oriented Design (OOD) Goals

Robustness Adaptability Reusability

শুরুর কথা

OOD এর উদ্দেশ্য বা গোল নিয়ে সহজ ভাষায় জানতে চেষ্টা করবো। প্রথমে নিচের ছবিটি ভালোভাবে লক্ষ্য করি।

ood.jpg

সহজে যদি বলতে চাই তবে পারিভাষিক অর্থে -

  • Robustness = দৃঢ়তা
  • Adaptability = অভিযোজনযোগ্যতা
  • Reusability = পুনর্ব্যবহারযোগ্যতা

আর ছবির বিষয়বস্তুর সাথে মিলাতে গেলে আমরা সহজেই তা বুঝতে পারছি কি বুঝানো হয়েছে।

মূল বিষয়

সফটওয়্যার ইমপ্লিমেন্টেশনের ক্ষেত্রে সেই সফটওয়্যার এর মধ্যে ৩টি বিষয় থাকা বা বাস্তবায়নে বিষয় ৩টি অর্জন করা উচিত।

  1. Robustness
  2. Adaptability
  3. Reusability

Robustness

প্রতিটি দক্ষ প্রোগ্রামারই চায় সঠিক (perfect) একটি সফটওয়্যার ডেভেলপ করতে। যার অর্থ হলো সফটওয়্যারটি যেন প্রোগ্রামের অ্যাপ্লিকেশনে সমস্ত প্রত্যাশিত ইনপুটগুলির জন্য সঠিক আউটপুট তৈরি করে। কোনোরকম ক্রাশ না করে। আরো ভালোভাবে বলতে গেলে, আমরা চাই সেটি যেন শক্তিশালী বা দৃঢ় (robust) হয়। অর্থাৎ, অপ্রত্যাশিত ইনপুটগুলি পরিচালনা ( handle) করতে সক্ষম হয় যেগুলো প্রোগ্রামে আরে থেকেই বলা ছিল না বা কোডে ডিফাইন করা ছিল না।

উদাহরণস্বরূপঃ একটি প্রোগ্রাম লেখা হলো যাতে ইউজার ইনপুট হিসেবে পজেটিভ ইন্টিজার সংখ্যা (যেমনঃ একটি পন্যের মূল্য) নেয় এবং সেখানে যদি একটি নেগেটিভ ইন্টিজার দেয়া হয় তখন যেন প্রোগ্রামটি তা কোনোরকম এরর (error) ছাড়াই হ্যান্ডেল করতে পারে।

একটি সফটওয়্যার এর Robustness থাকাটা কতটা গুরুত্বপূর্ণ তা এই ঘটনা থেকে বুঝা যায় যেখানে সফটওয়্যারের ভুলের জন্য ছয়জন রোগী মারা গিয়েছিল। লিঙ্কঃ Therac-25

Adaptability

Adaptability, Evolvability, Portability যাই বলেন না কেন একটি সফটওয়্যারের এই গুণ থাকা খুবই জরুরি। যাতে সেটি ভিন্ন ভিন্ন প্লাটফর্ম বা সিস্টেমে স্বাভাবিকভাবে কাজ করতে পারে। অর্থাৎ এটির যেন সক্ষমতা থাকে যে তা হার্ডওয়্যার বা সিস্টেমের সামান্যতম পরিবর্তনেও কাজ চালাতে পারে। মানে সেটিও যেন আপডেট করা যায় সেই সিস্টেম পরিবর্তনের সাথে সাথে।

Software needs to be able to evolve over time in response to changing conditions in its environment.

আধুনিক সফটওয়্যার আপ্লিকেশনগুলোর কথায় ধরা যাক, যেমন ওয়েব ব্রাউজার। যা কিনা বহু বছর ধরে চলে আসছে। এত সময়ে নানা রকম সিস্টেম আপডেট হয়েছে, হার্ডওয়্যার উন্নত হয়েছে। তার পরেও ব্রাউজার গুলো সময়ের সাথে নিজেকে আপডেট করে চলেছে।

Reusability

পুনরায় ব্যবহারযোগ্য বস্তু পৃথিবীতে যেমন গুরুত্বপূর্ণ তেমনি পুনরায় ব্যবহারযোগ্য প্রোগ্রাম ঠিক ততটাই গুরুত্বপূর্ণ।

সফ্টওয়্যারটি পুনঃব্যবহারযোগ্য হওয়ার আকাঙ্ক্ষা হল অভিযোজনযোগ্যতার সাথে হাতে হাত মিলিয়ে চলা অর্থাৎ, একই কোড বিভিন্ন অ্যাপ্লিকেশনে বিভিন্ন সিস্টেমের একটি উপাদান হিসাবে ব্যবহারযোগ্য হওয়া উচিত। মানসম্পন্ন সফ্টওয়্যার ডেভেলপ করা একটি ব্যয়বহুল ব্যাপার এটা মানতে হবে। কিন্তু যদি সেটির কোড গুলো পুনঃব্যবহারযোগ্য করা যায় তবে খরচ কিছুটা বা অনেকাংশেই কমানো যায়।

Therac-25 এর ঘটনাটা আমরা Robustness এ জেনেছি। আর সেখানে সেই সফটওয়্যারের মেজর সোর্স ছিল Therac-20 সফটওয়্যার।

Therac-25 came from inappropriate reuse of Therac-20. Therac-20 অবজেক্ট ওরিয়েন্টেড কোড ছিল না। এবং তা Therac-25 এর যে প্লাটফর্ম বা হার্ডওয়্যার তার উপযোগি করে ডিজাইনও করা হয়নি।

শেষ কথা

আমাদের লেখা কোডটি শুধুমাত্র কোড এডিটরে থাকার জন্য নয়। সেটি বাস্তবিক প্রয়োগের জন্যই। তাই সফটওয়্যার ডেভেলপমেন্ট বা কোডিংয়ে Robustness, Adaptability, Reusability মানুষের জীবনে অক্সিজেনের মতো।