মূলত, না তবে আপনাকে যাইহোক সেরা চেষ্টা করা উচিত। আমি ব্যাখ্যা করব কেন (বা আপনার যদি যথেষ্ট ধৈর্য না থাকে তবে উপসংহারে চলে যান)
বাইনারি অনুসন্ধান প্রয়োগের মতো তুচ্ছ হিসাবে বিবেচনা করুন। একটি খুব জনপ্রিয় রূপায়ণে একটি বাগ ছিল যা প্রায় দুই দশক ধরে সনাক্ত করা যায়। যদি বিশ লাইনের ত্রুটিমুক্তভাবে ব্যাপকভাবে ব্যবহৃত হতে এবং এমনকি সঠিকভাবে প্রমাণিত হওয়ার জন্য বিশ বছর সময় নেয় তবে আমরা কি সত্যই কোনও বিশাল প্রোগ্রামটি বাগ-মুক্ত হওয়ার আশা করতে পারি?
যে কোনও উপায়ে আমরা একটি বিশাল প্রোগ্রামের আশা করতে পারি যে কতগুলি বাগ রয়েছে? আমি খুঁজে পেয়েছি একটি নম্বর ছিল "1000 লাইন প্রতি 10 ত্রুটি" (কোড সম্পূর্ণ দ্বিতীয় সংস্করণ, পৃষ্ঠা 517 - নিছক উদাহরণ ব্যবহার করা হয়েছে, কোনও তথ্য উদ্ধৃত না করে) যা আমাদের সফ্টওয়্যারটিতে প্রায় 200 000 থেকে 300 000 বাগ দেয়। ভাগ্যক্রমে, আমাদের প্রোগ্রামের মান উন্নত করার উপায় আছে। ইউনিট পরীক্ষা, কোড পর্যালোচনা এবং সাধারণ ম্যানুয়াল টেস্টিং বাগের সংখ্যা হ্রাস করার জন্য পরিচিত known তবুও, সংখ্যাটি এখনও বেশি থাকবে।
যদি আমরা সমস্ত বাগের 95% সমাধান করতে পারি যা অবিশ্বাস্য হবে। এবং এখনও আমাদের সফ্টওয়্যারটিতে 10 000 থেকে 15 000 বাগ রয়েছে।
ভাগ্যক্রমে, যেহেতু সফ্টওয়্যারটি ব্যাপকভাবে ব্যবহৃত হয় (এবং, সুতরাং, ব্যাপকভাবে পরীক্ষিত) বাগগুলি খুঁজে পাওয়া যাচ্ছে। সুতরাং আমরা ধীরে ধীরে কম বাগ পাব। তবে, কম বাগের অর্থ এই যে বাকীগুলি খুঁজে পাওয়া আরও কঠিন - সুতরাং বাগ ফিক্সিংয়ের ক্ষেত্রে রৈখিক বক্ররেখা আশা করবেন না। শেষ কয়েকটি বাগগুলি খুঁজে পাওয়া সত্যিই জটিল এবং বেশ কয়েক বছর ধরে সনাক্ত থেকে বাঁচতে পারে (ধরে নিলে তারা কখনও পাওয়া গেছে)।
আপনিও ভুল করে ধরে মনে করছেন যে সফ্টওয়্যারটি পরিবর্তন না হলে কোনও নতুন বাগ উপস্থিত হবে না। যদি সফ্টওয়্যারটি তৃতীয় পক্ষের লাইব্রেরির উপর নির্ভর করে তবে নতুন সংস্করণগুলি কিছু বৈশিষ্ট্যগুলি ভেঙে দিতে পারে - অ্যাপ্লিকেশনটির কোডটি এখনও একই থাকলেও নতুন বাগগুলি প্রবর্তন করা। নতুন অপারেটিং সিস্টেমগুলি এমন কোনও অ্যাপ্লিকেশনও ভেঙে ফেলতে পারে যা পূর্বে পুরোপুরি কাজ করেছিল (একটি জনপ্রিয় উদাহরণের জন্য উইন্ডোজ ভিস্তা দেখুন)। সংকলক বাগ ইত্যাদি বিবেচনা করুন etc.
কোড প্রুফ সরঞ্জামগুলি বগি সফ্টওয়্যারটির সমস্যাটি সত্যই সমাধান করতে পারে কিনা তা স্পষ্ট নয়। কোনও প্রোগ্রামের জন্য থামার সমস্যাটি অবশ্যই সমাধান করা সম্ভব নয় তবে এটি প্রমাণ করা সম্ভব যে কোনও প্রোগ্রাম নির্দিষ্ট হিসাবে আচরণ করে ... তবে তারপরে কী? প্রুফ প্রোগ্রামটিতে একটি বাগ রয়েছে। স্পেসিফিকেশন নিজেই একটি বাগ আছে।
সুতরাং স্পষ্টতই, আমরা বাগের সংখ্যা ব্যাপকভাবে হ্রাস করতে পারি, তবে সত্যিই অসম্ভব যে আমরা কখনই শূন্যতে যাব।
কারণ কিছু ধারণা আছে যে আপনার করা প্রতিটি ফিক্স আরও বেশি বাগ তৈরি করে, তবে আমি এটি সত্য বলে মনে করি না।
(সামনে জোর দাও)
আপনি সঠিক. এই বক্তব্য ভুল। এখানে একটি উদাহরণ:
int main() {
int x[10];
x[10] = 8; //Buffer overflow here
return 0;
}
এখন, এই বাগটি ঠিক করা যাক:
int main() {
int x[11];
x[10] = 8; //No buffer overflow here
return 0;
}
দেখা? আমরা একটি বাগ স্থির করেছি এবং নতুন কোনও পরিচয় করিয়ে দিই নি।
তবে এটি অবশ্যই সঠিক যে প্রতিবার আপনি কোনও বাগ সংশোধন করার সময় আপনি একটি নতুন তৈরির ঝুঁকি নিচ্ছেন, যদিও এই ঝুঁকি হ্রাস করা যায় (যেমন ইউনিট পরীক্ষার মাধ্যমে)।
ধরা যাক যে আমি ঠিক করেছি প্রতি 100 টি বাগের জন্য, আমি ঘটনাক্রমে একটি নতুন প্রবর্তন করি। সুতরাং আমি যদি 10 000 বাগগুলি ঠিক করি তবে আমি 100 টি নতুন বাগ প্রবর্তন করব। এবং যদি আমি এই নতুন বাগগুলি ঠিক করি তবে আমি একটি বাগ প্রবর্তন করব। তবে কি? প্রোগ্রামটিতে এখন 999 টি কম বাগ রয়েছে, সুতরাং এটি সম্ভবত এটির চেয়ে ভাল better
এছাড়াও, বাগ সংশোধন করা নতুনগুলি প্রকাশ করতে পারে । তবে সেই বাগগুলিও ঠিক করা যায়। আপনি যদি জিনিসগুলি ঠিকঠাক করেন তবে শেষ পর্যন্ত সফ্টওয়্যারটি শুরু হওয়ার চেয়ে আরও ভাল অবস্থায় থাকবে।
আমি কয়েক শীর্ষ প্রোগ্রামার দ্বারা প্রবীণ ছিলাম যে আমি ওপিতে উল্লেখ করেছি সেই ধারণার কারণে প্রচুর বাগগুলি ঠিক করা ভাল নয় better
এই আচরণ অবহেলা। যদি কোনও বাগ থাকে এবং আপনি এটি ঠিক করতে পারেন। এটা কর. অবশ্যই নতুন যুক্ত হওয়া রোধ করার জন্য আপনার যথাসাধ্য চেষ্টা করা উচিত তবে আমি যদি প্রতি 10 গুরুতর বাগের জন্য আমি একটি ছোট বাগ প্রবর্তন করি তবে বাগ ফিক্সিং বন্ধ করার এটি বৈধ কারণ নয়। আসলে, এটি একটি ভাল করার কারণ নেই ফিক্সিং বাগ রাখা ।
আপনারা যত কম ত্রুটি সংশোধন করবেন, ভবিষ্যতে কম ত্রুটিগুলি আপনার কাছে ফিরে আসবে
আপনি যত কম ত্রুটি সংশোধন করবেন, তত বেশি ত্রুটি আপনার সফ্টওয়্যারটিতে থাকবে, আপনার ব্যবহারকারীদের বিরক্ত করছে। প্রকৃতপক্ষে, তারা "ভবিষ্যতে আপনার কাছে ফিরে আসবে না"। তারা আর ফিরে আসবে না কারণ তারা কখনই প্রথম স্থানে যায়নি। "ফিরে আসুন" ধারণাটি রিগ্রেশনগুলির সাথে সম্পর্কিত। আবার, রিগ্রেশনগুলির ঝুঁকি হ্রাস করা সম্ভব।
কিছু বাগ সংশোধন করা যায় না কারণ এগুলি এত ব্যাপকভাবে ব্যবহৃত হয়ে গেছে যে লোকেরা তাদের উপর নির্ভর করতে শুরু করে এবং বাগ সংশোধন করা সেই ব্যবহারকারীদের জন্য প্রোগ্রামটি ভেঙে দেয়। এটা হয়। যাইহোক, সে ক্ষেত্রে কী তাদের সত্যই বাগ হিসাবে বিবেচনা করা যেতে পারে?
"একটি বাগ সংশোধন করুন, একটি বাগ করুন" মানসিকতা সেই ভয়ঙ্কর মনস্টার সম্পর্কিত কোড সম্পর্কিত হতে পারে - কোডটি এতটাই অপঠনযোগ্য এবং অনিবার্য যে কেবল এটি স্পর্শ করলেই বাগ তৈরি হয়। আপনার কোড বেসে যদি কোনও দৈত্য থাকে তবে কিছু করার আগে আপনাকে প্রথমে এটি অ-মনস্টারাইফাই করতে হবে।
অবশেষে, আপনি যদি একটি ভয়ানক প্রোগ্রামার আছে, সেখানে ঝুঁকি কিছু নেই আপনি স্পর্শ নতুন বাগ তৈরি করে। এটি স্পষ্টতই সিনিয়র প্রোগ্রামারদেরকে উদ্বিগ্ন করে তুলবে। তবে, "কিছু করবেন না। কিছু স্পর্শ করবেন না। এমনকি শ্বাসও নেবেন না" বলে। একটি স্বাস্থ্যকর কাজের পরিবেশ তৈরি করার সম্ভবত সঠিক উপায় নয়। পড়াশুনা আরও ভাল।
উপসংহার:
- এমন সফ্টওয়্যার যা প্রচুর নতুন বৈশিষ্ট্য পেতে থাকে তবে কোনও বাগ ফিক্স অনিবার্যভাবে চুষবে না।
- যে সফ্টওয়্যারটি মাঝারি সংখ্যক নতুন বৈশিষ্ট্য পেয়েছে তবে এর বাগগুলি স্থির হয়ে যায় সেগুলি ব্যবহারের যোগ্য হওয়ার আরও ভাল সম্ভাবনা রয়েছে।
- যাঁরা খুব কম বাগ পাওয়ার চেষ্টা করেন তাদের কাছে (গড়) কম ব্যাগ রয়েছে যাঁরা চিন্তা করেন না।
- কোনও প্রোগ্রাম শেষ পর্যন্ত বাগ-মুক্ত হয়ে উঠা আশা করা যুক্তিসঙ্গত নয়।
- সিনিয়র প্রোগ্রামারগুলি অগত্যা সক্ষম নয়।
- আপনার বাগগুলি ঠিক করুন।
- আপনার সফ্টওয়্যারটির মান উন্নত করার পদ্ধতিগুলি গ্রহণ করুন।