সফটওয়ার ডিজাইনের বেসিক

সফটওয়ার ডিজাইনের বেসিক

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

 

সফটওয়ার ডিজাইন একটি প্রক্রিয়া যেখানে গ্রাহক চাহিদাকে সুবিধাজনক পর্যায়ে পরিনত করা হয়, যা প্রোগ্রামারকে কোডিং ও তার প্রয়োগে সাহায্য করে।

গ্রাহক চাহিদা যাচাইয়ের জন্য এসআরএস (SRS-Software Requirement Specification) নামের ডকুমেন্ট তৈরি করা হয় কোডিং ও তার প্রয়োগে, যেখানে আরও নির্দিষ্ট ও বিস্তারিত রিকোয়ারমেন্টকে সফটওয়ারের টার্মে প্রকাশ করা হয়, এই প্রক্রিয়ার ফলাফলকে সরাসরি প্রোগ্রামিং ভাষার প্রয়োগে ব্যবহার করা হয়।

সফটওয়ার ডিজাইন SDLC (Software Design Life Cycle) এর প্রথম ধাপ, যেটি প্রবলেম ডোমেইন থেকে সল্যুশন ডোমেইনের দিকে মনোযোগ দেয়। এসআরএস (SRS-Software Requirement Specification)এ যে রিকোয়ারমেন্টের উল্লেখ আছে তা পূরণ করাই এর কাজ।

সফটওয়ার ডিজাইনের ধাপঃ তিন ধরনের ফলাফল দিয়ে থাকে।

• স্থাপত্যভিত্তিক ডিজাইনঃ স্থাপত্যভিত্তিক ডিজাইন সিস্টেমের শীর্ষ পর্যায়ের বিমূর্ত সংস্করণ, এটি সফটওয়ারকে এমন একটি সিস্টেমরূপে প্রকাশ করে যেখানে বিভিন্ন উপাদান পরস্পরের সাথে সম্পৃক্ত।এ ধাপে ডিজাইনাররা প্রস্তাবিত সল্যুশন ডোমেইনের ধারণা লাভ করে।

• উঁচু শ্রেণীর ডিজাইনঃ এই শ্রেণীর ডিজাইন স্থাপত্যভিত্তিক ডিজাইনের ‘একক সত্ত্বা বহু উপাদান’ ধারনাকে অল্প বিমূর্ত সাবসিস্টেম ও মডিউলে ভাগ করে এবং পরস্পরের মধ্যে সম্পৃক্ততা তৈরি করে। কীভাবে মডিউল আকারে এর সকল উপাদানকে একসাথে সমন্বিত করা হবে এই শ্রেণীর ডিজাইন তা নিশ্চিত করে। এই শ্রেণীর ডিজাইন মূলত প্রতিটি সাবসিস্টেমের সম্পর্ক ও পরস্পরের সাথে সম্পৃক্ততার মডিউলার কাঠামো নিশ্চিত করে।

• বিস্তারিত ডিজাইনঃ পূর্বের দুটি ডিজাইনের সিস্টেম ও সাবসিস্টেমের প্রায়োগিক দিক নিয়ে কাজ করে। এটি প্রায়োগিক ও মডিউলের বিস্তারিত দিক নিয়ে খুঁটিনাটি কাজ করে। এটি প্রত্যেকটি মডিউলের যৌক্তিক গঠন ও অন্য মডিউলের সাথে যোগাযোগের বিষয়টিও বিবৃত করে।

• মডিউলারাইজেশনঃ মডিউলারাইজেশন হল একটি প্রক্রিয়া যেটিতে কোনও সফটওয়ারকে স্বাধীন ও বিযুক্ত মডিউলে ভাগ করা হয় যেগুলো স্বাধীনভাবে কাজ করতে পারে। এই মডিউলগুলো মৌলিক নির্মাণ হিসেবে কাজ করতে পারে। ডিজাইনাররা এমনভাবে এই মডিউলগুলো নির্মাণ করে যেন তারা স্বতন্ত্রভাবে সংগৃহীত ও সম্পাদিত হতে পারে।

মডিউলার ডিজাইন অবচেতনভাবেই ‘ভাগ করা এবং অতিক্রম করা’ পদ্ধতি অনুসরণ করে, কারণ মডিউলার ডিজাইনে আরও অনেক সুবিধা থাকে।

মডিউলারাইজেশনের সুবিধাসমূহঃ

• একই ধরনের উপাদান সহজে নিয়ন্ত্রণ করা যায়,
• ফাংশনের ভিত্তিতে প্রোগ্রামকে বিভক্ত করা যায়,
• প্রোগ্রামে কাঙ্খিত পর্যায়ের বিমূর্তন আরোপ করা যায়,
• উচ্চ সংযোগ বিশিষ্ট উপাদান পুনরায় ব্যবহার করা যায়,
• সহগামী সম্পাদন সম্ভব হয়,
• নিরাপত্তার দিক থেকে কাঙ্খিত।

কনকারেন্সি বা সহগামীতাঃ আগে ক্রমধারা অনুসারে সফটওয়ার সম্পাদন করা হত। ক্রমানুযায়ী সম্পাদন বলতে বুঝানো হয় কোন নির্ধারিত সময়ে কোনও অংশের কোডেড নির্দেশনা একটির পর একটি করে সম্পাদিত হওয়া। যেমন কোণ সফটওয়ারে কয়েকটি মডিউল থাকলেও একক সময়ে একটি মাত্র মডিউল সক্রিয় থাকবে।

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

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

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

কোহেশনঃ কোন মডিউলের উপাদানের অন্তঃনির্ভরশীলতার পরিমাপকে কোহেশন বলে।
সাত ধরণের কোহেশন দেখা যায়। এগুলো হল,

কাকতালীয় কোহেশনঃ অপরিকল্পিত ও এলোমেলো কোহেশন যা শুধু মডিউলারাইজেশনের স্বার্থে হয়ে থাকে, এগুলো সাধারণত গ্রহণযোগ্য হয় না, যেহেতু অপরিকল্পিত তাই এগুলো বিভ্রান্তির সৃষ্টি করে।

যৌক্তিক কোহেশনঃ মডিউলে যৌক্তিকভাবে সাজানো এবং একসাথে রাখা উপাদানের ক্ষেত্রে যৌক্তিক কোহেশন প্রযোজ্য।

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

প্রথাগত কোহেশনঃ যখন মডিউলের অংশগুলো একসাথে থাকে কিন্তু আলাদাভাবে কাজ করে কোনও কার্যক্রম সম্পাদনের জন্য তখন তাকে প্রথাগত কোহেশন বলে।

যোগাযোগ কোহেশনঃ যখন মডিউলের অংশগুলো একসাথে থাকে এবং একই ডাটায় ক্রমানুসারে কাজ করে তখন তাকে যোগাযোগ কোহেশন বলে।

ক্রমানুযায়ী কোহেশনঃ যখন মডিউলের অংশগুলো একসাথে থাকে এবং একটি অংশের ফলাফল(আউটপুট) অন্য অংশের ইনপুট, সেটি তখন ক্রমানুযায়ী কোহেশন।

ফাংশনাল কোহেশনঃ এটি শীর্ষ পর্যায়ের কোহেশন, এবং সর্বাধিক প্রত্যাশিত। ফাংশনাল কোহেশনে মডিউলের অংশগুলো একসাথে থাকে কারণ এটি একটি মাত্র সুস্থিত ফাংশনের জন্য কাজ করে। এটি পুনরায়ও ব্যবহার করা যায়।

কাপলিং

কোন মডিউলের উপাদানের অন্তঃনির্ভরশীলতার মাত্রাকে কাপলিং বলে। পাঁচ ধাপের কাপলিং দেখা যায়,

উপাদানের ক্ষেত্রে কাপলিংঃ যখন কোনও মডিউল অন্য কোন মডিউলে সরাসরি উপাদান প্রবেশ বা পরিবর্তন বা অন্য কোন মডিউলে প্রেরণ করে তবে সেটিকে উপাদানের ক্ষেত্রে কাপলিং বলে।

কমন কাপলিংঃ যদি কয়েকটি মডিউল কোন বৈশ্বিক ডাটা পড়ে বা লেখে তবে তাকে কমন কাপলিং বলে।

কন্ট্রোল কাপলিংঃ দুটি মডিউলের মধ্যে একটি যদি অন্যটির ফাংশন পরিবর্তন বা প্রভাবিত করে তবে তাকে কন্ট্রোল কাপলিং বলে।

স্ট্যাম্প কাপলিংঃ যদি একাধিক মডিউল কমন ডাটা কাঠামো ব্যবহার করে এবং ভিন্ন ভিন্ন অংশের উপর কাজ করে তবে এটিকে স্ট্যাম্প কাপলিং বলে।

ডাটা কাপলিংঃ যদি দুটি মডিউল পরস্পরের সাথে ডাটা আদান প্রদান করার জন্য(প্যারামিটার হিসাবে) যোগাযোগ করে তবে তাকে ডাটা কাপলিং বলে। প্যারামিটার হিসাবে ডাটা আদান প্রদান করলে গ্রহণকারী মডিউল গৃহীত ডাটার সবটুকুই ব্যবহার করতে পারে।

আদর্শগত ভাবে কোন কাপলিংকেই সেরা ধরা যায় না।

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

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

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%a7%87%e0%a6%b0-%e0%a6%ac%e0%a7%87%e0%a6%b8%e0%a6%bf%e0%a6%95/

Leave a Reply