Bohrbug ایک سافٹویئر غلطی ہے جو تعینی طور پر کام کرتی ہے: ایک جیسے انپٹ ڈیٹا کے ساتھ، یہ ہر بار بغیر کسی مستثنای کے دوبارہ پیدا ہوتی ہے۔ یہ نام نیلز بور کے ایٹم ماڈل سے ماکھوا گیا ہے، جہاں ایلیکٹران ایک سختی سے متعین مدار پر چلتا ہے — اتنا ہی پیش قیاس پذیر جتنا یہ بگ۔ انسائیکلوپیڈیا (2026) کے مطابق، کے مطابق، Bohrbug ان عیوب کے زمرے میں آتا ہے جن کی تشخیص سب سے آسان ہے، کیونکہ انہیں دوبارہ پیدا کرنے کے لیے خاص ضرورتات کی ضرورت نہیں ہی۔
اہم نکات
Bohrbug ایک قسم کی سافٹویئر غلطی ہے جو تعینی طور پر ظاہر ہوتی ہے: ایک جیسے انپٹ ڈیٹا کے ساتھ، یہ ہمیشہ ایک ہی ناکامی کا نتیجہ دیتی ہے۔ یہ مصطلح محققین جیم گرے اور آنڈریاس رویٹر نے کتاب «Transaction Processing: Concepts and Techniques» (1993) میں متعارف کروایا تھا۔
Mandelbug کے برعکس، جو افراطی طور پر اپنا رویہ بدلتا ہے، Bohrbug مستقل ہے: ایک ڈیولپر سسٹم کو ایک جیسے پارامیٹرز دے کر آنکھیں بند کر بھی اسے دوبارہ پیدا کر سکتا ہے۔ یہ اسے IDE میں مرحلہ وار ڈبگنگ کے لیے ایک بہترین امیدوار بناتا ہے۔
Bohrbug سافٹویئر لائف سایکل کے تمام مراحل پر پایا جاتا ہے — ترقیات سے لے کر آپریشن تک۔ یہ اکثر ٹیسٹنگ کے دوران دریافت ہوتا ہے، کیونکہ QA انجینیئر دوہرائے جانے والے مناظر چلاتے ہیں جو یقینی طور پر ناکامی کا سبب بنتے ہیں۔
گرے اور رویٹر کی درجہ بندی کے مطابق، Bohrbug ایک ایسا عیب ہے جو تین شرائط کو پورا کرتا ہے: انپٹ ڈیٹا کا ایک مقررہ سیٹ، سیسٹم کی ایک جیسی حالت، اور ناکامی کا ایک جیسا نتیجہ۔ اگر کم سے کم ایک شرط کی خلاف ورزی ہوتی ہے، تو بگ «بور» نہیں رہتا۔
مصنف اس بات پر زور دیتے ہیں کہ Bohrbug ضروری نہیں کہ ایک سادہ غلطی ہو۔ یہ منطق میں من مانہ پچیدہ ہو سکتا ہے، لیکن اس کی تعینیت اسے درجہ بندی میں دیگر تمام اقسام کی ناکامیوں سے ممیز کرتی ہے۔
Bohrbug کا نام ڈینش ماہر طبیعیات نیلز بور سے آیا ہے، جو ایٹم کے سیارہ ماڈل کے خالق ہیں۔ مشابہت سادہ ہے: جیسے بور کے ماڈل میں ایلیکٹران ایک سختی سے مقرر مدار پر چلتا ہے، اسی طرح یہ بگ ہر رن پر ایک جیسا رویہ دوہراتا ہے۔
گرے اور رویٹر نے تعینی غلطیوں کو افراطی غلطیوں سے ممیز کرنے کے لیے یہ نام چونا، جنہیں انہوں نے Mandelbug کا نام دیا — ریاضی دان بینوا مینڈلبروٹ کے اعزاز میں، جو فراکٹل تھیوری اور افراطی تھیوری کے بانی ہیں۔
دلچسپ بات یہ ہے کہ انگریزی ادب میں، Bohrbug کی مصطلح اکسر «تعینی غلطی» کے مترادف کے طور پر استعمال ہوتی ہے، حالانکہ یہ اردو دان ماحول میں کم عام ہے۔ اکثر ڈیولپر ان بگز کو صرف «دوبارہ پیدا کرنے والی غلطیاں» کۇہتے ہیں۔
Bohrbug میں ممایز خواص کا ایک سیٹ ہے جو اسے دیگر اقسام کے سافٹویئر عیوب کے درمیان پہچاننے میں مدد کرتا ہے۔ آئیے ہر خصوصیت کا مفصل جائزہ لیتے ہیں۔
Bohrbug کی اہم خصوصیت مکمل پیش قیاس پذیری ہے۔ اگر ایپلیکیشن ڈیولپر کے کمپیوٹر پر مخصوص انپٹ ڈیٹا کے ساتھ کریش ہوا، تو یہ ٹیسٹر کے کمپیوٹر اور پروڈکشن میں بھی ایسے ہی کریش ہوگا۔ کئی بھی تصادفی عوامل نہیں ہیں۔
Bohrbug 100% کوششوں میں دوبارہ پیدا ہوتا ہے۔ اس کا مطلب ہے کہ ڈبگنگ کے لیے خاص اوزار کی ضرورت نہیں ہے — ایک معیاری IDE اور ڈبگر کافی ہے۔ ڈیولپر ایک بریک پوائنٹ لگاتا ہے، ایپلیکیشن شروع کرتا ہے، انپٹ ڈیٹا فراہم کرتا ہے، اور کوڈ کو مرحلہ وار گزرتا ہے۔
اگر Bohrbug کو ٹھیک نہیں کیا جاتا، تو یہ ٹھیک ہونے تک پروگرام کے کسی بھی ورژن میں دوبارہ پیدا ہوتا رہے۔ وقتی عوامل — CPU لوڈ، چاند کا مرحلہ، دن کا وقت — اس کے ظاہر ہونے پر کئی اثر نہیں ڈالتے۔
Bohrbug کے اسباب کو کئی زمروں میں تقسیم کیا جا سکتا ہے۔ ان زمروں کو سمجھنا مسئلے کی جڑ کو تیزی سے کھوجنے میں مدد کرتا ہے۔
غلط طریقے سے تعمیر کی گئی شرط Bohrbug کی سب سے عام وجہ ہے۔ مثال کے طور پر، ایک ڈیولپر نے `&&` کے بجائے `||` آپریٹر استعمال کیا، جس کی وجہ سے فنکشن کو مخصوص ارگومنٹس کے ساتھ کل کرنے پر کوڈ کی ایک شاخ گلط طریقے سے چلتی تھی۔
`<=` کے بجائے `<` آپریٹر کا استعمال کرنا یا الٹ عکس صورت حال Bohrbug کا ایک کلاسیکی مخذ ہے۔ اگر ایک لوپ کو 10 مرتبہ چلنا چاہیے لیکن غلط شرط کی وجہ سے 11 مرتبہ چلتا ہے، تو یہ ایک تعینی غلطی ہے جو ہر رن پر ظاہر ہوگی۔
سخت کوڈ کی گئی مساتبت جو کاروبار منطق سے مطابقت نہیں کرتیں، مستقل ناکامیاں پیدا کرتی ہیں۔ مثال کے طور پر، سرور کنکشن ٹائم آؤٹ 5000 کے بجائے 100 ملی سیکنڈ پر مقرر کیا گیا — کنکشن ہر درخواست پر ٹوٹ جائے گا۔
دیگر اقسام کے بگز کے مقابلے میں Bohrbug کا پتا لگانا ایک ڈیولپر کے لیے سب سے آسان کام ہے۔ تعینی فطرت معیاری ڈبگنگ کے طریقوں کو استعمال کرنے کی اجازت دیتی ہے۔
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 | ایک جیسے انپٹ پر 100% | منطقی غلطی | کم |
| Mandelbug | حالت پر منحصر | تھریڈ ریس، ٹائمنگ | زیادہ |
| Schrödinbug | کوڈ پڑھنے تک 0% | غلطی کا احساس | نفسیاتی |
| Hindenbug | ایک بار | سلسلہ وار ناکامی | انتہائی |
| Heisenbug | ڈبگ کرتے وقت بدلتا ہے | کامپائلر اپٹیمائزیشن | درمیانہ |
Bohrbug واحد ایسا غلطی کی قسم ہے جسے قابو شدہ ضرورتات میں قابل اعتماد طور پر دوبارہ پیدا کیا جا سکتا ہے۔ یہ اسے تشخیص کے نقطہ نظر سے سب سے محفوظ بناتا ہے، لیکن صرف کرنے والے کے لیے کم خطرناک نہیں۔
Heisenbug ایک ایسا بگ ہے جو اسے ڈبگ کرنے کی کوشش کرنے پر غائب ہو جاتا ہے۔ Bohrbug کے برعکس، Heisenbug کوڈ کے عمل کرنے کے اوقات میں تبدیلی کی وجہ سے ڈبگر میں دوبارہ پیدا نہیں ہو سکتا۔ نئے ڈیولپر اکسر ان دو قسموں کو خلط کر دیتے ہیں۔
ایک ای کامرس ایپلیکیشن میں Bohrbug کی ایک حقیقی مثال دیکھیں۔ فنکشن ٹیکس سمیت آرڈر کی کل لاگت کا حساب لگاتا ہے۔
public double calculateTotal(double subtotal, double taxRate) {
// بگ: ڈیولپر نے taxRate کو فیصد کے طور پر مقرر کیا
// لیکن 100 سے تقسیم کرنا بھول گیا
return subtotal + (subtotal * taxRate);
}
`calculateTotal(1000, 20)` کو کل کرنے پر، فنکشن متوقعہ 1200 کے بجائے 21000 واپس کرتا ہے۔ یہ ایک کلاسیکی Bohrbug ہے: ایک جیسے انپٹ ڈیٹا ہمیشہ ایک جیسے غلط نتیجے کی طرف لے جاتا ہے۔ اصلاح بہت سادہ ہے — 100 سے تقسیم شامل کریں۔
اصلاح کے بعد، فنکشن ٹیکس کی شرح کو صحیح طور پر پروسیس کرتا ہے:
public double calculateTotal(double subtotal, double taxRatePercent) {
return subtotal + (subtotal * taxRatePercent / 100.0);
}
یہ مثال واضح طور پر دیکھاتا ہے کہ Bohrbug ایک سادہ ریاضی غلطی کے نتیجے میں بھی ہو سکتا ہے۔ اسی لیے کوڈ کا جائزہ اور یونٹ ٹیسٹ اس قسم کے عیوب کی روکتھام کے اہم اوزار ہیں۔
اکثر پوچھے جانے والے سوالات
Bohrbug عام بگ کی ایک قسم ہے جو سخت تعینیت سے متعین ہوتی ہے۔ ہر Bohrbug ایک بگ ہے، لیکن ہر بگ Bohrbug نہیں ہے۔ عام بگ غیر مستقل طور پر دوبارہ پیدا ہو سکتا ہے یا بیرونی عوامل پر منحصر ہو سکتا ہے۔
Bohrbug کو مستقل اس لیے کہا جاتا ہے کیونکہ یہ ایک جیسے انپٹ ڈیٹا کے ساتھ ہر رن پر دوبارہ پیدا ہو سکتا ہے۔ یہ خوبی اسے Mandelbug یا Heisenbug کے برعکس، پیش قیاس پذیر اور ڈبگنگ کے لیے آسان بناتی ہے۔
Bohrbug کی مصطلح جیم گرے اور آنڈریاس رویٹر نے 1993 میں کتاب «Transaction Processing: Concepts and Techniques» میں ایجاد کی تھی۔ انہوں نے ماہرانه و طبیعی سائنس سے مشابہتیں استعمال کرتے ہوئے، تعینیت کی درجہ کے مطابق سافٹویئر غلطیوں کی درجہ بندی کی۔
Bohrbug کو جلدی ٹھیک کرنے کے لیے: ٹیسٹ ماحول میں بگ کو دوبارہ پیدا کریں، ڈبگر میں کوڈ کو مرحلہ وار دیکھیں، غلط منطق والی سطر تلاش کریں، اور ایک یونٹ ٹیسٹ لکھیں جو صحیح رویہ کی تصدیق کرتا ہو۔
ہاں، Bohrbug اپنے منطق میں من مانہ پیچیدہ ہو سکتا ہے۔ تعینیت کا مطلب سادگی نہیں ہے۔ بگ میں بہت سے شرائط اور انڈر کالز شامل ہو سکتے ہیں، لیکن اگر یہ مستقل طور پر دوبارہ پیدا ہوتا ہے — تو یہ Bohrbug ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں