সফটওয়ার রিকোয়ারমেন্ট . Software Requirements

সফটওয়ার রিকোয়ারমেন্ট

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

 

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

রিকোয়ারমেন্ট প্রকৌশল

গ্রাহকের কাছ থেকে রিকোয়ারমেন্ট যোগাড় করা, পরে সেগুলোকে বিশ্লেষণ করে লিপিবদ্ধ করার প্রক্রিয়াকে রিকোয়ারমেন্ট প্রকৌশল বলা হয়।

রিকোয়ারমেন্ট প্রকৌশলের মূল উদ্দেশ্য হল জটিল এবং বর্ণনামূলক ‘সিস্টেম রিকোয়ারমেন্ট স্পেসিফিকেসন’ নামক ডকুমেন্ট তৈরি ও অনুসরণ করা।

রিকোয়ারমেন্ট প্রকৌশলের প্রক্রিয়া

এটি চার ধাপের প্রক্রিয়া যার মধ্যে আছে,

• সম্ভাব্যতা নিরূপণ,
• রিকোয়ারমেন্ট জড়ো করা,
• সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশন,
• সফটওয়ার রিকোয়ারমেন্ট চূড়ান্তকরণ।

সম্ভাব্যতা নিরূপণ

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

ফলশ্রুতিতে আমরা যা পাই তা হল একটি সম্ভাব্য স্টাডি রিপোর্ট যাতে ব্যবস্থাপনার উদ্দেশে কিছু সুপারিশ ও মন্তব্য থাকে যা নির্দেশ করে প্রকল্পটি হাতে নেয়া হবে কি হবে না।

রিকোয়ারমেন্ট জড়ো করা

যদি সম্ভাব্য স্টাডি রিপোর্ট প্রকল্পটি হাতে নেয়ার সুপারিশ করে তবে গ্রাহকদের থেকে তথ্য নিয়ে রিকোয়ারমেন্ট সংগ্রহ করতে হয়। বিশ্লেষক ও প্রকৌশলীরা গ্রাহক ও কলাকুশলীদের সাথে তাদের ধারণা নিয়ে তাদের কি সফটওয়ার লাগবে, তাতে কি কি থাকতে হবে এসব নিয়ে আলোচনা করেন।

সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশন

সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশনকে এখানে SRS (Software Requirement Specification) নামে চিহ্নিত করছি, এটি মূলত একটি ডকুমেন্ট যেটি বিশ্লেষকদের দ্বারা গ্রাহকদের চাহিদা মাথায় রেখে নির্ধারণ করা হয়। SRS ঠিক করে কীভাবে অভীষ্ট সফটওয়ার হার্ডওয়ারের সাথে কাজ করবে, কীভাবে অভ্যন্তরীণ ইন্টারফেস ও সিস্টেমের সময়, বিভিন্ন প্ল্যাটফরমের সাথে কীভাবে কাজ করবে, রক্ষণাবেক্ষণ ও সিস্টেম নষ্ট হলে কীভাবে তা পুনরুদ্ধার করা যাবে, নিরাপত্তা, মান, সীমাবদ্ধতা ইত্যাদি কীভাবে সামলানো হবে।

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

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

সফটওয়ার রিকোয়ারমেন্ট চূড়ান্তকরণ

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

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

রিকোয়ারমেন্ট জানার প্রক্রিয়া

রিকোয়ারমেন্ট প্রকাশের প্রক্রিয়াকে নিচের ধাপগুলোর মাধ্যমে প্রকাশ করা যায়।

• রিকোয়ারমেন্ট সংগ্রহ করাঃ বিশ্লেষক ও প্রকৌশলীরা গ্রাহক ও কলাকুশলীদের সাথে আলোচনা করে রিকোয়ারমেন্ট সংগ্রহ করে।
• রিকোয়ারমেন্ট সংঘটিত করাঃ বিশ্লেষক ও প্রকৌশলীরা সুবিধা, গুরুত্ব ও উপযোগিতা অনুসারে রিকোয়ারমেন্টগুলোকে সংঘটিত করে।
• নিগোসিয়েশন ও আলোচনাঃ রিকোয়ারমেন্ট সমস্যাপূর্ণ হলে বা কোনও বিতর্কিত ইস্যু থাকলে স্টকহোল্ডাররা নিজেদের মধ্যে নিগোসিয়েশন ও আলোচনা করে সেগুলো ঠিক করেন।

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

 

ডকুমেন্টেশন

ফরমাল ও ইনফরমাল, ফাংশনাল ও নন ফাংশনাল সবকিছুই কাগজে কলমে সংরক্ষণ করা হয় যেন পরবর্তী প্রক্রিয়াগুলোতে ব্যবহার করা যায়।

 

রিকোয়ারমেন্ট জানার কৌশল

গ্রাহক, ব্যবহারকারী, কলাকুশলী, সিস্টেম সংশ্লিষ্ট লোকজন যাদের সম্পৃক্ততা আছে প্রত্যাশিত সফটওয়ারের সঙ্গে তাদের সাথে আলোচনা করে প্রত্যাশিত সফটওয়ারের রিকোয়ারমেন্ট জানতে বা স্থির করতে হয়।

রিকোয়ারমেন্ট জানার অনেকগুলো পদ্ধতি আছে,

সাক্ষাৎকার

রিকোয়ারমেন্ট জানার খুব ভাল একটি পদ্ধতি হল সাক্ষাৎকার নেয়া, সংস্থা যে ধরণের সাক্ষাৎকারের ব্যবস্থা করতে পারে সেগুলো হল,

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

জরীপ

