Bohrbug: এটি কী, কারণ এবং সমাধানের পদ্ধতি

লেখক: IT Sectr প্রকাশিত: 2026-07-29 পড়ার সময়: 8 মিনিট

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

মুখ্য বিষয়

  • Bohrbug — একটি স্থিতিশীল ত্রুটি যা একই ইনপুট ডেটার সাথে প্রতিটি চালনায় পুনরুৎপাদিত হয়।
  • নামটি বোরের পরমাণুর গ্রহীয় মডেলের সাথে সম্পর্কিত — বাগটি কক্ষপথে ইলেকট্রনের মতো পূর্বানুমানযোগ্য আচরণ করে।
  • নির্ণয় এই ধরনের বাগগুলির সবচেয়ে সহজ: শুধু ইনপুট শর্তগুলি রেকর্ড করুন এবং ডিবাগ করুন।
  • কারণগুলির মধ্যে রয়েছে যৌক্তিক ত্রুটি, ভুল সীমানা শর্ত এবং কোডে টাইপো।
  • ইউনিট টেস্ট — ডেভেলপমেন্ট পর্যায়ে Bohrbug প্রতিরোধের প্রধান হাতিয়ার।

Bohrbug কী?

Bohrbug এক ধরণের সফ্টওয়্যার ত্রুটি যা নির্ধারকভাবে প্রকাশ পায়: একই ইনপুট ডেটার সাথে, এটি সর্বদা একই ব্যর্থতা সৃষ্টি করে। শব্দটি গবেষক জিম গ্রে এবং আন্দ্রেয়াস রয়টার দ্বারা “Transaction Processing: Concepts and Techniques” (1993) বইয়ে বৈজ্ঞানিক প্রচলনে আনা হয়েছিল।

Mandelbug এর বিপরীতে, যা বিশৃঙ্খলভাবে তার আচরণ পরিবর্তন করে, Bohrbug স্থিতিশীল: একজন ডেভেলপার সিস্টেমকে একই প্যারামিটার দিয়ে চোখ বন্ধ করেও এটি পুনরুৎপাদন করতে পারে। এটি IDE-তে ধাপে ধাপে ডিবাগিংয়ের জন্য একটি আদর্শ প্রার্থী করে তোলে।

Bohrbug সফ্টওয়্যার জীবনচক্রের সকল পর্যায়ে ঘটে — ডেভেলপমেন্ট থেকে অপারেশন পর্যন্ত। এটি প্রায়শই পরীক্ষার সময় আবিষ্কৃত হয়, কারণ QA ইঞ্জিনিয়াররা পুনরাবৃত্ত দৃশ্যপট চালান যা নিশ্চিতভাবে ব্যর্থতার দিকে নিয়ে যায়।

গ্রে এবং রয়টারের সংজ্ঞা

গ্রে এবং রয়টারের শ্রেণীবিভাগ অনুসারে, Bohrbug এমন একটি ত্রুটি যা তিনটি শর্ত পূরণ করে: ইনপুট ডেটার একটি নির্দিষ্ট সেট, সিস্টেমের একই অবস্থা এবং ব্যর্থতার একই ফলাফল। যদি কমপক্ষে একটি শর্ত লঙ্ঘিত হয়, তবে বাগটি “বোর” থাকে না।

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

Bohrbug নামের উৎপত্তি

Bohrbug নামটি ডেনিশ পদার্থবিদ নিলস বোরের নাম থেকে এসেছে, যিনি পরমাণুর গ্রহীয় মডেলের স্রষ্টা। উপমাটি সহজ: যেমন বোরের মডেলে ইলেকট্রন একটি কঠোরভাবে নির্ধারিত কক্ষপথে চলে, তেমনি এই বাগ প্রতিটি চালনায় একই আচরণ পুনরাবৃত্তি করে।

গ্রে এবং রয়টার নির্ধারক ত্রুটিগুলিকে বিশৃঙ্খল ত্রুটিগুলির থেকে আলাদা করার জন্য এই নামটি বেছে নিয়েছিলেন, যাকে তারা Mandelbug নাম দেন — গণিতবিদ বেনোয়া ম্যান্ডেলব্রটের সম্মানে, যিনি ফ্র্যাক্টাল তত্ত্ব এবং বিশৃঙ্খলা তত্ত্বের প্রতিষ্ঠাতা।

মজার বিষয় হল, ইংরেজি ভাষার সাহিত্যে, Bohrbug শব্দটি প্রায়শই “নির্ধারক ত্রুটি” এর প্রতিশব্দ হিসাবে ব্যবহৃত হয়, যদিও এটি বাংলা ভাষী পরিবেশে কম সাধারণ। বেশিরভাগ ডেভেলপার এই ধরনের বাগগুলিকে কেবল “পুনরুৎপাদনযোগ্য ত্রুটি” বলে।

Bohrbug এর মূল বৈশিষ্ট্য

Bohrbug-এর বিশিষ্ট গুণাবলীর একটি সেট রয়েছে যা এটিকে অন্যান্য ধরণের সফ্টওয়্যার ত্রুটির মধ্যে সনাক্ত করতে সাহায্য করে। আসুন প্রতিটি বৈশিষ্ট্য বিস্তারিতভাবে দেখি।

নির্ধারকতা

Bohrbug এর প্রধান বৈশিষ্ট্য হল সম্পূর্ণ পূর্বানুমানযোগ্যতা। যদি ডেভেলপারের মেশিনে নির্দিষ্ট ইনপুট ডেটার সাথে অ্যাপ্লিকেশন ক্র্যাশ হয়, তবে এটি টেস্টারের মেশিন এবং প্রোডাকশনে ঠিক একইভাবে ক্র্যাশ হবে। কোন এলোমেলো কারণ নেই।

পুনরুৎপাদনযোগ্যতা

Bohrbug 100% প্রচেষ্টায় পুনরুৎপাদিত হয়। এর মানে ডিবাগিংয়ের জন্য বিশেষ সরঞ্জামের প্রয়োজন নেই — একটি সাধারণ IDE এবং ডিবাগার যথেষ্ট। ডেভেলপার একটি ব্রেকপয়েন্ট সেট করে, অ্যাপ্লিকেশন চালু করে, ইনপুট ডেটা প্রদান করে এবং ধাপে ধাপে কোডের মধ্য দিয়ে যায়।

সময়ের সাথে স্থিতিশীলতা

যদি Bohrbug ঠিক না করা হয়, তবে এটি ঠিক না হওয়া পর্যন্ত প্রোগ্রামের যেকোনো সংস্করণে পুনরুৎপাদিত হবে। অস্থায়ী কারণগুলি — CPU লোড, চাঁদের কলা, দিনের সময় — এর প্রকাশকে প্রভাবিত করে না।

Bohrbug এর প্রধান কারণ

Bohrbug এর কারণগুলি কয়েকটি বিভাগে ভাগ করা যায়। এই বিভাগগুলি বোঝা সমস্যার মূল দ্রুত খুঁজে পেতে সাহায্য করে।

যৌক্তিক ত্রুটি

ভুলভাবে তৈরি শর্ত — Bohrbug এর সবচেয়ে সাধারণ কারণ। উদাহরণস্বরূপ, একজন ডেভেলপার `&&` এর পরিবর্তে `||` অপারেটর ব্যবহার করেছেন, যার ফলে নির্দিষ্ট আর্গুমেন্ট সহ ফাংশন কল করার সময় কোড শাখা প্রতিবার ভুলভাবে নির্বাহিত হয়।

সীমানা শর্তের ত্রুটি

`<=` এর পরিবর্তে `<` অপারেটর ব্যবহার করা বা বিপরীত পরিস্থিতি — Bohrbug এর একটি ক্লাসিক উৎস। যদি একটি লুপ 10 বার নির্বাহিত হওয়া উচিত কিন্তু ভুল শর্তের কারণে 11 বার চলে, তবে এটি একটি নির্ধারক ত্রুটি যা প্রতিটি চালনায় প্রকাশ পাবে।

ভুল ধ্রুবক এবং যাদু সংখ্যা

