সফটওয়ার ডিজাইন পরিকল্পনা

সফটওয়ার ডিজাইন পরিকল্পনা

রিদওয়ান বিন শামীম

 

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

সফটওয়ার ডিজাইনে অনেকগুলো বিন্যাস পাওয়া যায়, সংক্ষিপ্তভাবে সেগুলো নিয়ে আলোচনা করা যাক।

কাঠামোগত ডিজাইন

কাঠামোগত ডিজাইন হল সমাধানের সুসংগঠিত উপাদানের সমন্বয়ে পরিকল্পনা করা, এটি মূলত সমাধানের ডিজাইন করা। কাঠামোগত ডিজাইনের বড় সুবিধা হল এটি সমস্যা সমাধানের সঠিক দিকনির্দেশনা দেয়। কাঠামোগত ডিজাইন প্রোগ্রামারকে সমস্যা সমাধানে অধিকতর মনযোগী হওয়ারও সুযোগ দেয়।

কাঠামোগত ডিজাইন মূলত ‘ভাগ করা ও অতিক্রম করা’ এই পদ্ধতিতে কাজ করে, যেখানে সমস্যাকে ছোট ছোট ধাপে ভাগ করে সেগুলোকে সমাধান করা হয় যে পর্যন্ত মূল সমস্যাটি সমাধান না হয়।

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

মডিউলগুলো স্তরবিন্যাসে সাজানো থাকে, একটি আরেকটির সাথে যোগাযোগ করতে পারে, ভাল কোনও কাঠামোগত ডিজাইনে সবসময় এই সুবিধা রাখা হয় যেন মডিউলগুলো পরস্পরের মধ্যে যোগাযোগ করতে পারে, এক্ষেত্রে নিয়মগুলো হল,

সংযোগঃ ফাংশনালিটি সম্পর্কিত সব উপাদানের গ্রুপিং

কাপলিংঃ বিভিন্ন মডিউলের মধ্যে যোগাযোগ।

ভাল কাঠামোগত ডিজাইনে সংযোগ সুবিধা বেশি থাকে ও কাপলিং সুবিধা কম থাকে।

ফাংশন ভিত্তিক ডিজাইনঃ ফাংশন ভিত্তিক ডিজাইনে মূল সিস্টেম ফাংশন নামের অনেকগুলো ভাগে বিভক্ত থাকে, এই ফাংশনগুলো সিস্টেমে গুরুত্বপূর্ণ কাজ করতে পারে। সিস্টেম সব ফাংশনের শীর্ষে থাকে।

ফাংশন ভিত্তিক ডিজাইনে কাঠামোগত ডিজাইনের কিছু ধারণা যেমন ‘ভাগ করা ও অতিক্রম করা’ এই প্রক্রিয়াটি ব্যবহার করা হয়।

ডিজাইন প্রক্রিয়াকে অনেকগুলো ছোট ফাংশনে বিভক্ত করা হয়, যারা বিমূর্ত তথ্য ও অপারেশন সিস্টেমে সংবদ্ধ করে । ফাংশনাল মডিউল নিজেদের মধ্যে তথ্য আদানপ্রদান করতে পারে ও বিশ্বব্যপী তথ্য ছড়িয়ে দিতে পারে।

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

ডিজাইন প্রসেস

• ডাটা ফ্লো ডায়াগ্রাম অনুসরণ করে সিস্টেমের ডাটা ফ্লো নির্ধারিত হয়।

• DFD নির্ধারণ করে কীভাবে ফাংশন পুরো সিস্টেমের ডাটা তথা সমগ্র অবস্থা পরিবর্তন করবে।

• সিস্টেমের অপারেশনের ধরণ অনুযায়ী ছোট ছোট ফাংশনে পুরো সিস্টেমকে বিভাজিত করা হয়।

• তারপর ফাংশনকে বৃহৎ আকারে প্রকাশ করা হয়।

অবজেক্ট ভিত্তিক ডিজাইনঃ অবজেক্ট ভিত্তিক ডিজাইন সফটওয়ার সিস্টেমের স্বতন্ত্র সত্তা ও তাদের বৈশিষ্ট্য নিয়ে কাজ করে। এই ডিজাইন পরিকল্পনা সিস্টেমের সত্তা ও তাদের বৈশিষ্ট্যের ওপর লক্ষ্য রাখে, পুরো ধারণাটি স্বতন্ত্র সত্তার উপর ভিত্তি করে আবর্তিত হয়।

অবজেক্ট ভিত্তিক ডিজাইনের মূল বিষয়গুলো আলোচনা করা যাক,

লক্ষ্যবস্তু বা Objectsঃ ডিজাইন সমাধানের ক্ষেত্রে সকল কার্যক্রম অবজেক্ট বা লক্ষ্যবস্তুকে ঘিরে হয়ে থাকে, যেমন, ব্যক্তি, ব্যাংক, কোম্পানি, কাস্টমার সবকিছুকে অবজেক্ট হিসেবে ধরা হয়। সব অবজেক্টের পৃথক কিছু বিষয় আছে যা শুধু তার জন্যই প্রযোজ্য, এবং সেগুলো প্রয়োগের নির্দিষ্ট কিছু নিয়মও আছে।

শ্রেণী বা classes ঃ শ্রেণী হল কোনও অবজেক্টের সাধারণ গোত্র, অবজেক্ট হল কোনও শ্রেণীর উদাহরণ। শ্রেণী অবজেক্টের সব আরোপিত বিষয় বিবৃত করে, এবং সব পদ্ধতি প্রকাশ করে যা অবজেক্টের ফাংশনালিটি বিবৃত করে। সল্যুশন ডিজাইনে আরোপিত বিষয়গুলো চলকরূপে ও ফাংশনালিটিকে প্রক্রিয়ার পদ্ধতিরূপে দেখানো হয়।

সারসংক্ষেপঃ OOD তে আরোপিত বিষয়সমূহ(attributes) ও পদ্ধতি(operation on the data) একসাথে থাকে, একে সারসংক্ষেপ বা Encapsulation বলে, এরা শুধু গুরুত্বপূর্ণ তথ্য একসাথেই রাখে না, বহিঃবিশ্বের কাছ থেকে গোপনও রাখে। একে তথ্য গোপন করা বলে।

উত্তরাধিকার বা Inheritanceঃ OOD তে একই গোত্রের মধ্যে স্তরবিন্যাস বজায় রেখে কাজ করে যেখানে নিচের বা উপশ্রেণীগুলো তাদের মূল শ্রেণী থেকে পদ্ধতি ও চলক নিয়ে কাজ করতে পারে, একেই উত্তরাধিকার বা Inheritance বলে, এটি কোনও শ্রেণীকে বিবৃত করাকে সহজ করেছে।

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

ডিজাইন প্রসেস

ডিজাইন প্রসেস কিছু নির্দিষ্ট ধাপে হয়, কিছু এদিক সেদিক হয় ফাংশন ভিত্তিক ডিজাইন না অবজেক্ট ভিত্তিক ডিজাইন তার উপর ভিত্তি করে।মোটামোটি ভাবে ধাপগুলো এরকম,

• সমাধান ডিজাইন পূর্ববর্তী কোন সিস্টেম বা সিস্টেম ডায়াগ্রাম থেকে নেয়া হতে পারে।

• অবজেক্টগুলো শ্রেণীতে এবং সংশ্লিষ্ট বৈশিষ্ট্যের ভিত্তিতে ভাগ করা থাকে।

• শ্রেণীর স্তরবিন্যাস ও সম্পর্ক নির্ধারিত থাকে।

• এপ্লিকেশন ফ্রেমওয়ার্ক নির্ধারিত।

সফটওয়ার ডিজাইনের পন্থা

সফটওয়ার ডিজাইনের দুটি মৌলিক পন্থা নিচে বর্ণনা করা হল।

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

স্ক্রেচ থেকে ডিজাইন করতে গেলে এবং নির্ধারিত খুঁটিনাটি না থাকলে সেক্ষেত্রে টপ ডাউন ডিজাইন বেশি উপযুক্ত হয়।
বটম আপ ডিজাইন মডেল ঃ বটম আপ ডিজাইন মডেল একদম নির্দিষ্ট ও বেসিক উপাদান নিয়ে শুরু হয়, নির্দিষ্ট ও বেসিক উপাদান ব্যবহার করে উঁচু মানের উপাদান তৈরি করা হয় যে পর্যন্ত একটি মাত্র উপাদানের জন্য সিস্টেম প্রস্তুত না হয়। প্রতিটা ঊর্ধ্বতন মানের জন্য(higher level) বিমূর্তনের হার(amount of abstraction) বৃদ্ধি পায়।

বিদ্যমান কোন সিস্টেম থেকে নতুন সিস্টেম তৈরির ক্ষেত্রে বটম আপ ডিজাইন মডেল ব্যবহার করা যায় যেখানে বিদ্যমান সিস্টেম থেকে মৌলিক ধারণা নিয়ে নতুন সিস্টেম তৈরির ক্ষেত্রে ব্যবহার করা যায়।

টপ ডাউন ডিজাইন ও বটম আপ ডিজাইন পরিপূর্ণভাবে বাস্তবভিত্তিক নয়, বরং দুটির যথোপযুক্ত সমন্বয় অধিক ফলপ্রসূ হতে পারে।

Permanent link to this article: http://bangla.sitestree.com/%e0%a6%b8%e0%a6%ab%e0%a6%9f%e0%a6%93%e0%a7%9f%e0%a6%be%e0%a6%b0-%e0%a6%a1%e0%a6%bf%e0%a6%9c%e0%a6%be%e0%a6%87%e0%a6%a8-%e0%a6%aa%e0%a6%b0%e0%a6%bf%e0%a6%95%e0%a6%b2%e0%a7%8d%e0%a6%aa%e0%a6%a8%e0%a6%be/