সংস্থাগুলো সম্পৃক্ত লোকজনের সাথে তাদের প্রত্যাশা ও রিকোয়ারমেন্ট নিয়ে আলোচনা করে জরীপ পরিচালনা করে থাকে।

প্রশ্নমালা

পূর্ব নির্ধারিত প্রশ্নের সেট ও সম্ভাব্য উত্তরের তালিকা সম্পৃক্ত লোকজনের কাছে দেয়া হয় উত্তর দেয়ার জন্য।

কাজ বিশ্লেষণ

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

ডোমেইন বিশ্লেষণ

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

ব্রেইনস্টরমিং

অনিয়ন্ত্রিত বিতর্ক আয়োজন করা যার ফলাফল পরবর্তী বিশ্লেষণের জন্য সংরক্ষিত রাখা হয়।

প্রোটোটাইপিং

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

পর্যবেক্ষণ

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

 

সফটওয়ার রিকোয়ারমেন্টের বৈশিষ্ট্য

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

• সচ্ছ
• নির্ভুল
• সামঞ্জস্যপূর্ণ
• সুসংগত
• বোধগম্য
• পরিবর্তনযোগ্য
• প্রতিপাদ্য
• অগ্রাধিকারযোগ্য
• দ্ব্যর্থহীন
• অনুসরণযোগ্য
• নির্ভরযোগ্য সূত্র সম্পন্ন।

আমাদের জানা থাকা উচিৎ কি ধরণের রিকোয়ারমেন্ট আমরা রিকোয়ারমেন্ট প্রকাশের প্রক্রিয়ায় পেতে পারি এবং সফটওয়ার সিস্টেমে কি ধরণের রিকোয়ারমেন্ট প্রত্যাশিত।

সফটওয়ার রিকোয়ারমেন্টকে দুই ভাগে ভাগ করা যেতে পারে,

ফাংশনাল রিকোয়ারমেন্ট

সফটওয়ারের ফাংশনাল ধারনার রিকোয়ারমেন্টগুলো এই শ্রেণীতে পড়ে, এরা সফটওয়ারের সিস্টেমে থেকে ফাংশন ও ফাংশনালিটি বিবৃত করে।

উদাহরণ,

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

ননফাংশনাল রিকোয়ারমেন্ট

সফটওয়ারের ননফাংশনাল ধারনার রিকোয়ারমেন্টগুলো এই শ্রেণীতে পড়ে, এগুলো সফটওয়ারের প্রত্যাশিত বৈশিষ্ট্যের মধ্যে পড়ে,

• নিরাপত্তা,
• লগইন,
• স্টোরেজ,
• কনফিগারেশন,
• পারফরমেন্স,
• মূল্য,
• আন্তঃক্রিয়া,
• নমনীয়তা,
• দুর্যোগ ব্যবস্থাপনা,
• প্রবেশযোগ্যতা

রিকোয়ারমেন্ট যৌক্তিকভাবে যে শ্রেণীগুলোতে পড়ে তা হল,

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

সফটওয়ার ডেভলপ করার সময় ‘আবশ্যিক’ তালিকা অবশ্যই বাস্তবায়িত করতে হবে, ‘ থাকা উচিৎ’ তালিকা সংশ্লিষ্ট ব্যক্তিদের বিতর্কের উপলক্ষ, ‘থাকা ভাল ও উইশ লিস্ট’ তালিকা সফটওয়ার আপডেটের জন্য সহায়ক হতে পারে।

 

ইউজার ইন্টারফেস রিকোয়ারমেন্ট

ইউজার ইন্টারফেস রিকোয়ারমেন্ট কোনও সফটওয়ার বা হার্ডওয়ার বা হাইব্রিড সিস্টেমের জন্য খুবই গুরুত্বপূর্ণ। কোনও সফটওয়ার ব্যপকভাবে গৃহীত হয় তখনি যখনঃ

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

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

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

 

সফটওয়ার সিস্টেম বিশ্লেষক

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

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

 

সফটওয়ার ম্যাট্রিক্স ও পরিমাপ

সফটওয়ার পরিমাপ একটি প্রক্রিয়া যেটিতে সফটওয়ারের বিভিন্ন সুচকে পরিমাপ করা ও প্রকাশ করা হয় ।
সফটওয়ার ম্যাট্রিক্স সফটওয়ার প্রক্রিয়া ও পণ্যের সাপেক্ষে বিভিন্ন মাপ দিয়ে থাকে।
সফটওয়ার পরিমাপ সফটওয়ার প্রকৌশলের একটি মৌলিক প্রক্রিয়া। এটি শুধু সফটওয়ার ডেভলপমেন্টের প্রসেসকে নিয়ন্ত্রণই করে না, চূড়ান্ত পণ্যের মান ঠিক রাখতেও ভুমিকা রাখে।

Tom DeMarco (যিনি একজন সফটওয়ার প্রকৌশলী) এর মতে, ‘যেটি মাপা যাবে না তা নিয়ন্ত্রণও করা যাবে না।‘ এথেকেই বোঝা যায় সফটওয়ার পরিমাপ কতটুকু গুরুত্বপূর্ণ।

কয়েকটি সফটওয়ার ম্যাট্রিক্স নিয়ে আলোচনা করা যাক,

আকার বিষয়ক ম্যাট্রিক্স

LOC (Lines of Code) সাধারণত অনেক বেশি সোর্স কোডের পরিমাপে ব্যবহার করা হয়, KLOC রূপে প্রকাশ করা হয়। ফাংশন পয়েন্টের সংখ্যা সফটওয়ারের ফাংশনালিটির আকার প্রকাশ করে।

জটিলতা বিষয়ক ম্যাট্রিক্স