হার্ড-কোডেড ধ্রুবক যা ব্যবসায়িক যুক্তির সাথে মেলে না, স্থিতিশীল ব্যর্থতা তৈরি করে। উদাহরণস্বরূপ, সার্ভার সংযোগ টাইমআউট 5000 এর পরিবর্তে 100 মিলিসেকেন্ডে সেট করা আছে — সংযোগ প্রতিটি অনুরোধে বিচ্ছিন্ন হবে।

কোডে Bohrbug কীভাবে সনাক্ত করবেন

অন্যান্য ধরণের বাগের তুলনায় Bohrbug সনাক্ত করা ডেভেলপারের জন্য সবচেয়ে সহজ কাজ। নির্ধারক প্রকৃতি মানক ডিবাগিং পদ্ধতি প্রয়োগের অনুমতি দেয়।

java
public class DiscountCalculator {
    public double calculate(double amount, boolean isPremium) {
        // বাগ: প্রিমিয়াম ব্যবহারকারীরা 10% এর পরিবর্তে 5% ছাড় পান
        if (isPremium) {
            return amount * 0.95;
        }
        return amount * 0.90;
    }
}

এই উদাহরণে, Bohrbug সুস্পষ্ট: `calculate(1000, true)` কল করলে, পদ্ধতিটি সর্বদা 900 এর পরিবর্তে 950 ফেরত দেয়। নির্দিষ্ট ইনপুট ডেটা সহ একটি সহজ ইউনিট টেস্ট তৎক্ষণাৎ সমস্যা প্রকাশ করবে।

প্রধান পদ্ধতি হিসাবে ইউনিট টেস্টিং

Bohrbug সনাক্ত করার জন্য, ইউনিট টেস্ট সবচেয়ে কার্যকর হাতিয়ার। বিভিন্ন সীমানা মান সহ পরীক্ষার একটি সেট দিয়ে ফাংশনটি কভার করা যথেষ্ট, এবং নির্ধারক ত্রুটিটি প্রথম রানেই প্রকাশ পাবে।

ধাপে ধাপে ডিবাগিং

যখন Bohrbug সনাক্ত করা যায়, IDE-তে ধাপে ধাপে ডিবাগিং মূল খুঁজে বের করার সর্বোত্তম উপায়। ডেভেলপার ফাংশনের প্রবেশপথে একটি ব্রেকপয়েন্ট সেট করে এবং ভেরিয়েবলের মানগুলি পর্যবেক্ষণ করে প্রতিটি লাইনের মধ্য দিয়ে যায়।

Bohrbug এবং অন্যান্য ধরণের বাগের মধ্যে পার্থক্য

Bohrbug মূল বৈশিষ্ট্য — নির্ধারকতা দ্বারা অন্যান্য ধরণের সফ্টওয়্যার ত্রুটি থেকে আলাদা। আসুন একটি টেবিলে তুলনা দেখি।

বাগের ধরনপুনরুৎপাদনযোগ্যতাকারণডিবাগিং জটিলতা
Bohrbugএকই ইনপুটে 100%যৌক্তিক ত্রুটিনিম্ন
Mandelbugঅবস্থার উপর নির্ভরথ্রেড রেস, টাইমিংউচ্চ
Schrödinbugকোড পড়া পর্যন্ত 0%ত্রুটি উপলব্ধিমনস্তাত্ত্বিক
Hindenbugএকবারক্যাসকেড ব্যর্থতাচরম
Heisenbugডিবাগে পরিবর্তন হয়কম্পাইলার অপ্টিমাইজেশনমধ্যম

Bohrbug একমাত্র ধরণের ত্রুটি যা নিয়ন্ত্রিত অবস্থায় নির্ভরযোগ্যভাবে পুনরুৎপাদন করা যায়। এটি নির্ণয়ের দৃষ্টিকোণ থেকে সবচেয়ে নিরাপদ করে তোলে, তবে ব্যবহারকারীর জন্য কম বিপজ্জনক নয়।

কেন Bohrbug এবং Heisenbug বিভ্রান্ত হয়

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

কোডে Bohrbug এর উদাহরণ

একটি ই-কমার্স অ্যাপ্লিকেশনে Bohrbug এর একটি বাস্তব উদাহরণ দেখি। ফাংশনটি কর সহ অর্ডারের মোট খরচ গণনা করে।

java
public double calculateTotal(double subtotal, double taxRate) {
    // বাগ: ডেভেলপার taxRate শতাংশ হিসাবে সেট করেছেন
    // কিন্তু 100 দ্বারা ভাগ করতে ভুলে গেছেন
    return subtotal + (subtotal * taxRate);
}

`calculateTotal(1000, 20)` কল করলে, ফাংশনটি প্রত্যাশিত 1200 এর পরিবর্তে 21000 ফেরত দেয়। এটি একটি ক্লাসিক Bohrbug: একই ইনপুট ডেটা সর্বদা একই ভুল ফলাফলের দিকে নিয়ে যায়। সমাধান তুচ্ছ — 100 দ্বারা ভাগ যোগ করুন।

সংশোধিত সংস্করণ

সংশোধনের পরে, ফাংশনটি করের হার সঠিকভাবে প্রক্রিয়া করে:

java
public double calculateTotal(double subtotal, double taxRatePercent) {
    return subtotal + (subtotal * taxRatePercent / 100.0);
}

এই উদাহরণটি স্পষ্টভাবে দেখায় যে Bohrbug একটি সাধারণ গাণিতিক ত্রুটির কারণে হতে পারে। এই কারণেই কোড রিভিউ এবং ইউনিট টেস্ট এই ধরনের ত্রুটি প্রতিরোধের প্রধান হাতিয়ার।

সচরাচর জিজ্ঞাসিত প্রশ্ন

Bohrbug সাধারণ বাগ থেকে কীভাবে আলাদা?

Bohrbug সাধারণ বাগের একটি বৈচিত্র্য যা কঠোর নির্ধারকতা দ্বারা চিহ্নিত। প্রতিটি Bohrbug একটি বাগ, কিন্তু প্রতিটি বাগ Bohrbug নয়। সাধারণ বাগ অস্থিরভাবে পুনরুৎপাদিত হতে পারে বা বাহ্যিক কারণের উপর নির্ভর করতে পারে।

কেন Bohrbug কে স্থিতিশীল বাগ বলা হয়?

Bohrbug কে স্থিতিশীল বলা হয় কারণ এটি একই ইনপুট ডেটার সাথে প্রতিটি চালনায় পুনরুৎপাদনের ক্ষমতা রাখে। এই বৈশিষ্ট্য এটিকে Mandelbug বা Heisenbug এর বিপরীতে, পূর্বানুমানযোগ্য এবং ডিবাগিংয়ের জন্য সুবিধাজনক করে তোলে।

কে Bohrbug শব্দটি তৈরি করেছিলেন?

Bohrbug শব্দটি জিম গ্রে এবং আন্দ্রেয়াস রয়টার 1993 সালে “Transaction Processing: Concepts and Techniques” বইয়ে তৈরি করেছিলেন। তারা পদার্থবিদ্যা এবং গণিতের উপমা ব্যবহার করে, নির্ধারকতার মাত্রা অনুসারে সফ্টওয়্যার ত্রুটিগুলি শ্রেণীবদ্ধ করেছিলেন।

কীভাবে দ্রুত Bohrbug ঠিক করবেন?

Bohrbug দ্রুত ঠিক করতে: পরীক্ষার পরিবেশে বাগটি পুনরুৎপাদন করুন, ডিবাগারে ধাপে ধাপে কোড দেখুন, ভুল যুক্তি সহ লাইনটি খুঁজুন, এবং একটি ইউনিট টেস্ট লিখুন যা সঠিক আচরণ যাচাই করে।

Bohrbug কি জটিল হতে পারে?

হ্যাঁ, Bohrbug তার যুক্তিতে ইচ্ছামত জটিল হতে পারে। নির্ধারকতার অর্থ সরলতা নয়। বাগে অনেক শর্ত এবং নেস্টেড কল থাকতে পারে, কিন্তু যদি এটি স্থিতিশীলভাবে পুনরুৎপাদিত হয় — তবে এটি Bohrbug।

সারসংক্ষেপ

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

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন