সফটওয়্যার ডেভেলমেন্ট লাইফ সাইকেলের একটি অনিবার্য অংশ হচ্ছে সফটওয়্যারের বাগ। প্রথমবারই কোনও সফটওয়্যারের সকল কোড নিখুঁতভাবে লেখা সম্ভব হয় না। বরং, ধীরে ধীরে কোডিং করা হয়, বাগ ধরা হয় এবং সেটার সমাধান করা হয়।
একটা সফটওয়্যার তৈরি করার পর এর বাগ, অ্যানোমালি এবং এরর খুঁজে বের করা, রেকর্ড রাখা এবং সেগুলোর সঠিক সমাধান করা একটি গুরুত্বপূর্ণ কাজ। কাজেই, একটি সফটওয়্যারের ফাইনাল আউটপুটের আগে এর ব্যাপক পরীক্ষা-নিরীক্ষা অপটিমাইজেশনের প্রয়োজন।
আর এই টেস্টিং ও অপটিমাইজেশন প্রক্রিয়া জুড়ে যে কাজটি সবচেয়ে বেশি মনোযোগ দাবী করে তা হচ্ছে বাগ বের করা। কারণ, যদি বাগ থেকে যায় এবং প্রাথমিক অবস্থাতেই সেগুলো চিহ্নিত না করা যায়, তবে সফটওয়্যারটি ভবিষ্যতে বাতিলও হয়ে যেতে পারে।
কাজেই সফটওয়্যারের বাগ সম্পর্কে ভাল ধারণা রাখা প্রয়োজন সকলেরই। বিশেষ করে, যারা কোডিং শিখছেন, সাধারণ ল্যাংগুয়েজ কিংবা বেতন ও আয়ের দিক থেকে হাইয়েস্ট পেইড প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে সফটওয়্যার তৈরির হাতেখড়ি নিচ্ছেন, তাদের জন্যে কমোন বাগ সম্পর্কে সম্যক ধারণা রাখা জরুরী।
এমনকি, যারা এক্সপার্ট কোডার, একা একা কিংবা কোনও টিমের সঙ্গে যুক্ত হয়ে সফটওয়্যার তৈরির সঙ্গে নিজেকে যুক্ত করেছেন, তাদের জন্যে বাগ সম্পর্কে জানা আরো বেশি জরুরী।
সফটওয়্যারের কমোন বাগ
এই লেখায় আমরা সফটওয়্যারের কিছু কমোন বাগ নিয়ে আলোচনা করবো যা ডেভেলপার এবং সফটওয়্যার কোম্পানীগুলোর জন্যে বেশ কাজে দেবে, আশা করি।
Functional Bugs
যে কোনও নির্দিষ্ট সফটওয়্যারের মূল ফাংশন (Core Function) বা আলাদা ফাংশন (Extra or Side Function) এর সাথে জড়িত বাগকে Functional Bug বলে। ফাংশনাল বাগ বিভিন্ন ধরণের হতে পারে এবং এটি সফটওয়্যারের ফাংশনের ক্ষেত্রে জটিলতা তৈরি করতে পারে। এমনকি, যে কোনও নির্দষ্ট ফাংশনের ক্ষেত্রে কার্যকারিতা প্রকাশের ক্ষেত্রে অক্ষমতা প্রকাশ করতে পারে। যেমন-
Login Button: সফটওয়্যারের লগ-ইন বাটন (Login Button) কাজ করছে না। বাটনে ক্লিক করলে হয় সেটি ক্লিক নিচ্ছে না, অথবা নিলেও পরবর্তী পেজে বা ফাংশনে যাচ্ছে না। ফলে, ইউজার লগইন করতে পারছে না। এই বাগটির মূল কারণ যদি আইডেনটিফাই করা না হয় এবং সলিউশন দেয়া না হয়, তবে এই বাগটি পরবর্তীতে বড় আকার ধারণ করবে।
Add to Cart Button: ইকমার্স সাইট বা অনলাইন স্টোরের ক্ষেত্রে এটি একটি গুরুত্বপূর্ণ বাটন। আপনি নিশ্চয়ই জানেন ইকমার্স ওয়েবসাইটের ব্যাকএন্ডে কিন্তু একটি সফটওয়্যার কাজ করে থাকে। এখন যদি এটির Add to Cart Button কাজ না করে, তবে ইউজার বা কাস্টোমার তার পরবর্তী আপডেটে যেতে পারবে না। কাজেই, এটি একটি গুরুত্বপূর্ণ বাগ যা ফিক্সড্ করতে হয়।
Search Box: যে কোনও সফটওয়্যারের একটি গুরুত্বপূর্ণ পার্ট হচ্ছে এর Search Box। কিন্তু, সেটা যদি কাজ না করে, তবে ইউজার তার জরুরি বিষয়টি চট করে খুঁজে পাবে না। সুতরাং, সে এই সফটওয়্যারটির ওপর আস্থা হারিয়ে ফেলবে।
সফটওয়্যার তৈরি করার পর এর উপরোক্ত ফাংশনালিটি চেক করে দেখতে হয়। যদি সমস্যা পাওয়া যায়, তবে সেটি Functional Bug হিসেবে চিহ্নিত হয় এবং রিসলভ্ করতে হয়।
Logical Bugs
কোনও সফটওয়্যারের কোডিং লজিক যদি ঠিক মতো কাজ না করে, তখন সেটাকে Logical Bug বলা হয়। এই ধরণের বাগ সাধারণত সফটওয়্যারের অপ্রত্যাশিত আচরণগত সমস্যা (unexpected software behavior) তৈরি করে। এ ধরণের সমস্যা থেকে প্রায়ই সফটওয়্যার হ্যাং করে থাকে। এমনকি, কখনো কখনো ক্র্যাশ (sudden crash) করে বসে।
সফটওয়্যার ডেভেলপমেন্টের ক্ষেত্রে আনাড়ি কোডিং (poorly written code) করা হলে সাধারণত Logical Bug দেখা দিয়ে থাকে। লজিক্যাল বাগের ২টি গুরুত্বপূর্ণ উদাহরণ হচ্ছে-
- ভুল ভ্যারিয়েবল (wrong variable)-এ ভ্যালু অ্যাসাইন করা।
- দুইটি নাম্বারকে একত্র করা ছাড়া ভাগ করার লজিক সেট করা।
Workflow Bugs
সফটওয়্যারের অ্যাপ্লিকেশনের ক্ষেত্রে ইউজারের নেভিগেশন যেটাকে আমরা জার্নি বলতে পারি, সেটার সাথে সম্পর্কিত বাগকে Workflow Bug বলা হয়ে থাকে। ওয়ার্ক ফ্লো ম্যানেজমেন্ট সফটওয়্যার হোক, কিংবা অন্য যে কোনও ধরণের সফটওয়্যার হোক না কেন, এই ধরণের বাগ কোনভাবেই কাম্য না।
উদাহরণ হিসেবে ধরা যাক, একজন ইউজারের একটি ফর্ম পূরণ করতে হচ্ছে, হতে পারে সেটি একটি মেডিকেল হিস্ট্রি ফর্ম। ফর্মটি পূরণ করার পর ইউজার তিনটি অপশন পেতে পারে-
- পূরণকৃত ফর্মটি সংরক্ষণ (Save) করে সফটওয়্যারের ভেতরেই অন্য কাজে অ্যাংগেজ হওয়া।
- ফর্মটি সেভ করে সফটওয়্যার থেকে বেরিয়ে পড়া (Save & Exit)।
- যে পেজ থেকে সে ফর্মে এসেছে, আবার তাতে ফিরে যাওয়া (Go Previous Page)।
এখন ধরা যাক, ইউজার দ্বিতীয় অপশনটি অর্থাৎ Save & Exit চুজ করেছে। তাহলে, যেটা হওয়া উচিৎ সেটা হচ্ছে তার পূরণকৃত ফর্মটি সেভ হয়ে থাকবে, যাতে সে পরবর্তীতে আবার সেখান থেকেই কাজ শুরু করতে পারে। কিন্তু, পরবর্তী সময়ে যখন সে ফর্মটি ওপেন করলো, তখন দেখলো যে তার আগের পূরণকৃত ঘরগুলোতে কোন ডাটা নেই। যার মানে হচ্ছে, তার কাজ সেভ হয় না। এটাই হচ্ছে কোনও সফটওয়্যারের Workflow Bug।
Unit Level Bugs
এটি সফটওয়্যারের সবচেয়ে কমোন বাগ, যা খুব সহজভাবেই ফিক্স করা যায়। সফটওয়্যার তৈরির সময়ই ডেভেলপার যখন তার বিভিন্ন ছোট ছোট কোডের ব্যাচগুলোকে (small batch of codes) টেস্ট করে দেখেন যে সেগুলো ঠিক মতো কাজ করছে কিনা, তখনই সেগুলো সহজে বোঝা যায়।
ধরুন, ডেভেলপার একটি ফর্ম ক্রিয়েট করেছে যেখানে ফর্মের ৫টি ফিল্ড কোডিং করে যুক্ত করেছে। এখন দেখা গেলো ৫টির মাঝে ৪টি ফিল্ড কাজ করছে, একটি করছে না। এটাকেই Unit Level Bug বলে।
System-Level Integration Bugs
একটা সফটওয়্যার তৈরির ক্ষেত্রে বেশিরভাগ সময়ই কয়েকজন ডেভেলপার মিলে কাজ করে থাকেন। এক্ষেত্রে, একাধিক ডেভেলপারের করা কোডিং ইউনিট যখন একে অপরের সাথে কানেক্টেড বা ইন্টারেক্ট করতে পারে না, তখন পপ-আপ আকারে System-Level Integration Bug দেখা দিয়ে থাকে।
এই ধরনের System-Level Integration Bug ট্র্যাক করা এবং ফিক্স করা কঠিন। কারণ, একাধিক ডেভেলপারের কাজকে আলাদা আলাদাভাবে চেক করতে হয় এবং কোডের একটি বড় অংশের টেস্ট চালাতে হয়।
Out of Bound Bugs
সফটওয়্যারের একজন সিস্টেম ইউজার যখন user interface এর সাথে ইন্টারেক্ট করার চেষ্টা করে, তখন সাধারণত Out of Bound Bug দেখা দিয়ে থাকে। সাধারণত, ইন্ড-ইউজার যখন লিমিটের বাইরে কোনও ভ্যালু এন্টার করে, বিশেষত বড় ভ্যালু, তখনই এই জাতীয় বাগের দেখা মেলে।
উদাহরণ স্বরূপ, সফটওয়্যারের কোন একটি ফর্মের একটা ফিল্ডে সর্বোচ্চ ভ্যালু দেয়া আছে ১০০০। কিন্তু একজন ব্যবহারকারী সেখানে ১০৫০ দিয়ে দিলো, তখনই সফটওয়্যারের কাজ হচ্ছে তাকে নোটিফাই করা যে, আপনি যে ভ্যালু দিয়েছেন, তা লিমিট ক্রস করেছে। কিন্তু, সফটওয়্যার সেটি না করে অপ্রত্যাশিত এরর দেখানো শুরু করেছে। এ জাতীয় বাগকে ফিক্সড্ করতে হয়।
শেষ কথা
সফটওয়্যারের কমোন বাগ সম্পর্কে ভালোই ধারণ পেলেন বলে আশা করি। এরপরও, যদি আপনার আরো কোনও অজানা বাগ সম্পর্কে জানার ইচ্ছে হয়, তবে কমেন্টের মাধ্যমে আমাদের জানাতে পারেন। আশা করি, আমরা সেই বাগটি সম্পর্কে বিস্তারিত লিখে এই পোস্টে অ্যাড করে দেবো।
Leave a Reply