McCabe’s Cyclomatic complexity কোন প্রোগ্রামের স্বাধীন পাথের (path) নাম্বারের আপার বাউন্ডের (upper bound of the number) পরিমাপ করে, যেটি প্রোগ্রামের মডিউলের জটিলতার সূচক। এটি কন্ট্রোল ফ্লো গ্রাফ(control flow graph) ব্যবহার করে গ্রাফ থিওরি ধারণা প্রকাশ করে।

মান বিষয়ক ম্যাট্রিক্স

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

প্রক্রিয়া বিষয়ক ম্যাট্রিক্স

SDLC এর বিভিন্ন ধাপে ব্যবহৃত যন্ত্রপাতি ও পদ্ধতি, এবং সফটওয়ার ডেভলপমেন্টের পারফর্মেন্স ইত্যাদি হল প্রক্রিয়া বিষয়ক ম্যাট্রিক্স।

রিসোর্স বিষয়ক ম্যাট্রিক্স

সময়,শ্রম ও ব্যবহৃত রিসোর্স ইত্যাদি হল রিসোর্স বিষয়ক ম্যাট্রিক্স।

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

কাপলিং

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

তথ্য গুদামজাত করা ও ব্যবসা ইন্টেলিজেন্স

তথ্য গুদামজাত করা ও ব্যবসা ইন্টেলিজেন্স

By: Amirul Islam Arif

 

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

 

 

এই সকল বিষয় গুলো প্রশমিত করতে, আধুনিক ব্যবসার নেতৃস্থানীয় যেমনঃ লস আলামোস ন্যাশনাল ল্যাবস, এম আই টি লিঙ্কন ল্যাব, কক্স কমনিকেশন, এবং আরও অনেকে তাদের ক্রমবর্ধমান তথ্যগুদাম পরিকাঠামোর ক্ষমতাবৃদ্ধি করতে বেছে নিয়েছে মাইএসকিউএল।

 

মাইএসকিউএল সহজে হ্যান্ডেল করতে স্বতন্ত্র ডিজাইন করা হয়েছে । সবচেয়ে সাধারণ তথ্যগুদাম ব্যবহারের ক্ষেত্রে:

  • Data Marts তথ্য মার্কেট
  • Traditional Data Warehouses গতানুগতিক তথ্যগুদাম
  • Large Historical/Archive Data Warehouses বৃহৎ ঐতিহাসিক/সংরক্ষাণাগার তথ্যগুদাম
  • Real Time Data Warehouses রিয়েল টাইম ডেটা ওয়ারহাউস

 

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

এর মধ্যে রয়েছে:

 

  • Data/Index partitioning (range, hash, key, list, composite) in MySQL 5.1 and above ডেটা / সূচক পার্টিশন প্রণালী (পরিসীমা, হ্যাশ, কী, তালিকা, যৌগিক) মাইএসকিউএল 5.1 এবং এর উপরে ।
  • No practical storage limits with automatic storage management স্বয়ংক্রিয় স্টোরেজ পরিচালনার সঙ্গে কোন ব্যবহারিক স্টোরেজ সীমা নেই।
  • Built-in Replication বিল্ট ইন রেপ্লিকেশন।
  • Strong indexing support (B-tree, fulltext, clustered, hash, GIS)   স্ট্রং ইন্ডেক্স সাপোর্ট (বি ট্রি, ফুলটেক্সট, ক্লাস্টার, হ্যাশ, জিআইএস)
  • Multiple, configurable data/index caches একাধিক কনফিগার তথ্য/সূচক ক্যাশেশ
  • Pre-loading of data into caches প্রিলোডেড অফ ডাটা ইনটু ক্যাশেশ
  • Unique query cache (caches result set + query; not just data) স্বতন্ত্র কুয়ারি ক্যাশেশ
  • Parallel data load সমান্তরাল তথ্য লোড
  • Multi-insert DML      মাল্টি সন্নিবেশ DML
  • Read-only tables শুধুমাত্র পাঠযোগ্য টেবিল
  • Cost-based optimizer কস্ট-বেজ অপ্টিমাইজার
  • Wide platform support   ওয়াইড প্ল্যাটফর্ম সমর্থন

 

 

স্থানীয় স্টোরেজ ইঞ্জিন

মাইএসকিউএল বর্তমানে তার নিজস্ব কিছু সংখ্যক স্থানীয় সংগ্রহস্থল ইঞ্জিন প্রদান করা হয়:

  • InnoDB
  • MyISAM
  • Cluster
  • Federated
  • Archive
  • Merge
  • Memory
  • CSV
  • Blackhole

 

MongoDB PHP. MongoDB পিএইচপি

MongoDB পিএইচপি

নয়ন চন্দ্র দত্ত

 

পিএইচপি এর সঙ্গে MongoDB ব্যবহার করার জন্য আপনাকে MongoDB পিএইচপি ড্রাইভার ব্যবহার করতে হবে। নিচের লিঙ্ক থেকে ড্রাইভারটি ডাউনলোড করে নিনঃ
https://s3.amazonaws.com/drivers.mongodb.org/php/index.html
সর্বশেষ রিলিজ ডাউনলোড করতে ভুলবেন না। এখন আর্কাইভটি আনজিপ করুন এবং আপনার পিএইচপি এক্সটেনশন ডিরেক্টরির (“ext” ডিফল্টভাবে) মধ্যে php_mongo.dll এ এবং নিচের লাইন্টি php.ini এ স্থাপন করুনঃ

extension=php_mongo.dll

একটি সংযোগ তৈ্রী করুন এবং একটি ডাটাবেস নির্বাচন করুন। একটি সংযোগ করতে আপনাকে ডাটাবেসের নাম নির্দিষ্ট করতে হবে, যদি ডেটাবেস উপস্থিত না থাকে তাহলে MongoDB স্বয়ংক্রিয়ভাবে এটি তৈরি করবে।
ডেটাবেসের সাথে সংযোগ করার জন্য কোড স্নিপেট নিম্নরূপ হবেঃ

php
// connect to mongodb
$m = new MongoClient();
echo “Connection to database successfully”;
// select a database
$db = $m->mydb;
echo “Database mydb selected”;
?>

যখন প্রোগ্রাম নিষ্পন্ন হয় তখন তার ফলাফল নিম্নরূপ হবেঃ

Connection to database successfully
Database mydb selected

কালেকশন তৈরি করা
একটি কালেকশন তৈরি করার জন্য কোড স্নিপেট নিম্নরূপ হবেঃ

php
// connect to mongodb
$m = new MongoClient();
echo “Connection to database successfully”;
// select a database
$db = $m->mydb;
echo “Database mydb selected”;
$collection = $db->createCollection(“mycol”);
echo “Collection created succsessfully”;
?>

যখন প্রোগ্রাম নিষ্পন্ন হয় তখন তার ফলাফল নিম্নরূপ হবেঃ

Connection to database successfully
Database mydb selected
Collection created succsessfully

ডকুমেন্ট প্রবেশ করান

MongoDB তে একটি ডকুমেন্ট প্রবেশ করাতে হলে insert() পদ্ধতি ব্যবহৃত হয়।
ডকুমেন্ট প্রবেশ করানোর জন্য কোড স্নিপেট নিম্নরূপ হবেঃ

php
// connect to mongodb
$m = new MongoClient();
echo “Connection to database successfully”;
// select a database
$db = $m->mydb;
echo “Database mydb selected”;
$collection = $db->mycol;
echo “Collection selected succsessfully”;
$document = array(
“title” => “MongoDB”,
“description” => “database”,
“likes” => 100,
“url” => “http://www.tutorialspoint.com/mongodb/”,
“by”, “tutorials point”
);
$collection->insert($document);
echo “Document inserted successfully”;
?>

যখন প্রোগ্রাম নিষ্পন্ন হয় তখন তার ফলাফল নিম্নরূপ হবেঃ

Connection to database successfully
Database mydb selected
Collection selected succsessfully
Document inserted successfully

সব ডকুমেন্ট খুজে পেতে

কালেকশন থেকে সব ডকুমেন্ট সিলেক্ট করতে find() পদ্ধতি ব্যবহৃত হয়।
সব ডকুমেন্ট সিলেক্ট করার জন্য কোড স্নিপেট নিম্নরূপ হবেঃ

<?php
// connect to mongodb
$m = new MongoClient();
echo “Connection to database successfully”;
// select a database
$db = $m->mydb;
echo “Database mydb selected”;
$collection = $db->mycol;
echo “Collection selected succsessfully”;

$cursor = $collection->find();
// iterate cursor to display title of documents
foreach ($cursor as $document) {
echo $document[“title”] . “\n”;
}
?>

যখন প্রোগ্রাম নিষ্পন্ন হয় তখন তার ফলাফল নিম্নরূপ হবেঃ

Connection to database successfully
Database mydb selected
Collection selected succsessfully
{
“title”: “MongoDB”
}

ডকুমেন্ট আপডেট করা

ডকুমেন্ট আপডেট করার জন্য update() পদ্ধতি ব্যবহার করতে হবে।
নিচে দেওয়া উদাহরণে আমরা প্রবেশিত ডকুমেন্টের টাইটেল MongoDB Tutorial এ আপডেট করব।
ডকুমেন্ট আপডেট করার জন্য কোড স্নিপেট নিম্নরূপ হবেঃ

<?php
// connect to mongodb
$m = new MongoClient();
echo “Connection to database successfully”;
// select a database
$db = $m->mydb;
echo “Database mydb selected”;
$collection = $db->mycol;
echo “Collection selected succsessfully”;

// now update the document
$collection->update(array(“title”=>”MongoDB”), array(‘$set’=>array(“title”=>”MongoDB Tutorial”)));
echo “Document updated successfully”;
// now display the updated document
$cursor = $collection->find();
// iterate cursor to display title of documents
echo “Updated document”;
foreach ($cursor as $document) {
echo $document[“title”] . “\n”;
}
?>

যখন প্রোগ্রাম নিষ্পন্ন হয় তখন তার ফলাফল নিম্নরূপ হবেঃ

Connection to database successfully
Database mydb selected
Collection selected succsessfully
Document updated successfully
Updated document
{
“title”: “MongoDB Tutorial”
}

ডকুমেন্ট ডিলিট করা বা মুছে ফেলা

একটি ডকুমেন্ট ডিলিট করতে হলে remove() পদ্ধতি ব্যবহার করতে হবে।
নিচে দেওয়া উদাহরণে আমরা MongoDB Tutorial টাইটেলের ডকুমেন্ট ডিলিট করব।
ডকুমেন্ট ডিলিট করার জন্য কোড স্নিপেট নিম্নরূপ হবেঃ

<?php
// connect to mongodb
$m = new MongoClient();
echo “Connection to database successfully”;
// select a database
$db = $m->mydb;
echo “Database mydb selected”;
$collection = $db->mycol;
echo “Collection selected succsessfully”;

// now remove the document
$collection->remove(array(“title”=>”MongoDB Tutorial”),false);
echo “Documents deleted successfully”;

// now display the available documents
$cursor = $collection->find();
// iterate cursor to display title of documents
echo “Updated document”;
foreach ($cursor as $document) {
echo $document[“title”] . “\n”;
}
?>

যখন প্রোগ্রাম নিষ্পন্ন হয় তখন তার ফলাফল নিম্নরূপ হবেঃ

Connection to database successfully
Database mydb selected
Collection selected succsessfully
Documents deleted successfully

উপরের দেওয়া উদাহরণে দ্বিতীয় প্যারামিটার বুলিয়ান টাইপের এবং remove() পদ্ধতিতে justOne এর জন্য ব্যবহৃত হয়েছে।
MongoDB পদ্ধতির অবশিষ্ট findOne(), save(), limit(), skip(), sort() ইত্যাদি একইরকম কাজ করে যা উপরের উদাহণে ব্যাখ্যা করা হয়েছে।

MongoDB Create Backup. MongoDB ব্যাকআপ তৈরি করা

MongoDB ব্যাকআপ তৈরি করা

নয়ন চন্দ্র দত্ত

 

কি খবর সবার? আশা করছি সবাই ভাল আছেন। আজ আমি হাজির হয়েছি একটি নতুন টিউটোরিয়াল নিয়ে। আজ আমরা দেখব কীভাবে MongoDB ব্যাকআপ তৈরি করা যায়। তাহলে
আর কথা না বাড়িয়ে আজকের টিউটোরিয়াল শুরু করি।

MongoDB তথ্য ডাম্প

MongoDB তে ডেটাবেসের ব্যাকআপ তৈরি করতে আপনাকে mongodump কমান্ড ব্যবহার করতে হবে। এই কমান্ড ডাম্প ডিরেক্টরির মধ্যে আপনার সার্ভারের সব তথ্য ডাম্প করবে।
এখানে অনেক অপশন আছে যা দ্বারা আপনি তথ্যের পরিমাণ সীমাবদ্ধ বা আপনার দূরবর্তী সার্ভারে ব্যাকআপ তৈরি করতে পারেন।

সিনট্যাক্স

mongodump কমান্ড মৌলিক বাক্য গঠন নিম্নরূপঃ
>mongodump

উদাহরণ
আপনার mongod সার্ভার আরম্ভ করুন। অনুমেয় যে আপনার mongod সার্ভার এ লোকালহোস্ট চলমান। এবং পোর্ট 27017 । এখন একটি কমান্ড প্রম্পট খুলুন এবং উদাহরণস্বরূপ আপনার
MongoDB বিন ডিরেক্টরিতে যান এবং mongodump কমান্ড টাইপ করুন। নিম্নলিখিতভাবে mycol collectioin বিবেচনা করুনঃ
>mongodump

কমান্ড 127.0.0.1 এ চলমান সার্ভারের সাথে এবং পোর্ট 27017 সংযোগ করবে এবং ডিরেক্টরিতে আপনার সার্ভারে সব তথ্য ফিরিয়ে আনুন।
এখানে অনেক available অপশন আছে যা Mongodump কমান্ড এর সাথে ব্যবহার করা যেতে পারে। শুধুমাত্র নির্দিষ্ট ডেটাবেসের নির্দিষ্ট পথে এই কমান্ড এ ব্যাকআপ হবে ।

সিনট্যাক্সঃ mongodump –host HOST_NAME –port PORT_NUMBER
বর্ণনাঃ এই কমান্ড উদাহরণস্বরূপ mongod এর সব ডেটাবেস ব্যাকআপ করবে
উদাহরণঃ mongodump –host tutorialspoint.com –port 27017

সিনট্যাক্সঃ mongodump –dbpath DB_PATH –out BACKUP_DIRECTORY
উদাহরণঃ mongodump –dbpath /data/db/ –out /data/backup/

সিনট্যাক্সঃ mongodump –collection COLLECTION –db DB_NAME
বর্ণনাঃ এই কমান্ড উদাহরণস্বরূপ mongod এর সব ডেটাবেস ব্যাকআপ করবে
উদাহরণঃ mongodump –collection mycol –db test

Restore বা তথ্য পুনরুদ্ধার

ব্যাকআপ করতে MongoDB এর mongorestore কমান্ড ব্যবহার করা হয় । এই কমান্ড ব্যাক আপ ডিরেক্টরি থেকে সমস্ত তথ্য পুনরুদ্ধার করবে। Mongorestore এর বেসিক সিনট্যাক্স বা বাক্য
গঠন এর জন্য কমান্ড হচ্ছে-
>mongorestore

আশা করছি সবার ভাল লেগেছে আজকের টিউটোরিয়াল। পরবর্তিতে MongoDB বিষয়ক আরো টিউটোরিয়াল নিয়ে হাজির হব। আজকের মত এই পর্যন্তই আর কোন সমস্যা হলে নিশ্চই কমেন্ট করবেন ।
http://Bangla.SaLearningSchool.com

MongoDB Sharding শেয়ার্ডিং

MongoDB Sharding শেয়ার্ডিং

-পায়েল চৌধুরী

 

শেয়ার্ডিং হল একাধিক মেশিন জুড়ে তথ্য রেকর্ড সংরক্ষণ করার একটি প্রক্রিয়া এবং এটি তথ্য বৃদ্ধির চাহিদা পূরণের করতে MongoDB এর একটি পন্থা. তথ্যের আকার বৃদ্ধির কারণে তথ্য সংরক্ষণের জন্য শুধু এএকক মেশিনে তথ্য সংরক্ষণ করা যেমন হয়তো গ্রহণযোগ্য না হতে পারে, তেমনি মেশিন কতৃক তথ্য পঠন এবং লিখন প্র্রক্রিয়ার হারও পর্যাপ্ত নাও হতে পারে. হরাইজেন্টাল স্কেলিং এর দ্বারা শেয়ার্ডিং এই সমস্যার সমাধান করে, তথ্যের পরিমাণ বৃদ্ধি পেলে মেশিনের সংখ্যা বাড়ানোর মাধ্যমে লিখন এবং পঠন কার্যক্রমের চাহিদা শেয়ার্ডিং এর দ্বারা পূরণ করা যায়.

শেয়ার্ডিং কেন?

• প্র্রতিলিপির জন্য সকল লিখন মাস্টার নড এ যায়
• বিলম্ব সংবেদনশীল প্রশ্ন(Latency sensitive queries) এখনও মাস্টার এ যায়
• একক প্রতিরূপ সেট এ 12 নোড এর সীমাবদ্ধতা আছে
• সক্রিয় ডেটা সেটটি বড় যখন মেমোরির আকার বড় করা সম্ভব না
• স্থানীয় ডিস্ক যথেষ্ট বড় না বা পর্যাপ্ত নয়
• উল্লম্ব আরোহী(Vertical scaling) অত্যন্ত ব্যয়বহুল

মংগোডিবিতে শেয়ার্ডিং (Sharding in MongoDB)

নীচে চিত্র তে sharded ক্লাস্টার ব্যবহার করে মংগোডিবিতে শেয়ার্ডিং দেখানো হল-

উপরে দেওয়া চিত্রে তিনটি প্রধান উপাদান আছে যাদের বর্ণণা নীচে দেয়া হল:

Shards: Shards তথ্য ধারণ করার জন্য ব্যবহার করা হয়.এটা তথ্য প্রাপ্তি ও মানের ব্যাপারে উচ্চ মান বজায় রাখে. উৎপাদন পরিবেশে প্রত্যেক শেয়ার্ডস( Shards) পৃথক একটি রেপ্লিকা সেট হিসাবে কাজ করে.

কনফিগ সার্ভারস: কনফিগ সার্ভারস ক্লাস্টারস এর মেটাডাটা সংরক্ষণ করে.শেয়ার্ডস এ রক্ষিত ক্লাস্টার ডাটা সেট এর ম্যাপিং এ ডাটা ধারণ করে. ক্যোয়ারী রাউটার নির্দিষ্ট Shards অপারেশন লক্ষ্য করে এই মেটাডাটা ব্যবহার করে. উৎপাদন পরিবেশে sharded ক্লাস্টার ঠিক 3টি কনফিগ সার্ভার আছে.

কোয়েরি রাউটার (Query Routers): কোয়েরি রাউটার মূলত মংগোস ইন্সস্ট্যান্স হয়,যা গ্রাহকের এপ্লিকেশনের সঙ্গে ইন্টারফেস হিসাবে কাজ করে এবং যথাযথ শেয়ার্ডস এ প্রত্যক্ষ ভাবে কাজ করে. কোয়েরি রাউটার কার্যক্রম চালানোর জন্য শেয়ার্ডস নির্দিষ্ট করে দেয় এবং ডাটা প্রক্রিয়াজাত করে,তারপর গ্রাহকদের ফলাফল ফেরত প্রদান করে.ক্লায়েন্ট অনুরোধ লোডকে বিভক্ত করার জন্য একটি sharded ক্লাস্টার এ একাধিক কোয়েরি রাউটার ধারণ করতে পারে.

C – Constants and Literals. সি প্রোগ্রামিঙে লিটারেল ও ধ্রুবক

সি প্রোগ্রামিঙে লিটারেল ও ধ্রুবক

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

 

ধ্রুবকের মান কোন প্রোগ্রামে সব সময়েই একই থাকে, একে লিটারেলও বলে। ধ্রুবক যে কোন মৌলিক ডাটা টাইপের হতে পারে যেমন পূর্ণ সংখ্যা ধ্রুবক, ফ্লোটিং ধ্রুবক, ক্যারেকটার ধ্রুবক, স্ট্রিং ধ্রুবক ইত্যাদি। এগুলো সাংখ্যিক ধ্রুবকও হতে পারে। ধ্রুবক অন্যান্য চলকের মতই ব্যবহৃত হয় কেবল ধ্রুবক হিসেবে সংজ্ঞায়িত হওয়ার পর এদের মানের কোন পরিবর্তন হবে না।
পূর্ণসংখ্যা ধ্রুবকঃ পূর্ণ সংখ্যা ধ্রুবক দশমিক, অকট্যাল, হেক্সাডেসিমেল ইত্যাদি রকমের হতে পারে। এক্ষেত্রে উপসর্গ ভিত্তি নিশ্চিত করে, হেক্সাডেসিমেলের জন্য 0x অথবা 0X , অকট্যালের জন্য 0, এবং দশমিকের জন্য কিছুই না। পূর্ণ সংখ্যা ধ্রুবকে সাফিক্সও থাকতে পারে যা মূলত U ও L এর সমন্বয় যা unsigned ও long নির্দেশ করে, সাফিক্স ছোট হাতের বা বড় হাতের, এবং যেকোনভাবে সজ্জিত হতে পারে।পূর্ণসংখ্যা ধ্রুবকের কয়েকটি উদাহরণ

212 /* Legal */
215u /* Legal */
0xFeeL /* Legal */
078 /* Illegal: 8 is not an octal digit */
032UU /* Illegal: cannot repeat a suffix */
আরও কয়েকটি ধরনের পূর্ণসংখ্যা ধ্রুবক হল,
85 /* decimal */
0213 /* octal */
0x4b /* hexadecimal */
30 /* int */
30u /* unsigned int */
30l /* long */
30ul /* unsigned long */

ফ্লোটিং ধ্রুবকঃ ফ্লোটিং ধ্রুবকে পূর্ণসংখ্যা অংশ,দশমিক অংশ, ভগ্নাংশ ও সূচক অংশ থাকে, এদেরকে সূচক বা দশমিক যেকোনো আকারে প্রকাশ করা যায়। দশমিক আকারে প্রকাশ করার সময় দশমিক বা সূচক, বা উভয়ই অন্তর্ভুক্ত করতে হবে, সূচক আকারে প্রকাশ করার সময় পূর্ণসংখ্যা বা ভগ্নাংশ, অথবা উভয়ই অন্তর্ভুক্ত করতে হবে। এই সূচক বা signed exponent কে e বা E দ্বারা প্রকাশ করা হয়। ফ্লোটিং ধ্রুবকের কয়েকটি উদাহরণ নিচে দেয়া হল।
3.14159 /* Legal */
314159E-5L /* Legal */
510E /* Illegal: incomplete exponent */
210f /* Illegal: no decimal or exponent */
.e55 /* Illegal: missing integer or fraction */

ক্যারেকটার ধ্রুবকঃ ক্যারেকটার ধ্রুবক সিঙ্গেল কোটের মধ্যে ‘x’ দ্বারা বোঝানো হয়,সাধারণ চলক রুপে
char type এ অন্তর্ভুক্ত হয়ে থাকে। ক্যারেকটার ধ্রুবক plain character (যেমন ‘x’),escape sequence (যেমন ‘\t’), অথবা universal character (যেমন’\u02C0′)হতে পারে। সি প্রোগ্রামিঙে কিছু নির্দিষ্ট ক্যারেকটার আছে যা backslash ব্যবহার করে প্রকাশ করা হয়, যারা ভিন্ন অর্থ প্রকাশ করে থাকে যেমন newline (\n) অথবা tab (\t)ইত্যাদি। এরকম কিছু escape sequence codes নিচে দেয়া হল।
Escape sequence Meaning
\\ \ character
\’ ‘ character
\” ” character
\? ? character
\a Alert or bell
\b Backspace
\f Form feed
\n Newline
\r Carriage return
\t Horizontal tab
\v Vertical tab
\ooo Octal number of one to three digits
\xhh . . . Hexadecimal number of one or more digits

escape sequence ক্যারেকটারের কিছু উদাহরণ দেয়া যাক,
#include <stdio.h>

int main()
{
printf(“Hello\tWorld\n\n”);

return 0;
}
কোডগুলো সঠিকভাবে লিখা হলে তা যে ফল দেখাবে তা হল,
Hello World

স্ট্রিং ধ্রুবকঃ স্ট্রিং ধ্রুবককে ডবল কোটের(“”) মাধ্যমে প্রকাশ করা হয়,এর ভিতরে সেই সব ক্যারেকটার রাখা হয় যারা মূলত ক্যারেকটার ধ্রুবকের সাথে সাদৃশ্যপূর্ণ, যেমন plain characters, escape sequences, এবং universal characters। স্ট্রিং ধ্রুবক ব্যবহার করে লম্বা লাইনকে ছোট ছোট লাইনে পরিনত করা যায়, এবং খালি জায়গা ব্যবহার করে এদের পৃথক করতে হয়। একই ধরনের তিনটি স্ট্রিং ধ্রুবক উদাহরণে দেখানো হল।
“hello, dear”

“hello, \

dear”

“hello, ” “d” “ear”
ধ্রুবক নির্দেশ করাঃ সি প্রোগ্রামিঙে দুটি সাধারণ উপায়ে ধ্রুবক নির্দেশ করা হয়, #define preprocessor ব্যবহার করে ও const keyword ব্যবহার করে।
#define preprocessor ব্যবহারঃ নিচের ফরমেটে এটি করা হয়,
#define identifier value
নিচের উদাহরণ দিয়ে বোঝানো যাক,
#include <stdio.h>

#define LENGTH 10
#define WIDTH 5
#define NEWLINE ‘\n’

int main()
{

int area;

area = LENGTH * WIDTH;
printf(“value of area : %d”, area);
printf(“%c”, NEWLINE);

return 0;
}
কোড ঠিকভাবে লেখা হলে ফলাফল আসবে,
value of area : 50

const keyword ব্যবহারঃ নির্দিষ্ট রকমের ধ্রুবক নির্দেশ করতে const prefix ব্যবহার করা হয়, const type variable = value;
নিচে একটি উদাহরণ দিয়ে বোঝানো যাক,
#include <stdio.h>

int main()
{
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = ‘\n’;
int area;

area = LENGTH * WIDTH;
printf(“value of area : %d”, area);
printf(“%c”, NEWLINE);

return 0;
}

কোড ঠিকভাবে লেখা হলে ফলাফল আসবে,
value of area : 50
ধ্রুবককে বড় হাতের অক্ষর দ্বারা প্রকাশ করা প্রোগ্রামিঙের ক্ষেত্রে একটি ভাল চর্চা।

MongoDB Limit Records

MongoDB সীমাবদ্ধ রেকর্ডস

নয়ন চন্দ্র দত্ত

 

Limit() পদ্ধতি

MongoDB তে রেকর্ডকে সীমাবদ্ধ করতে হলে limit() মেথড বা পদ্ধতি ব্যবহার করতে হবে। Limit() পদ্ধতি এক নাম্বারের টাইপ সমর্থন করে যা ডকুমেন্টের নাম্বার এবং আপনি প্রদর্শন করতে চাইছেন।

সিনট্যাক্সঃ
limit() এর বেসিক সিনট্যাক্স নিম্নরূপঃ

>db.COLLECTION_NAME.find().limit(NUMBER)

উদাহরণঃ
নিম্নলিখিত তথ্যের সাথে myycol কালেকশনটি বিবেচনা করুনঃ

{ “_id” : ObjectId(5983548781331adf45ec5), “title”:”MongoDB Overview”}
{ “_id” : ObjectId(5983548781331adf45ec6), “title”:”NoSQL Overview”}
{ “_id” : ObjectId(5983548781331adf45ec7), “title”:”Tutorials Point Overview”}

ডকুমেন্ট quering এর সময় নিচের উদাহরণটি কেবলমাত্র ২টি ডকুমেন্ট প্রদর্শন করবেঃ

>db.mycol.find({},{“title”:1,_id:0}).limit(2)
{“title”:”MongoDB Overview”}
{“title”:”NoSQL Overview”}
>

যদি আপনি Limit() পদ্ধতিতে ডকুমেন্টের নাম্বার উল্লেখ না করেন তাহলে এটি কালেকশনের সকল ডকুমেন্ট প্রদর্শন করবে।

MongoDB Skip() পদ্ধতি

এছাড়াও limit() পদ্ধতি ছাড়া আরও একটি পদ্ধতি skip() আছে যা ডকুমেন্টের সংখ্যার টাইপ সমর্থন করে এবং সেই নাম্বারের ডকুমেন্ট এড়িয়ে(skip) চলে।

সিনট্যাক্সঃ
skip() এর বেসিক সিনট্যাক্স নিম্নরূপঃ

>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

উদাহরণঃ
নিম্নলিখিত উদাহণটি শুধু দ্বিতীয় ডকুমেন্ট প্রদর্শন করবেঃ

>db.mycol.find({},{“title”:1,_id:0}).limit(1).skip(1)
{“title”:”NoSQL Overview”}
>

অনুগ্রহ করে লক্ষ্য করুন- skip() পদ্ধতিতে ডিফল্ট মান ০ ।

জাবাস্ক্রিপ্ট আউটপুট (JavaScript Output)

JavaScript Output

অনুবাদ করেছেন AbuJubair Mahin

 

জাভাস্ক্রিপ্ট কোনো বিল্ট ইন প্রিন্ট অথবা ডিসপ্লে ফাংশন নেই।

JavaScript Display প্রোপার্টিস

জাভাস্ক্রিপ্ট বিভিন্ন উপায়ে তথ্য “প্রদর্শন” করতে পারে:

* window.alert() ব্যবহার করে সতর্কতা বক্সে লেখা ।
* document.write() ব্যবহার করে HTML আউটপুট মধ্যে লেখা ।
* innerHTMLব্যবহার করে একটি HTML উপাদান মধ্যে লেখা ।
* console.log() ব্যবহার করে ব্রাউজার কনসোল মধ্যে লেখা ।

window.alert() ব্যবহার

আপনি তথ্য প্রদর্শন করার জন্য একটি সতর্কতা বাক্স ব্যবহার করতে পারেন :.

উদাহরনঃ


<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>
<p>My first paragraph.</p>
<script>
window.alert(5 + 6);
</script>
</body>
</html>


document.write() ব্যবহার

document.write() পরীক্ষার উদ্দেশ্যে এটি ব্যবহার করা সুবিধাজনকঃ

উদাহরনঃ


<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>
<p>My first paragraph.</p>
<script>
document.write(5 + 6);
</script>
</body>
</html>

 

HTML ডকুমেন্ট সম্পূর্ণরূপে লোড করার পরে document.write () ব্যবহার করে, সব বিদ্যমান HTML মুছে ফেলা হবে:

উদাহরনঃ


<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>
<p>My first paragraph.</p>
<button onclick="document.write(5 + 6)">Try it</button>
</body>
</html>

 

সতর্কতাঃ Document.write () মেথড শুধুমাত্র পরীক্ষার জন্য ব্যবহার করা উচিত।

innerHTML ব্যবহার

একটি HTML উপাদান অ্যাক্সেস করার জন্য, জাভাস্ক্রিপ্ট document.getElementById (ID) পদ্ধতি ব্যবহার করতে পারেন.
আইডি অ্যাট্রিবিউট HTML উপাদান সংজ্ঞায়িত করে. InnerHTML property,  HTML সামগ্রী সংজ্ঞায়িত করেঃ

উদাহরনঃ


<!DOCTYPE html>
<html>
<body>

<h1>My First Web Page</h1>
<p>My First Paragraph</p>

<p id=”demo”></p>

<script>
document.getElementById(“demo”).innerHTML = 5 + 6;
</script>

</body>
</html>


 

আমাদের সকল উদাহরণে, আমরা প্রায়ই (একটি HTML উপাদান মধ্যে লেখা) innerHTML পদ্ধতি ব্যবহার করেছি ।

console.log() ব্যবহার

আপনার ব্রাউজারে, আপনি তথ্য প্রদর্শন console.log () পদ্ধতি ব্যবহার করতে পারেন.

ব্রাউজার এ F12 press করে কনসোল, সক্রিয় এবং মেনু “কনসোল” নির্বাচন করুন।

উদাহরনঃ


<!DOCTYPE html>
<html>
<body>

<h1>My First Web Page</h1>
<p>My first paragraph.</p>

<script>
console.log(5 + 6);
</script>

</body>
</html>


 

 

ধন্যবাদ, আশা করি বিষয়টি সকলেই বুঝতে পেরেছেন 🙂